선언적 클러스터 구성
GitOps CLI를 사용하여 OpenShift GitOps를 사용하고 기본 및 코드 모드에서 애플리케이션을 생성 및 동기화하여 클러스터 구성으로 OpenShift 클러스터 구성
초록
1장. 클러스터 구성으로 애플리케이션을 배포하여 OpenShift 클러스터 구성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift GitOps를 사용하면 Argo CD를 구성하여 Git 디렉터리의 콘텐츠를 클러스터의 사용자 지정 구성이 포함된 애플리케이션과 반복적으로 동기화할 수 있습니다.
1.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 관리자로 OpenShift Container Platform 클러스터에 로그인했습니다.
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
1.2. Argo CD 인스턴스를 사용하여 클러스터 범위 리소스 관리 링크 복사링크가 클립보드에 복사되었습니다!
별도의 사용 사례가 필요한 경우를 제외하고 Argo CD 인스턴스의 권한을 클러스터 범위로 간주하지 마십시오. cluster-admin 권한이 있는 사용자만 인스턴스를 관리해야 합니다. 클러스터 범위 인스턴스의 네임스페이스에 액세스할 수 있는 모든 사용자는 클러스터에 대한 권한을 높여 클러스터 관리자가 될 수 있습니다.
클러스터 범위 리소스를 관리하려면 Red Hat OpenShift GitOps Operator의 기존 Subscription 오브젝트를 업데이트하고 Argo CD 인스턴스의 네임스페이스를 spec 섹션의 ARGOCD_CLUSTER_CONFIG_NAMESPACES 환경 변수에 추가합니다.
프로세스
- 웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator → Red Hat OpenShift GitOps → 서브스크립션 으로 이동합니다.
- 작업 목록을 클릭한 다음 서브스크립션 편집을 클릭합니다.
openshift-gitops-operator Subscription 세부 정보 페이지의 YAML 탭에서 Argo CD 인스턴스의 네임스페이스를
spec섹션의ARGOCD_CLUSTER_CONFIG_NAMESPACES환경 변수에 추가하여서브스크립션YAML 파일을 편집합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 저장 및 다시 로드 를 클릭합니다.
클러스터 범위 리소스를 관리하기 위해 Argo CD 인스턴스가 클러스터 역할로 구성되었는지 확인하려면 다음 단계를 수행합니다.
- 사용자 관리 → 역할로 이동하여 필터 목록에서 클러스터 전체 역할을 선택합니다.
이름으로 검색 필드를 사용하여
argocd-application-controller를 검색합니다.역할 페이지에는 생성된 클러스터 역할이 표시됩니다.
작은 정보또는 OpenShift CLI에서 다음 명령을 실행합니다.
oc auth can-i create oauth -n openshift-gitops --as system:serviceaccount:openshift-gitops:openshift-gitops-argocd-application-controller
oc auth can-i create oauth -n openshift-gitops --as system:serviceaccount:openshift-gitops:openshift-gitops-argocd-application-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력
yes는 클러스터 범위 리소스를 관리하기 위해 Argo 인스턴스가 클러스터 역할로 구성되어 있는지 확인합니다. 필요에 따라 구성을 확인하고 필요한 단계를 수행합니다.
1.3. Argo CD 인스턴스의 기본 권한 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Argo CD 인스턴스에는 다음과 같은 권한이 있습니다.
-
Argo CD 인스턴스에는 배포된 네임스페이스에서만 리소스를 관리할 수 있는
admin권한이 있습니다. 예를 들어 foo 네임스페이스에 배포된 Argo CD 인스턴스에는 해당 네임스페이스에 대한 리소스만 관리할 수 있는admin권한이 있습니다. Argo CD에는 리소스가 제대로 작동하려면 클러스터 전체
읽기권한이 필요하므로 Argo CD에는 다음과 같은 클러스터 범위 권한이 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Argo CD가 실행 중인
argocd-server및argocd-application-controller구성 요소에서 사용하는 클러스터 역할을 편집하여 Argo CD에서 관리하려는 네임스페이스와 리소스로만쓰기권한이 제한됩니다.oc edit clusterrole argocd-server oc edit clusterrole argocd-application-controller
$ oc edit clusterrole argocd-server $ oc edit clusterrole argocd-application-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 클러스터 수준에서 Argo CD 인스턴스 실행 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift GitOps Operator에서 설치한 기본 Argo CD 인스턴스 및 관련 컨트롤러는 이제 간단한 구성 토글을 설정하여 클러스터의 인프라 노드에서 실행할 수 있습니다.
프로세스
기존 노드에 레이블을 지정합니다.
oc label node <node-name> node-role.kubernetes.io/infra=""
$ oc label node <node-name> node-role.kubernetes.io/infra=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 필요한 경우 테인트를 적용하고 인프라 노드에 워크로드를 분리하고 다른 워크로드가 이러한 노드에서 예약되지 않도록 할 수도 있습니다.
oc adm taint nodes -l node-role.kubernetes.io/infra \ infra=reserved:NoSchedule infra=reserved:NoExecute
$ oc adm taint nodes -l node-role.kubernetes.io/infra \ infra=reserved:NoSchedule infra=reserved:NoExecuteCopy to Clipboard Copied! Toggle word wrap Toggle overflow GitOpsService사용자 정의 리소스에runOnInfra토글을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 테인트가 노드에 추가된 경우
GitOpsService사용자 정의 리소스에허용 오차를 추가합니다.예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
콘솔 UI에서 Pod → Pod 세부 정보를 확인하여
openshift-gitops네임스페이스의 워크로드가 인프라 노드에 예약되었는지 확인합니다.
기본 Argo CD 사용자 정의 리소스에 수동으로 추가된 nodeSelector 및 허용 오차 는 GitOpsService 사용자 정의 리소스의 토글 및 허용 오차 로 덮어씁니다.
1.5. Argo CD 대시보드를 사용하여 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
Argo CD는 애플리케이션을 만들 수 있는 대시보드를 제공합니다.
이 샘플 워크플로에서는 Argo CD를 구성하여 cluster 디렉터리의 콘텐츠를 cluster-configs 애플리케이션과 반복적으로 동기화하는 프로세스를 보여줍니다. 디렉터리는 웹 콘솔의
메뉴에 있는 Red Hat 개발자 블로그에 링크를 추가하고 클러스터에서 Spring - petclinic 네임스페이스를 정의하는 OpenShift Container Platform 웹 콘솔 클러스터 구성을 정의합니다.
사전 요구 사항
- 관리자로 OpenShift Container Platform 클러스터에 로그인했습니다.
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
- Argo CD 인스턴스에 로그인했습니다.
프로세스
- Argo CD 대시보드에서 새 APP를 클릭하여 새 Argo CD 애플리케이션을 추가합니다.
이 워크플로의 경우 다음 구성을 사용하여 cluster-configs 애플리케이션을 생성합니다.
- 애플리케이션 이름
-
cluster-configs - 프로젝트
-
default - 동기화 정책
-
Manual - 리포지터리 URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started - 버전
-
HEAD - 경로
-
cluster - 대상
-
https://kubernetes.default.svc - 네임스페이스
-
spring-petclinic - 디렉토리 반복
-
checked
- 만들기 를 클릭하여 애플리케이션을 생성합니다.
- 웹 콘솔의 관리자 화면을 열고 관리 → 네임스페이스를 확장합니다.
-
네임스페이스를 검색하고 선택한 다음 레이블 필드에
argocd.argoproj.io/managed-by=openshift-gitops를 입력하여openshift-gitops네임스페이스의 Argo CD 인스턴스가 네임스페이스를 관리할 수 있도록 합니다.
1.6. oc 툴을 사용하여 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
oc 툴을 사용하여 터미널에서 Argo CD 애플리케이션을 생성할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
- Argo CD 인스턴스에 로그인했습니다.
프로세스
샘플 애플리케이션을 다운로드합니다.
git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
$ git clone git@github.com:redhat-developer/openshift-gitops-getting-started.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션을 생성합니다.
oc create -f openshift-gitops-getting-started/argo/app.yaml
$ oc create -f openshift-gitops-getting-started/argo/app.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get명령을 실행하여 생성된 애플리케이션을 검토합니다.oc get application -n openshift-gitops
$ oc get application -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-gitops네임스페이스의 Argo CD 인스턴스에서 관리할 수 있도록 애플리케이션이 배포되는 네임스페이스에 레이블을 추가합니다.oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. GitOps CLI를 사용하여 기본 모드에서 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
GitOps argocd CLI를 사용하여 기본 모드에서 애플리케이션을 생성할 수 있습니다.
이 샘플 워크플로에서는 Argo CD를 구성하여 cluster 디렉터리의 콘텐츠를 cluster-configs 애플리케이션과 반복적으로 동기화하는 프로세스를 보여줍니다. 디렉터리는 OpenShift Container Platform 클러스터 구성과 클러스터의 spring-petclinic 네임스페이스를 정의합니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
-
OpenShift CLI(
oc)가 설치되어 있습니다. -
Red Hat OpenShift GitOps
argocdCLI를 설치했습니다. - Argo CD 인스턴스에 로그인했습니다.
프로세스
Argo CD 서버의
관리자계정 암호를 가져옵니다.ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)$ ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Argo CD 서버 URL을 가져옵니다.
SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')$ SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin계정 암호를 사용하여 Argo CD 서버에 로그인하고 작은따옴표로 전달합니다.중요암호를 작은따옴표로 포함하면 쉘에 의해
$와 같은 특수 문자가 잘못 해석되지 않습니다. 항상 작은 따옴표를 사용하여 암호의 리터럴 값을 묶습니다.argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}$ argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예
argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
$ argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 애플리케이션을 나열하여 기본 모드에서
argocd명령을 실행할 수 있는지 확인합니다.argocd app list
$ argocd app listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 다음 헤더를 사용하여 기존 애플리케이션이 나열됩니다.
샘플 출력
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGETCopy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 모드에서 애플리케이션을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshif-gitopsArgo CD 인스턴스에서 관리할spring-petclinic대상 네임스페이스에 레이블을 지정합니다.oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
$ oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용 가능한 애플리케이션을 나열하여 애플리케이션이 성공적으로 생성되었는지 확인합니다.
argocd app list
$ argocd app listCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-configsArgo CD 애플리케이션의 상태가Healthy이지만none동기화 정책으로 인해 자동으로 동기화되지 않아OutOfSync상태가 유지됩니다.
1.8. GitOps CLI를 사용하여 코어 모드에서 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
GitOps argocd CLI를 사용하여 코어 모드에서 애플리케이션을 생성할 수 있습니다.
이 샘플 워크플로에서는 Argo CD를 구성하여 cluster 디렉터리의 콘텐츠를 cluster-configs 애플리케이션과 반복적으로 동기화하는 프로세스를 보여줍니다. 디렉터리는 OpenShift Container Platform 클러스터 구성과 클러스터의 spring-petclinic 네임스페이스를 정의합니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
-
OpenShift CLI(
oc)가 설치되어 있습니다. -
Red Hat OpenShift GitOps
argocdCLI를 설치했습니다.
프로세스
ocCLI 툴을 사용하여 OpenShift Container Platform 클러스터에 로그인합니다.oc login -u <username> -p <password> <server_url>
$ oc login -u <username> -p <password> <server_url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예
oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
$ oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow kubeconfig파일에서 컨텍스트가 올바르게 설정되었는지 확인합니다.oc config current-context
$ oc config current-contextCopy to Clipboard Copied! Toggle word wrap Toggle overflow 현재 컨텍스트의 기본 네임스페이스를
openshift-gitops:로 설정합니다.oc config set-context --current --namespace openshift-gitops
$ oc config set-context --current --namespace openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Argo CD 구성 요소 이름을 덮어쓰려면 다음 환경 변수를 설정합니다.
export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
$ export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 애플리케이션을 나열하여
코어모드에서argocd명령을 실행할 수 있는지 확인합니다.argocd app list --core
$ argocd app list --coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 다음 헤더를 사용하여 기존 애플리케이션이 나열됩니다.
샘플 출력
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGETCopy to Clipboard Copied! Toggle word wrap Toggle overflow 코어모드로 애플리케이션을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshif-gitopsArgo CD 인스턴스에서 관리할spring-petclinic대상 네임스페이스에 레이블을 지정합니다.oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
$ oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용 가능한 애플리케이션을 나열하여 애플리케이션이 성공적으로 생성되었는지 확인합니다.
argocd app list --core
$ argocd app list --coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-configsArgo CD 애플리케이션의 상태가Healthy이지만none동기화 정책으로 인해 자동으로 동기화되지 않아OutOfSync상태가 유지됩니다.
1.9. Git 리포지토리와 애플리케이션 동기화 링크 복사링크가 클립보드에 복사되었습니다!
Argo CD의 동기화 정책을 수정하여 Git 리포지토리와 애플리케이션을 동기화할 수 있습니다. 정책 수정을 통해 Git 리포지토리의 클러스터 구성 변경 사항을 클러스터에 자동으로 적용합니다.
프로세스
- Argo CD 대시보드에서 cluster-configs Argo CD 애플리케이션은 Missing 및 OutOfSync 상태입니다. 애플리케이션이 수동 동기화 정책으로 구성되었으므로 Argo CD는 자동으로 동기화되지 않습니다.
- cluster-configs 타일에서 SYNC 를 클릭하고 변경 사항을 검토한 다음 SYNCHRONIZE 를 클릭합니다. Argo CD는 Git 리포지토리의 모든 변경 사항을 자동으로 감지합니다. 구성이 변경되면 Argo CD는 cluster-configs의 상태를 OutOfSync로 변경합니다. Argo CD의 동기화 정책을 수정하여 Git 리포지토리에서 클러스터에 변경 사항을 자동으로 적용할 수 있습니다.
- cluster-configs Argo CD 애플리케이션이 이제 Healthy 및 Synced 상태가 됩니다. cluster-configs 타일을 클릭하여 동기화된 리소스의 세부 정보와 클러스터의 상태를 확인합니다.
-
OpenShift Container Platform 웹 콘솔로 이동하여
를 클릭하여 Red Hat 개발자 블로그(Kubernetes )에 대한 링크가 있는지 확인합니다.
프로젝트 페이지로 이동하여
spring-petclinic네임스페이스를 검색하여 클러스터에 추가되었는지 확인합니다.클러스터 구성이 클러스터에 성공적으로 동기화됩니다.
1.10. GitOps CLI를 사용하여 기본 모드에서 애플리케이션 동기화 링크 복사링크가 클립보드에 복사되었습니다!
GitOps argocd CLI를 사용하여 기본 모드에서 애플리케이션을 동기화할 수 있습니다.
이 샘플 워크플로에서는 Argo CD를 구성하여 cluster 디렉터리의 콘텐츠를 cluster-configs 애플리케이션과 반복적으로 동기화하는 프로세스를 보여줍니다. 디렉터리는 OpenShift Container Platform 클러스터 구성과 클러스터의 spring-petclinic 네임스페이스를 정의합니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
- Argo CD 인스턴스에 로그인했습니다.
-
OpenShift CLI(
oc)가 설치되어 있습니다. -
Red Hat OpenShift GitOps
argocdCLI를 설치했습니다.
프로세스
Argo CD 서버의
관리자계정 암호를 가져옵니다.ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)$ ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Argo CD 서버 URL을 가져옵니다.
SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')$ SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin계정 암호를 사용하여 Argo CD 서버에 로그인하고 작은따옴표로 전달합니다.중요암호를 작은따옴표로 포함하면 쉘에 의해
$와 같은 특수 문자가 잘못 해석되지 않습니다. 항상 작은 따옴표를 사용하여 암호의 리터럴 값을 묶습니다.argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}$ argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예
argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
$ argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션이
none동기화 정책으로 구성되므로 동기화 작업을 수동으로 트리거해야 합니다.argocd app sync openshift-gitops/app-cluster-configs
$ argocd app sync openshift-gitops/app-cluster-configsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션을 나열하여 애플리케이션에
Healthy및Synced상태가 있는지 확인합니다.argocd app list
$ argocd app listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.11. GitOps CLI를 사용하여 코어 모드에서 애플리케이션 동기화 링크 복사링크가 클립보드에 복사되었습니다!
GitOps argocd CLI를 사용하여 코어 모드에서 애플리케이션을 동기화할 수 있습니다.
이 샘플 워크플로에서는 Argo CD를 구성하여 cluster 디렉터리의 콘텐츠를 cluster-configs 애플리케이션과 반복적으로 동기화하는 프로세스를 보여줍니다. 디렉터리는 OpenShift Container Platform 클러스터 구성과 클러스터의 spring-petclinic 네임스페이스를 정의합니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
-
OpenShift CLI(
oc)가 설치되어 있습니다. -
Red Hat OpenShift GitOps
argocdCLI를 설치했습니다.
프로세스
ocCLI 툴을 사용하여 OpenShift Container Platform 클러스터에 로그인합니다.oc login -u <username> -p <password> <server_url>
$ oc login -u <username> -p <password> <server_url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예
oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
$ oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow kubeconfig파일에서 컨텍스트가 올바르게 설정되었는지 확인합니다.oc config current-context
$ oc config current-contextCopy to Clipboard Copied! Toggle word wrap Toggle overflow 현재 컨텍스트의 기본 네임스페이스를
openshift-gitops:로 설정합니다.oc config set-context --current --namespace openshift-gitops
$ oc config set-context --current --namespace openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Argo CD 구성 요소 이름을 덮어쓰려면 다음 환경 변수를 설정합니다.
export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
$ export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션이
none동기화 정책으로 구성되므로 동기화 작업을 수동으로 트리거해야 합니다.argocd app sync --core openshift-gitops/app-cluster-configs
$ argocd app sync --core openshift-gitops/app-cluster-configsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션을 나열하여 애플리케이션에
Healthy및Synced상태가 있는지 확인합니다.argocd app list --core
$ argocd app list --coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.12. 클러스터 구성에 대한 기본 제공 권한 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Argo CD 인스턴스에는 클러스터 Operator, 선택적 OLM Operator 및 사용자 관리와 같은 특정 클러스터 범위 리소스를 관리할 수 있는 권한이 있습니다.
-
Argo CD에는
cluster-admin권한이 없습니다. - GitOps Operator에서 관리하는 모든 Argo CD 인스턴스에 바인딩된 권한을 확장할 수 있습니다. 그러나 Operator에서 초기 상태로 다시 조정할 수 있으므로 GitOps Operator에서 생성한 역할 또는 클러스터 역할과 같은 권한 리소스를 수정해서는 안 됩니다. 대신 전용 역할 및 클러스터 역할 오브젝트를 생성하여 애플리케이션 컨트롤러에서 사용하는 적절한 서비스 계정에 바인딩합니다.
Argo CD 인스턴스에 대한 권한:
| Resources | 설명 |
|---|---|
| 리소스 그룹 | 사용자 또는 관리자 구성 |
|
| OLM에서 관리하는 선택적 Operator |
|
| 그룹, 사용자 및 해당 권한 |
|
| 클러스터 전체 빌드 구성, 레지스트리 구성 및 스케줄러 정책을 구성하는 데 사용되는 CVO에서 관리하는 컨트롤 플레인 Operator |
|
| 스토리지 |
|
| 콘솔 사용자 지정 |
1.13. 클러스터 구성에 대한 권한 추가 링크 복사링크가 클립보드에 복사되었습니다!
Argo CD 인스턴스에 대한 권한을 부여하여 클러스터 구성을 관리할 수 있습니다. 추가 권한이 있는 클러스터 역할을 생성한 다음 새 클러스터 역할 바인딩을 생성하여 클러스터 역할을 서비스 계정과 연결합니다.
사전 요구 사항
-
cluster-admin권한이 있고 웹 콘솔에 로그인한 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. - OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
프로세스
웹 콘솔에서 사용자 관리 → 역할 → 역할 생성 을 선택합니다. 다음
ClusterRoleYAML 템플릿을 사용하여 추가 권한을 지정하는 규칙을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 생성 을 클릭하여 클러스터 역할을 추가합니다.
- 클러스터 역할 바인딩을 생성하려면 사용자 관리 → 역할 바인딩 → 바인딩 생성 을 선택합니다.
- 프로젝트 목록에서 모든 프로젝트를 선택합니다.
- 바인딩 생성을 클릭합니다.
- 바인딩 유형을 Cluster-wide 역할 바인딩(ClusterRoleBinding) 으로 선택합니다.
- RoleBinding 이름의 고유 값을 입력합니다.
- 드롭다운 목록에서 새로 생성된 클러스터 역할 또는 기존 클러스터 역할을 선택합니다.
주체 를 ServiceAccount 로 선택하고 주체 네임스페이스 및 이름을 제공합니다.
-
subject namespace:
openshift-gitops 제목 이름:
openshift-gitops-argocd-application-controller참고주체 이름 값은 클러스터 역할 및 클러스터 역할 바인딩을 생성하는 GitOps 컨트롤 플레인 구성 요소에 따라 다릅니다.
-
subject namespace:
생성을 클릭합니다.
ClusterRoleBinding오브젝트의 YAML 파일은 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.14. Red Hat OpenShift GitOps를 사용하여 OLM Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 구성이 포함된 Red Hat OpenShift GitOps는 특정 클러스터 범위 리소스를 관리하고 클러스터 Operator 또는 네임스페이스 범위 OLM Operator를 설치합니다.
클러스터 관리자는 Tekton과 같은 OLM Operator를 설치해야 하는 경우를 고려하십시오. OpenShift Container Platform 웹 콘솔을 사용하여 Tekton Operator 또는 OpenShift CLI를 수동으로 설치하여 클러스터에 Tekton 서브스크립션 및 Tekton Operator group을 수동으로 설치합니다.
Red Hat OpenShift GitOps는 Kubernetes 리소스를 Git 리포지토리에 배치합니다. 클러스터 관리자는 Red Hat OpenShift GitOps를 사용하여 수동 절차 없이 다른 OLM Operator 설치를 관리하고 자동화합니다. 예를 들어 Red Hat OpenShift GitOps를 사용하여 Git 리포지토리에 Tekton 서브스크립션을 배치하면 Red Hat OpenShift GitOps는 Git 리포지토리에서 이 Tekton 서브스크립션을 자동으로 가져와서 클러스터에 Tekton Operator를 설치합니다.
1.14.1. 클러스터 범위 Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
OLM(Operator Lifecycle Manager)은 클러스터 범위 Operator의 openshift-operators 네임스페이스에서 기본 global-operators Operator 그룹을 사용합니다. 따라서 Gitops 리포지토리에서 OperatorGroup 리소스를 관리할 필요가 없습니다. 그러나 네임스페이스 범위의 Operator의 경우 해당 네임스페이스에서 OperatorGroup 리소스를 관리해야 합니다.
클러스터 범위 Operator를 설치하려면 필요한 Operator의 서브스크립션 리소스를 생성하고 Git 리포지토리에 배치합니다.
예: Grafana Operator 서브스크립션
1.14.2. namepace-scoped Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
네임스페이스 범위의 Operator를 설치하려면 Git 리포지토리에 필요한 Operator의 서브스크립션 및 OperatorGroup 리소스를 생성하고 배치합니다.
예: Ansible Automation Platform Resource Operator
Red Hat OpenShift GitOps를 사용하여 여러 Operator를 배포할 때 해당 네임스페이스에 단일 Operator 그룹만 생성해야 합니다. 단일 네임스페이스에 두 개 이상의 Operator group이 있는 경우 해당 네임스페이스에서 생성된 모든 CSV는 TooManyOperatorGroups 이유와 함께 실패 상태로 전환됩니다. 해당 네임스페이스의 Operator 그룹 수가 1에 도달하면 이전의 모든 실패 상태 CSV가 pending 상태로 전환됩니다. Operator 설치를 완료하려면 보류 중인 설치 계획을 수동으로 승인해야 합니다.
2장. 클러스터 범위 인스턴스에 대한 사용자 정의 클러스터 역할을 생성하여 권한 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
기본 클러스터 범위 인스턴스의 경우 Red Hat OpenShift GitOps Operator는 특정 클러스터 범위 리소스를 관리하기 위한 추가 권한을 부여합니다. 결과적으로 클러스터 관리자는 Argo CD를 클러스터 범위 인스턴스로 배포할 때 Operator는 GitOps 컨트롤 플레인 구성 요소에 대한 추가 클러스터 역할 및 클러스터 역할 바인딩을 생성합니다. 이러한 클러스터 역할 및 클러스터 역할 바인딩은 Argo CD가 클러스터 수준에서 작동하는 데 필요한 추가 권한을 제공합니다.
클러스터 범위 인스턴스에 모든 Operator 지원 권한이 있고 클러스터 전체 리소스에 대한 권한을 추가하거나 제거하도록 선택하는 경우 먼저 클러스터 범위 인스턴스의 기본 클러스터 역할 생성을 비활성화해야 합니다. 그런 다음 다음 클러스터 범위 인스턴스에 대한 권한을 사용자 지정할 수 있습니다.
- 기본 ArgoCD 인스턴스 (기본 클러스터 범위 인스턴스)
- 사용자 정의 클러스터 범위 Argo CD 인스턴스
이 가이드에서는 사용자 정의 클러스터 범위 Argo CD 인스턴스를 생성하고, 클러스터의 사용자 지정 구성이 포함된 정의된 네임스페이스에 Argo CD 애플리케이션을 배포하고, 클러스터 범위의 인스턴스의 기본 클러스터 역할 생성을 비활성화하고, GitOps 컨트롤 플레인 구성 요소에 대한 새 클러스터 역할 및 클러스터 역할 바인딩을 생성하여 사용자 정의 클러스터 범위 인스턴스에 대한 권한을 사용자 지정하는 데 필요한 예제를 제공합니다.
개발자로서 Argo CD 애플리케이션을 생성하고 클러스터 전체 리소스를 배포하는 경우 클러스터 관리자가 필요한 권한을 부여해야 합니다.
그러지 않으면 Argo CD 조정 후 다음 예와 유사한 애플리케이션의 상태 필드에 인증 오류 메시지가 표시됩니다.
인증 오류 메시지의 예
persistentvolumes is forbidden: User "system:serviceaccount:gitops-demo:argocd-argocd-application-controller" cannot create resource "persistentvolumes" in API group "" at the cluster scope.
persistentvolumes is forbidden: User "system:serviceaccount:gitops-demo:argocd-argocd-application-controller" cannot create resource "persistentvolumes" in API group "" at the cluster scope.
2.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps 1.13.0 이상을 설치했습니다.
-
OpenShift CLI(
oc)가 설치되어 있습니다. -
Red Hat OpenShift GitOps
argocdCLI를 설치했습니다. -
정의된 네임스페이스에 클러스터 범위의 Argo CD 인스턴스가 설치되어 있습니다. 예를 들어 Spring
-petclinic네임스페이스입니다. 사용자 정의 클러스터 범위 인스턴스가 다음 구성 요소에 대한 클러스터 역할 및 클러스터 역할 바인딩으로 구성되었는지 확인했습니다.
- Argo CD 애플리케이션 컨트롤러
- Argo CD 서버
- Argo CD ApplicationSet Controller (ApplicationSet Controller 제공)
spring-petclinic네임스페이스에customclusterrole경로를 사용하여cluster-configsArgo CD 애플리케이션을 배포하고test-gitops-ns네임스페이스 및test-gitops-pv영구 볼륨 리소스를 생성했습니다.참고cluster-configsArgo CD 애플리케이션은 다음 매개변수가 설정된 사용자 정의 클러스터 범위 인스턴스에서 관리해야 합니다.-
true로 설정된selfHeal필드 값 -
syncPolicy필드 값이automated로 설정 -
app.kubernetes.io/part-of=argocd값으로 설정된 Label 필드 -
정의된 네임스페이스의 Argo CD 인스턴스가 네임스페이스를 관리할 수 있도록
argocd.argoproj.io/managed-by=<user_defined_namespace> 값으로 설정된 Label 필드 -
app.kubernetes.io/name=<user_argocd_instance> 값으로 설정된 라벨 필드
-
2.2. 클러스터 범위 인스턴스의 기본 클러스터 역할 생성 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
필요에 따라 클러스터 전체 리소스에 대한 권한을 추가하거나 제거하려면 Argo CD 사용자 정의 리소스(CR)의 YAML 파일을 편집하여 클러스터 범위 인스턴스의 기본 클러스터 역할 생성을 비활성화해야 합니다.
프로세스
Argo CD CR에서
.spec.defaultClusterScopedRoleDisabled필드의 값을true로 설정합니다.Argo CD CR의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
argocd.argoproj.io/example configured
argocd.argoproj.io/example configuredCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Red Hat OpenShift GitOps Operator가 GitOps 컨트롤 플레인 구성 요소의 기본 클러스터 역할 및 클러스터 역할 바인딩을 삭제했는지 확인합니다.
oc get ClusterRoles/<argocd_name>-<argocd_namespace>-<control_plane_component>
$ oc get ClusterRoles/<argocd_name>-<argocd_namespace>-<control_plane_component>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ClusterRoleBindings/<argocd_name>-<argocd_namespace>-<control_plane_component>
$ oc get ClusterRoleBindings/<argocd_name>-<argocd_namespace>-<control_plane_component>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
No resources found
No resources foundCopy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터 범위 인스턴스의 기본 클러스터 역할 및 클러스터 역할 바인딩이 생성되지 않습니다. 클러스터 관리자는 GitOps 컨트롤 플레인 구성 요소에 대한 새 클러스터 역할 및 클러스터 역할 바인딩을 생성하여 클러스터 범위 인스턴스에 대한 권한을 생성하고 사용자 지정할 수 있습니다.
2.3. 클러스터 범위 인스턴스에 대한 권한 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 클러스터 범위 인스턴스에 대한 권한을 사용자 지정하려면 GitOps 컨트롤 플레인 구성 요소에 대한 새 클러스터 역할 및 클러스터 역할 바인딩을 생성해야 합니다.
예를 들어 다음 명령은 사용자 정의 클러스터 범위 인스턴스에만 중점을 둡니다.
프로세스
- 웹 콘솔의 관리자 화면을 열고 사용자 관리 → 역할 → 역할 생성 으로 이동합니다.
다음
ClusterRoleYAML 템플릿을 사용하여 추가 권한을 지정하는 규칙을 추가합니다.클러스터 역할 YAML 템플릿의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 생성 을 클릭하여 클러스터 역할을 추가합니다.
다음 단계를 수행하여 권한을 사용자 지정하는 컨트롤 플레인 구성 요소에서 사용하는 서비스 계정을 찾습니다.
- 워크로드 → Pod 로 이동합니다.
- 프로젝트 목록에서 사용자 정의 클러스터 범위 인스턴스가 설치된 프로젝트를 선택합니다.
- 컨트롤 플레인 구성 요소의 Pod를 클릭하고 YAML 탭으로 이동합니다.
-
spec.ServiceAccount필드를 찾아 서비스 계정을 기록해 둡니다.
- 사용자 관리 → RoleBindings → 바인딩 생성 으로 이동합니다.
- 바인딩 생성을 클릭합니다.
- 바인딩 유형을 Cluster-wide 역할 바인딩(ClusterRoleBinding) 으로 선택합니다.
- <argocd_ name>-<argocd_namespace>-<control_plane_component> 이름 지정 규칙에 따라 RoleBinding 이름의 고유 값을 입력합니다.
- 역할 이름의 드롭다운 목록에서 새로 생성된 클러스터 역할을 선택합니다.
주체 를 ServiceAccount 로 선택하고 주체 네임스페이스 및 이름을 제공합니다.
-
subject namespace:
spring-petclinic 제목 이름:
example-argocd-application-controller참고주체 이름 의 경우 구성한 값이 권한을 사용자 지정하는 컨트롤 플레인 구성 요소의
spec.ServiceAccount필드 값과 같은지 확인합니다.
-
subject namespace:
생성을 클릭합니다.
컨트롤 플레인 구성 요소의 서비스 계정 및 네임스페이스에 필요한 권한이 생성되어 있습니다.
ClusterRoleBinding오브젝트의 YAML 파일은 다음 예와 유사합니다.클러스터 역할 바인딩의 YAML 파일의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3장. 집계된 클러스터 역할을 생성하여 권한 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
Argo CD 애플리케이션 컨트롤러의 기본 클러스터 역할에는 특정 하드 코딩된 권한 세트가 있습니다. Red Hat OpenShift GitOps Operator는 이 클러스터 역할을 관리하므로 수정할 수 없습니다. 클러스터 관리자는 다음 방법 중 하나를 사용하여 권한을 사용자 지정할 수 있습니다.
3.1. 집계된 클러스터 역할 링크 복사링크가 클립보드에 복사되었습니다!
집계된 클러스터 역할을 사용하면 새 클러스터 역할을 처음부터 생성하여 권한을 정의할 필요가 없습니다. 대신 여러 클러스터 역할을 단일 클러스터 역할에 결합할 수 있습니다.
Red Hat OpenShift GitOps 1.14 이상에서는 클러스터 관리자는 집계된 클러스터 역할을 사용하고 사용자가 Argo CD 애플리케이션 컨트롤러에 대한 사용자 정의 권한을 쉽게 추가할 수 있습니다.
- 클러스터 범위 Argo CD 인스턴스의 Argo CD 애플리케이션 컨트롤러 구성 요소에 대해서만 집계된 클러스터 역할을 생성할 수 있습니다.
-
Argo CD CR(사용자 정의 리소스)에서
aggregatedClusterRoles필드를 삭제해도 사용자 정의 클러스터 역할이 삭제되지 않습니다. CLI 또는 UI를 사용하여 사용자 정의 클러스터 역할을 수동으로 삭제해야 합니다.
3.2. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 집계된 클러스터 역할을 이해하고 있습니다.
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps를 설치했습니다.
-
OpenShift CLI(
oc)가 설치되어 있습니다. -
Red Hat OpenShift GitOps
argocdCLI를 설치했습니다. - 정의된 네임스페이스에 클러스터 범위의 Argo CD 인스턴스가 설치되어 있습니다.
사용자 정의 클러스터 범위 인스턴스가 다음 구성 요소에 대한 클러스터 역할 및 클러스터 역할 바인딩으로 구성되었는지 확인했습니다.
- Argo CD 애플리케이션 컨트롤러
- Argo CD 서버
- Argo CD ApplicationSet Controller (ApplicationSet Controller가 생성되는 경우)
- 클러스터 범위 인스턴스 의 기본 클러스터 역할 생성을 비활성화 했습니다.
3.3. 집계된 클러스터 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
집계된 클러스터 역할을 생성하는 프로세스는 다음 절차로 구성됩니다.
- 집계된 클러스터 역할 생성 활성화
- 사용자 정의 클러스터 역할 생성 및 애플리케이션 컨트롤러에 대한 사용자 정의 권한 구성
3.3.1. 집계된 클러스터 역할 생성 활성화 링크 복사링크가 클립보드에 복사되었습니다!
Argo CD 사용자 정의 리소스(CR)에서 .spec.aggregatedClusterRoles 필드의 값을 true 로 설정하여 집계된 클러스터 역할 생성을 활성화할 수 있습니다. 집계된 클러스터 역할 생성을 활성화하면 {gitops} Operator는 다음 작업을 수행합니다.
-
기본적으로 사전 정의된
aggregationRule필드를 사용하여 <argocd_name>-<argocd_namespace>-argocd-application-controller집계 클러스터 역할을 생성합니다. - 해당 클러스터 역할 바인딩을 생성하고 관리합니다.
-
애플리케이션 컨트롤러의
보기및관리자역할을 생성하여 집계된 클러스터 역할에 사용자 정의 권한을 추가합니다.
3.3.2. 사용자 정의 클러스터 역할 생성 및 사용자 정의 권한 구성 링크 복사링크가 클립보드에 복사되었습니다!
사용자 정의 권한을 < argocd_name>-<argocd_namespace>-argocd-application-controller-admin 클러스터 역할 및 집계된 클러스터 역할로 구성하려면 하나 이상의 사용자 정의 클러스터 역할을 생성한 다음 애플리케이션 컨트롤러에 대한 사용자 정의 권한을 구성해야 합니다.
-
집계된 클러스터 역할은 <
argocd_name>-<argocd_namespace>-argocd-application-controller-admin및 <argocd_name>-<argocd_namespace>-argocd-application-controller-view클러스터 역할의 권한을 상속합니다. -
<
argocd_name>-<argocd_namespace>-argocd-application-controller-admin클러스터 역할은 사용자 정의 클러스터 역할의 권한을 상속합니다.
3.4. 집계된 클러스터 역할 생성 활성화 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 범위의 Argo CD 애플리케이션 컨트롤러 구성 요소에 대해 집계된 클러스터 역할을 생성하려면 Argo CD 사용자 정의 리소스(CR)의 YAML 파일을 편집하여 해당 필드를 구성해야 합니다.
프로세스
Argo CD CR에서
.spec.aggregatedClusterRoles필드의 값을true로 설정합니다.Argo CD CR의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
argocd.argoproj.io/example configured
argocd.argoproj.io/example configuredCopy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터 범위의 Argo CD 인스턴스의
Status필드가Phase: Available로 표시되는지 확인합니다. 다음 명령을 실행하여 사용할 수 있습니다.oc describe argocd.argoproj.io/example -n spring-petclinic
$ oc describe argocd.argoproj.io/example -n spring-petclinicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Available상태는 클러스터 범위의 Argo CD 인스턴스가 정상이고 사용 가능함을 나타냅니다.
참고Red Hat OpenShift GitOps Operator는 다음과 같은 기본 클러스터 역할을 생성하고 관리합니다.
-
<argocd_name>-<argocd_namespace>-argocd-application-controller집계 클러스터 역할 -
<argocd_name>-<argocd_namespace>-argocd-application-controller-view -
<argocd_name>-<argocd_namespace>-argocd-application-controller-admin
다음 명령을 실행하여 Operator에서 Argo CD 애플리케이션 컨트롤러 및 Argo CD 서버 구성 요소에 대한 기본 클러스터 역할 및 클러스터 역할 바인딩을 생성했는지 확인합니다.
oc get ClusterRoles -l app.kubernetes.io/part-of=argocd
$ oc get ClusterRoles -l app.kubernetes.io/part-of=argocdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CREATED AT example-spring-petclinic-argocd-application-controller 2024-08-14T08:20:58Z example-spring-petclinic-argocd-application-controller-admin 2024-08-14T09:08:38Z example-spring-petclinic-argocd-application-controller-view 2024-08-14T09:08:38Z example-spring-petclinic-argocd-server 2024-08-14T08:20:59Z
NAME CREATED AT example-spring-petclinic-argocd-application-controller 2024-08-14T08:20:58Z example-spring-petclinic-argocd-application-controller-admin 2024-08-14T09:08:38Z example-spring-petclinic-argocd-application-controller-view 2024-08-14T09:08:38Z example-spring-petclinic-argocd-server 2024-08-14T08:20:59ZCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ClusterRoleBindings -l app.kubernetes.io/part-of=argocd
$ oc get ClusterRoleBindings -l app.kubernetes.io/part-of=argocdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME ROLE AGE example-spring-petclinic-argocd-application-controller ClusterRole/example-spring-petclinic-argocd-application-controller 54m example-spring-petclinic-argocd-server ClusterRole/example-spring-petclinic-argocd-server 54m
NAME ROLE AGE example-spring-petclinic-argocd-application-controller ClusterRole/example-spring-petclinic-argocd-application-controller 54m example-spring-petclinic-argocd-server ClusterRole/example-spring-petclinic-argocd-server 54mCopy to Clipboard Copied! Toggle word wrap Toggle overflow view및admin클러스터 역할에 대한 클러스터 역할 바인딩은 생성되지 않습니다.view및admin클러스터 역할은 집계된 클러스터 역할에만 권한을 추가하고 Argo CD 애플리케이션 컨트롤러에 대한 권한을 직접 구성하지 않기 때문입니다.작은 정보또는 OpenShift Container Platform 웹 콘솔을 사용하여 관리자 화면에서 확인할 수 있습니다. 사용자 관리 → 역할 및 사용자 관리 → RoleBindings 로 각각 이동할 수 있습니다.
app.kubernetes.io/part-of:argocd레이블이 있는 클러스터 역할 및 클러스터 역할 바인딩을 검색할 수 있습니다.다음 명령을 실행하여 생성된 역할의 출력 권한을 확인하여 집계된 클러스터 역할이 생성되었는지 확인합니다.
oc get ClusterRole/<cluster_role_name> -o yaml
$ oc get ClusterRole/<cluster_role_name> -o yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;cluster_role_name>을 생성된 역할의 이름으로 바꿉니다.
집계된 클러스터 역할의 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow view클러스터 역할의 출력 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin클러스터 역할의 출력 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보또는 OpenShift Container Platform 웹 콘솔을 사용하여 관리자 화면에서 확인할 수 있습니다. 사용자 관리 → 역할로 이동하여 필터 옵션을 사용하여 클러스터 전체 역할을 선택하고 집계된 클러스터 역할을 검색하고, 사용자 관리 및
관리자클러스터 역할을볼수 있습니다. 세부 정보 및 구성을 확인하려면 클러스터 역할을 열어야 합니다.클러스터 관리자는 이제 하나 이상의 사용자 정의 클러스터 역할을 생성하고 Argo CD 애플리케이션 컨트롤러에 대한 사용자 정의 권한을 구성할 수 있습니다.
3.5. 사용자 정의 클러스터 역할 생성 및 애플리케이션 컨트롤러에 대한 사용자 정의 권한 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 집계된 클러스터 역할에 사용자 정의 권한을 추가하려면 하나 이상의 사용자 정의 클러스터 역할을 생성한 다음 클러스터 범위 Argo CD 인스턴스의 Argo CD 애플리케이션 컨트롤러 구성 요소에 대한 사용자 정의 권한을 구성해야 합니다.
사전 요구 사항
- 클러스터 범위 Argo CD 인스턴스의 Argo CD 애플리케이션 컨트롤러 구성 요소에 대해 집계된 클러스터 역할을 생성했습니다.
Red Hat OpenShift GitOps Operator에서 생성 및 관리하는 다음과 같은 기본 클러스터 역할이 있습니다.
-
<
argocd_name>-<argocd_namespace>-argocd-application-controller가 사전 정의된aggregationRule필드를 사용하여 클러스터 역할을 집계했습니다. -
<argocd_name>-<argocd_namespace>-argocd-application-controller-view및 사전 정의된보기권한 -
사전 정의된 권한이 없는 <
argocd_name>-<argocd_namespace>-argocd-application-controller-admin
-
<
프로세스
다음 명령을 사용하여 필수 레이블 및 권한으로 새 클러스터 역할을 생성합니다.
oc apply -n <namespace> -f <cluster_role_name>.yaml
$ oc apply -n <namespace> -f <cluster_role_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<namespace>- 정의된 네임스페이스의 이름을 지정합니다.
<cluster_role_name>정의된 클러스터 역할 YAML 파일의 이름을 지정합니다.
사용자 정의 클러스터 역할 YAML의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보또는 웹 콘솔을 사용하여 관리자 화면에서 사용자 정의 클러스터 역할을 생성할 수 있습니다. 사용자 관리 → 역할 → 역할 생성 으로 이동하여 이전 YAML 템플릿을 사용하여 권한을 추가하고 생성 을 클릭합니다.
출력 예
clusterrole.rbac.authorization.k8s.io/user-application-controller created
clusterrole.rbac.authorization.k8s.io/user-application-controller createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 정의 클러스터 역할이 생성됩니다.
다음 명령을 실행하여 <
argocd_name>-<argocd_namespace>-argocd-application-controller-admin클러스터 역할이 사용자 정의 클러스터 역할의 권한을 상속하는지 확인합니다.oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller-admin -o yaml
$ oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller-admin -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<argocd_name>- 사용자 정의 클러스터 범위 Argo CD 인스턴스의 이름을 지정합니다.
<argocd_namespace>Argo CD가 설치된 네임스페이스를 지정합니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보또는 OpenShift Container Platform 웹 콘솔을 사용하여 관리자 화면에서 확인할 수 있습니다. 사용자 관리 → 역할로 이동하여 필터 옵션을 사용하여 클러스터 전체 역할을 선택하고 <
argocd_name>-<argocd_namespace>-argocd-application-controller-admin클러스터 역할을 검색할 수 있습니다. 세부 정보 및 구성을 확인하려면 클러스터 역할을 열어야 합니다.
다음 명령을 실행하여 <
argocd_name>-<argocd_namespace>-argocd_application-controller집계 클러스터 역할에서 <argocd_name>-<argocd_namespace>-argocd_namespace>-argocd-application-controller-admin및 <argocd_name>-<argocd_namespace>-argocd_controller-view의 권한을 상속하는지 확인합니다.oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller -o yaml
$ oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<argocd_name>- 사용자 정의 클러스터 범위 Argo CD 인스턴스의 이름을 지정합니다.
<argocd_namespace>Argo CD가 설치된 네임스페이스를 지정합니다.
집계된 클러스터 역할의 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보또는 OpenShift Container Platform 웹 콘솔을 사용하여 관리자 화면에서 확인할 수 있습니다. 사용자 관리 → 역할로 이동하여 필터 옵션을 사용하여 클러스터 전체 역할을 선택한 다음 집계된 클러스터 역할을 검색할 수 있습니다. 세부 정보 및 구성을 확인하려면 클러스터 역할을 열어야 합니다.
4장. Argo CD Application Controller 복제본에 클러스터 분할 링크 복사링크가 클립보드에 복사되었습니다!
컨트롤러가 너무 많은 클러스터를 관리하고 너무 많은 메모리를 사용하는 경우 여러 Argo CD Application Controller 복제본에 클러스터를 분할할 수 있습니다.
4.1. 라운드 로빈 분할 알고리즘 활성화 링크 복사링크가 클립보드에 복사되었습니다!
라운드 로빈 분할 알고리즘은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
기본적으로 Argo CD 애플리케이션 컨트롤러는 비균일 레거시 해시 기반 샤딩 알고리즘을 사용하여 클러스터를 shard에 할당합니다. 이로 인해 클러스터 배포가 해제될 수 있습니다. 라운드 로빈 샤딩 알고리즘을 활성화하여 모든 shard에서 동일한 클러스터 배포를 수행할 수 있습니다.
Red Hat OpenShift GitOps에서 라운드 로빈 샤딩 알고리즘을 사용하면 다음과 같은 이점이 있습니다.
- 보다 균형 있는 워크로드 분배를 보장합니다.
- shard가 과부하되거나 활용도가 낮은 것을 방지
- 컴퓨팅 리소스의 효율성 최적화
- 병목 현상의 위험 감소
- Argo CD 시스템의 전반적인 성능 및 안정성 개선
대체 샤딩 알고리즘을 도입하면 특정 사용 사례에 따라 추가 사용자 정의가 가능합니다. 배포 요구 사항에 가장 적합한 알고리즘을 선택할 수 있으므로 다양한 운영 시나리오에서 유연성 및 조정 가능성이 향상됩니다.
GitOps의 대체 샤딩 알고리즘의 이점을 활용하려면 배포 중에 샤딩을 활성화하는 것이 중요합니다.
4.1.1. 웹 콘솔에서 라운드 로빈 분할 알고리즘 활성화 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 웹 콘솔을 사용하여 라운드 로빈 분할 알고리즘을 활성화할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
- OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다.
프로세스
- 웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator 로 이동합니다.
- 설치된 Operator에서 Red Hat OpenShift GitOps 를 클릭하고 Argo CD 탭으로 이동합니다.
-
라운드 로빈샤딩 알고리즘을 활성화하려는 Argo CD 인스턴스를 클릭합니다(예:openshift-gitops). YAML 탭을 클릭하고 다음 예와 같이 YAML 파일을 편집합니다.
라운드 로빈 분할 알고리즘이 활성화된 Argo CD 인스턴스의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 저장을 클릭합니다.
성공 알림 경고
openshift-gitops가 <version> 버전으로 업데이트되었습니다.참고기본
openshift-gitops인스턴스를 편집하면 Managed 리소스 대화 상자가 표시됩니다. 저장을 다시 클릭하여 변경 사항을 확인합니다.다음 단계를 수행하여 shard링 알고리즘으로
라운드 로빈을 사용하여 shard링이 활성화되었는지 확인합니다.- 워크로드 → StatefulSets 로 이동합니다.
- 프로젝트 드롭다운 목록에서 Argo CD 인스턴스를 설치한 네임스페이스를 선택합니다.
- < instance_name>-application-controller (예: openshift-gitops-application-controller )를 클릭하고 Pod 탭으로 이동합니다.
- 생성된 애플리케이션 컨트롤러 Pod 수를 확인합니다. 세트 복제본 수에 해당해야 합니다.
검사할 컨트롤러 Pod를 클릭하고 로그 탭으로 이동하여 Pod 로그를 확인합니다.
컨트롤러 Pod 로그 조각의 예
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=openshift-gitops version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=openshift-gitops version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin"1 time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
" filter function: round-robin"메시지를 찾습니다.
로그 검색 필드에서
shard로 처리된프로세스를 검색하여 다음 예와 같이 shard 간 클러스터 배포가 짝인지 확인합니다.중요이러한 로그를 관찰하도록
디버그하도록 로그 수준을 설정해야 합니다.컨트롤러 Pod 로그 조각의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고"C" 클러스터 수가 shard 복제본 "R"의 배수인 경우 각 shard에 할당된 클러스터 "N"이 동일한 "C"가 "R"으로 나누어야 합니다. 이전 예제에서는 3개의 클러스터와 3개의 복제본을 표시하므로 각 shard에는 클러스터가 1개씩 할당됩니다.
4.1.2. CLI를 사용하여 라운드 로빈 분할 알고리즘 활성화 링크 복사링크가 클립보드에 복사되었습니다!
명령줄 인터페이스를 사용하여 라운드 로빈 샤딩 알고리즘을 활성화할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다.
프로세스
다음 명령을 실행하여 분할을 활성화하고 원하는 값으로 복제본 수를 설정합니다.
oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"sharding":{"enabled":true,"replicas":<value>}}}}' --type=merge$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"sharding":{"enabled":true,"replicas":<value>}}}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
라운드 로빈으로 분할 알고리즘을 구성합니다.oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"env":[{"name":"ARGOCD_CONTROLLER_SHARDING_ALGORITHM","value":"round-robin"}]}}}' --type=merge$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"env":[{"name":"ARGOCD_CONTROLLER_SHARDING_ALGORITHM","value":"round-robin"}]}}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Argo CD Application Controller Pod의 수가 세트 복제본 수에 해당하는지 확인합니다.
oc get pods -l app.kubernetes.io/name=<argocd_instance>-application-controller -n <namespace>
$ oc get pods -l app.kubernetes.io/name=<argocd_instance>-application-controller -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE <argocd_instance>-application-controller-0 1/1 Running 0 11s <argocd_instance>-application-controller-1 1/1 Running 0 32s <argocd_instance>-application-controller-2 1/1 Running 0 22s
NAME READY STATUS RESTARTS AGE <argocd_instance>-application-controller-0 1/1 Running 0 11s <argocd_instance>-application-controller-1 1/1 Running 0 32s <argocd_instance>-application-controller-2 1/1 Running 0 22sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 분할 알고리즘으로
라운드 로빈알고리즘을 사용하여 샤딩이 활성화되었는지 확인합니다.oc logs <argocd_application_controller_pod> -n <namespace>
$ oc logs <argocd_application_controller_pod> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 조각의 예
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=<namespace> version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=<namespace> version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin"1 time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
" filter function: round-robin"메시지를 찾습니다.
다음 단계를 수행하여 shard 간 클러스터 배포가 있는지 확인합니다.
다음 명령을 실행하여 로그 수준을
debug로 설정합니다.oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"logLevel":"debug"}}}' --type=merge$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"logLevel":"debug"}}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 로그를 보고
shard에서 처리된를 검색하여 다음 명령을 실행하여 각 클러스터가 연결된 shard를 관찰합니다.oc logs <argocd_application_controller_pod> -n <namespace> | grep "processed by shard"
$ oc logs <argocd_application_controller_pod> -n <namespace> | grep "processed by shard"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 조각의 예
time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id= will be processed by shard 0" time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 will be processed by shard 1" time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w will be processed by shard 2"
time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id= will be processed by shard 0"1 time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 will be processed by shard 1"2 time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w will be processed by shard 2"3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고"C" 클러스터 수가 shard 복제본 "R"의 배수인 경우 각 shard에 할당된 클러스터 "N"이 동일한 "C"가 "R"으로 나누어야 합니다. 이전 예제에서는 3개의 클러스터와 3개의 복제본을 표시하므로 각 shard에는 클러스터가 1개씩 할당됩니다.
4.2. Argo CD 애플리케이션 컨트롤러의 shard 동적 스케일링 활성화 링크 복사링크가 클립보드에 복사되었습니다!
shard의 동적 확장은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
기본적으로 Argo CD 애플리케이션 컨트롤러는 클러스터를 shard에 무기한 할당합니다. 라운드 로빈 샤딩 알고리즘을 사용하는 경우 이 정적 할당으로 인해 특히 복제본이 추가되거나 제거될 때 shard가 균등하게 분산될 수 있습니다. shard의 동적 스케일링을 활성화하여 Argo CD 애플리케이션 컨트롤러에서 관리하는 클러스터 수에 따라 shard 수를 자동으로 조정할 수 있습니다. 이렇게 하면 shard가 잘 균형을 유지하고 컴퓨팅 리소스 사용을 최적화합니다.
동적 스케일링을 활성화한 후에는 shard 수를 수동으로 수정할 수 없습니다. 이 시스템은 Argo CD 애플리케이션 컨트롤러에서 관리하는 클러스터 수에 따라 shard 수를 자동으로 조정합니다.
4.2.1. 웹 콘솔에서 shard의 동적 스케일링 활성화 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 웹 콘솔을 사용하여 shard의 동적 확장을 활성화할 수 있습니다.
사전 요구 사항
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다. - OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
프로세스
- OpenShift Container Platform 웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator 로 이동합니다.
- 설치된 Operator 목록에서 Red Hat OpenShift GitOps Operator를 선택한 다음 ArgoCD 탭을 클릭합니다.
-
shard의 동적 스케일링을 활성화할 Argo CD 인스턴스 이름을 선택합니다(예:
openshift-gitops). YAML 탭을 클릭한 다음
spec.controller.sharding속성을 다음과 같이 편집하고 구성합니다.동적 확장이 활성화된 Argo CD YAML 파일의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 저장을 클릭합니다.
성공 알림 경고
openshift-gitops가 <version> 버전으로 업데이트되었습니다.참고기본
openshift-gitops인스턴스를 편집하면 Managed 리소스 대화 상자가 표시됩니다. 저장을 다시 클릭하여 변경 사항을 확인합니다.
검증
네임스페이스의 Pod 수를 확인하여 분할이 활성화되었는지 확인합니다.
- 워크로드 → StatefulSets 로 이동합니다.
-
프로젝트 드롭다운 목록에서 Argo CD 인스턴스가 배포된 네임스페이스를 선택합니다(예:
openshift-gitops). -
Argo CD 인스턴스의 이름이 있는
StatefulSet오브젝트의 이름을 클릭합니다(예:openshift-gitops-apllication-controller). -
Pods 탭을 클릭한 다음 Argo CD
YAML파일에 설정한minShards값보다 크거나 같은 Pod 수가 있는지 확인합니다.
4.2.2. CLI를 사용하여 shard의 동적 확장 활성화 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift CLI(oc)를 사용하여 shard의 동적 확장을 활성화할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다.
프로세스
-
oc툴을cluster-admin권한이 있는 사용자로 사용하여 클러스터에 로그인합니다. 다음 명령을 실행하여 동적 스케일링을 활성화합니다.
oc patch argocd <argocd_instance> -n <namespace> --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":<value>,"maxShards":<value>,"clustersPerShard":<value>}}}}'$ oc patch argocd <argocd_instance> -n <namespace> --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":<value>,"maxShards":<value>,"clustersPerShard":<value>}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 예
oc patch argocd openshift-gitops -n openshift-gitops --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}}}}'$ oc patch argocd openshift-gitops -n openshift-gitops --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}}}}'1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 예제 명령은
openshift-gitops네임스페이스에서openshift-gitopsArgo CD 인스턴스에 대한 동적 스케일링을 활성화하고 최소 shard 수를1로, 최대 shard 수는3, shard당 클러스터 수를1로 설정합니다.minShard및clustersPerShard의 값을1이상으로 설정해야 합니다.maxShard의 값은minShard값보다 크거나 같아야 합니다.
출력 예
argocd.argoproj.io/openshift-gitops patched
argocd.argoproj.io/openshift-gitops patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
Argo CD 인스턴스의
spec.controller.sharding속성을 확인합니다.oc get argocd <argocd_instance> -n <namespace> -o jsonpath='{.spec.controller.sharding}'$ oc get argocd <argocd_instance> -n <namespace> -o jsonpath='{.spec.controller.sharding}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 예
oc get argocd openshift-gitops -n openshift-gitops -o jsonpath='{.spec.controller.sharding}'$ oc get argocd openshift-gitops -n openshift-gitops -o jsonpath='{.spec.controller.sharding}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow shard의 동적 스케일링이 활성화된 경우 출력 예
{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
선택 사항: OpenShift Container Platform 웹 콘솔에서 Argo CD 인스턴스의 구성
YAML파일에서 구성된spec.controller.sharding속성을 확인하여 동적 확장이 활성화되어 있는지 확인합니다. Argo CD 애플리케이션 컨트롤러 Pod 수를 확인합니다.
oc get pods -n <namespace> -l app.kubernetes.io/name=<argocd_instance>-application-controller
$ oc get pods -n <namespace> -l app.kubernetes.io/name=<argocd_instance>-application-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 예
oc get pods -n openshift-gitops -l app.kubernetes.io/name=openshift-gitops-application-controller
$ oc get pods -n openshift-gitops -l app.kubernetes.io/name=openshift-gitops-application-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE openshift-gitops-application-controller-0 1/1 Running 0 2m
NAME READY STATUS RESTARTS AGE openshift-gitops-application-controller-0 1/1 Running 0 2m1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD 애플리케이션 컨트롤러 Pod의 수는
minShard값보다 크거나 같아야 합니다.