Argo CD 인스턴스
Argo CD 인스턴스 설치 및 배포, Argo CD 인스턴스로 알림 활성화, NotificationsConfiguration CR 구성
초록
1장. Argo CD 인스턴스 설정
기본적으로 Red Hat OpenShift GitOps는 특정 클러스터 범위 리소스를 관리하기 위한 추가 권한으로 openshift-gitops
네임스페이스에 Argo CD 인스턴스를 설치합니다. 이 기본 Argo CD 인스턴스는 기본 클러스터 범위 인스턴스라고도 합니다.
기본 Argo CD 인스턴스가 openshift-gitops
네임스페이스에서 시작되지 않도록 하려면 openshift-gitops-operator
서브스크립션을 사용하고 문자열 값을 "true"
로 설정하여 DISABLE_DEFAULT_ARGOCD_INSTANCE
환경 변수를 구성할 수 있습니다.
GitOps 버전 1.13 이상의 경우:
-
경로 TLS 종료는 기본 및 사용자 정의 Argo CD 인스턴스 모두에 대한
재암호화
모드로 기본값으로 설정됩니다. Argo CD 인스턴스에 대한 TLS 연결은 자체 서명된 Argo CD 인증서 대신 OpenShift Container Platform에 설정된 기본 수신 인증서를 수신합니다. Argo CD CR의.spec.server.route.tls
필드를 구성하여 경로 TLS 종료 정책을 수정할 수 있습니다. -
제한된 Pod 보안 승인(PSA) 라벨은 OpenShift Container Platform 표준을 준수하기 위해
openshift-gitops
네임스페이스에 적용됩니다. 모니터링 또는 로깅과 같은 이 네임스페이스에서 추가 워크로드를 실행하는 경우 제한된 PSA 요구 사항을 준수하는지 확인하십시오. 컴플라이언스가 가능하지 않은 경우 사용자 정의 클러스터 범위 Argo CD 인스턴스를 사용하는 것이 좋습니다. 여기서 PSA 레이블은 GitOps Operator에 의해 적용되거나 제어되지 않습니다.
클러스터 구성을 관리하거나 애플리케이션을 배포하려면 새 사용자 정의 Argo CD 인스턴스를 설치하고 배포할 수 있습니다. 기본적으로 모든 새 사용자 정의 인스턴스에는 배포된 네임스페이스에서만 리소스를 관리할 수 있는 권한이 있습니다.
- Argo CD 네임스페이스에 대한 액세스 권한이 있는 Kubernetes 사용자는 Argo CD 관리자이며 Argo CD에 구성된 RBAC(역할 기반 액세스 제어) 제한을 바이패스할 수 있습니다. 관리자가 아닌 사용자에게 Argo CD 네임스페이스에 대한 읽기 또는 쓰기 액세스 권한을 부여하지 마십시오.
-
관리자가 아닌 사용자가 애플리케이션을 생성하는 경우 제한이 없으므로 기본
AppProject
CR(사용자 정의 리소스)에 바인딩하도록 허용하지 마십시오. 그렇지 않으면 Argo CD 인스턴스의 Kubernetes 권한과 기본AppProject
CR을 사용하면 모든 곳에 배포할 수 있습니다. 이 상황을 방지하려면 사용자가 Argo CD RBAC를 잘못 구성하더라도 실수로 사용할 수 없도록 기본AppProject
CR을 잠급니다.
openshift-gitops
네임스페이스 이외의 모든 네임스페이스에서 사용자 정의 Argo CD 인스턴스를 생성할 수 있습니다.
openshift-gitops 네임스페이스에 사용자 정의 Argo CD 인스턴스를 생성하려면 openshift-gitops
- operator
서브스크립션의 DISABLE_DEFAULT_ARGOCD_INSTANCE
플래그를 "true"
로 설정하고 인스턴스의 이름을 openshift-gitops
로 설정하지 마십시오.
1.1. 사용자 정의 Argo CD 인스턴스 설치
클러스터 구성을 관리하거나 애플리케이션을 배포하려면 새 사용자 정의 Argo CD 인스턴스를 설치하고 배포할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 클러스터에 액세스할 수 있습니다. - OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
프로세스
- OpenShift Container Platform 웹 콘솔에 로그인합니다.
- 웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator 를 클릭합니다.
- 프로젝트 목록에서 사용자 정의 Argo CD 인스턴스를 설치할 프로젝트를 생성하거나 선택합니다.
- 설치된 Operator 목록에서 Red Hat OpenShift GitOps 를 선택하고 Argo CD 탭을 클릭합니다.
ArgoCD 생성 을 클릭하여 매개변수를 구성합니다.
-
인스턴스 의 이름을 입력합니다. 기본적으로 이름은
example
으로 설정됩니다. Argo CD 서버에 액세스할 외부 OS 경로를 생성합니다. 서버 → 경로를 클릭하고 활성화 되었는지 확인합니다.
작은 정보다음 예와 같이 외부 OS 경로를 생성하도록 YAML을 구성할 수도 있습니다.
외부 OS 경로가 생성된 Argo CD의 예
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example namespace: openshift-gitops spec: server: route: enabled: true
선택 사항: Argo CD CR의
.spec.server.route.tls
필드를 구성하여 경로 TLS 종료 정책을 수정합니다.참고Argo CD Server 경로에 대한 사용자 정의 TLS 인증서를 구성할 때
.spec.server.route.tls.key
및.spec.server.route.tls.certificate
필드를 사용하지 마십시오. 대신.spec.server.route.tls.externalCertificate
필드를 사용합니다. 사용자 정의 TLS 인증서의 경로 구성에 대한 자세한 내용은 경로에 대한 사용자 정의 TLS 인증서 의 예를 참조하십시오.
-
인스턴스 의 이름을 입력합니다. 기본적으로 이름은
- 생성을 클릭합니다.
- 사용자 정의 Argo CD 인스턴스가 설치된 프로젝트에서 네트워킹 → 경로 → < instance_name>-server 로 이동합니다.
- 세부 정보 탭에서 경로 세부 정보 → 위치 에서 Argo CD 웹 UI 링크를 클릭합니다. Argo CD 웹 UI가 별도의 브라우저 창에서 열립니다.
선택 사항: OpenShift Container Platform 인증 정보로 로그인하려면
cluster-admins
그룹의 사용자인지 확인한 다음 Argo CD 사용자 인터페이스에서LOG IN VIA OPENSHIFT
옵션을 선택해야 합니다.참고cluster-admins
그룹의 사용자가 되려면oc adm groups new cluster-admins <user
> 명령을 사용합니다. 여기서 <user
>는 클러스터 전체 또는 로컬로 사용자 및 그룹에 바인딩할 수 있는 기본 클러스터 역할입니다.사용자 정의 Argo CD 인스턴스의 암호를 가져옵니다.
- 탐색 패널을 사용하여 워크로드 → 시크릿 페이지로 이동합니다.
- 프로젝트 목록을 사용하고 사용자 정의 Argo CD 인스턴스가 생성된 네임스페이스를 선택합니다.
- 암호를 표시할 <argo_CD_instance_name>-cluster 인스턴스를 선택합니다.
- 세부 정보 탭에서 데이터 → admin.password 아래에 암호를 복사합니다.
-
admin
을 Username 으로 사용하고 복사한 암호를 Password 로 사용하여 새 창에서 Argo CD UI에 로그인합니다.
1.2. 네임스페이스 범위 인스턴스에 대한 사용자 정의 클러스터 역할을 지정하여 공통 클러스터 역할 구성
클러스터 관리자는 argocd.argoproj.io/managed-by
레이블을 사용하여 네임스페이스에 Argo CD에 액세스할 수 있는 경우 Argo CD는 namespace-admin
권한을 가정합니다. 그러면 Red Hat OpenShift GitOps Operator가 다음 GitOps 컨트롤 플레인 구성 요소의 모든 관리 네임스페이스에 대한 역할 바인딩을 자동으로 생성합니다.
- Argo CD 애플리케이션 컨트롤러
- Argo CD 서버
- Argo CD ApplicationSet Controller
예를 들어 개발팀과 같이 관리자가 아닌 사용자에게 네임스페이스를 제공하는 경우 namespace-admin
권한을 사용하여 네트워크 정책과 같은 오브젝트를 수정할 수 있습니다. 이러한 네임스페이스에 Argo CD 인스턴스를 설치하면 개발 팀 관리자
권한이 부여되고 할당된 권한을 간접적으로 완화할 수 있습니다. 이러한 역할은 높은 권한이 있으며 모든 리소스를 삭제할 수 있습니다. 예방 조치로 Operator가 Argo CD 애플리케이션 컨트롤러 및 Argo CD 서버 구성 요소에 대해 생성하는 역할 바인딩에서 모든 관리형 네임스페이스에 대한 공통 클러스터 역할을 구성하여 보안 요구 사항을 충족하도록 보안 요구 사항을 충족하기 위해 축소된 특정 권한 세트를 정의할 수 있습니다.
모든 관리 네임스페이스에 대한 공통 클러스터 역할을 구성하려면 Operator의 Subscription
오브젝트 YAML 파일에서 CONTROLLER_CLUSTER_ROLE
및 SERVER_CLUSTER_ROLE
환경 변수에 대해 사용자 정의 클러스터 역할을 지정할 수 있습니다. 결과적으로 Operator는 기본 관리자
역할을 생성하는 대신 기존 사용자 정의 클러스터 역할을 사용하고 모든 관리 네임스페이스에 대한 역할 바인딩을 생성합니다.
사전 요구 사항
- 관리자로 OpenShift Container Platform 클러스터에 로그인했습니다.
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
프로세스
- 관리자 관점에서 Administration → CustomResourceDefinitions 로 이동합니다.
- Subscription CRD를 찾아 클릭하여 엽니다.
- Instances 탭을 선택하고 openshift-gitops-operator 서브스크립션을 클릭합니다.
YAML 탭을 선택하고 사용자 지정을 만듭니다.
CONTROLLER_CLUSTER_ROLE
및SERVER_CLUSTER_ROLE
환경 변수에 대한 사용자 정의 클러스터 역할을 지정합니다.서브스크립션의 예
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-gitops-operator namespace: openshift-gitops-operator spec: config: env: - name: CONTROLLER_CLUSTER_ROLE value: gitops-controller-role 1 - name: SERVER_CLUSTER_ROLE value: gitops-server-role 2
또는 이전 환경 변수를 Operator의 Deployment
오브젝트 YAML 파일에 직접 삽입할 수 있습니다.
1.3. Argo CD 서버 및 리포지토리 서버의 복제본 활성화
Argo CD-server 및 Argo CD-repo-server 워크로드는 상태 비저장입니다. Pod 간에 워크로드를 더 잘 배포하기 위해 Argo CD-server 및 Argo CD-repo-server 복제본의 수를 늘릴 수 있습니다. 그러나 Argo CD-server에서 수평 자동 스케일러가 활성화된 경우 설정한 복제본 수를 덮어씁니다.
프로세스
리포지토리
및서버
사양의replicas
매개변수를 실행할 복제본 수로 설정합니다.Argo CD 사용자 정의 리소스의 예
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example-argocd labels: example: repo spec: repo: replicas: <number_of_replicas> server: replicas: <number_of_replicas> route: enabled: true path: / tls: insecureEdgeTerminationPolicy: Redirect termination: passthrough wildcardPolicy: None
1.4. 다른 네임스페이스에 리소스 배포
Argo CD가 설치된 위치와 다른 네임스페이스의 리소스를 관리할 수 있도록 하려면 argocd.argoproj.io/managed-by
라벨을 사용하여 대상 네임스페이스를 구성합니다.
프로세스
다음 명령을 실행하여 대상 네임스페이스를 구성합니다.
$ oc label namespace <target_namespace> \ argocd.argoproj.io/managed-by=<argocd_namespace>
다음과 같습니다.
<target_namespace>
- Argo CD에서 관리할 네임스페이스의 이름을 지정합니다.
<argocd_namespace>
- Argo CD가 설치된 네임스페이스의 이름을 지정합니다.
1.5. Argo CD 콘솔 링크 사용자 정의
멀티 테넌트 클러스터에서는 사용자가 Argo CD의 여러 인스턴스를 처리해야 할 수 있습니다. 예를 들어 네임스페이스에 Argo CD 인스턴스를 설치한 후 콘솔 애플리케이션 시작기에서 자체 Argo CD 인스턴스 대신 Argo CD 콘솔 링크에 연결된 다른 Argo CD 인스턴스를 찾을 수 있습니다.
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
환경 변수를 설정하여 Argo CD 콘솔 링크를 사용자 지정할 수 있습니다.
-
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
를true
로 설정하면 Argo CD 콘솔 링크가 영구적으로 삭제됩니다. -
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
를false
로 설정하거나 기본값을 사용하면 Argo CD 콘솔 링크가 일시적으로 삭제되고 Argo CD 경로가 조정되면 다시 표시됩니다.
사전 요구 사항
- 관리자로 OpenShift Container Platform 클러스터에 로그인했습니다.
- Red Hat OpenShift GitOps Operator가 설치되었습니다.
프로세스
- 관리자 관점에서 Administration → CustomResourceDefinitions 로 이동합니다.
- Subscription CRD를 찾아 클릭하여 엽니다.
- Instances 탭을 선택하고 openshift-gitops-operator 서브스크립션을 클릭합니다.
YAML 탭을 선택하고 사용자 지정을 만듭니다.
Argo CD 콘솔 링크를 활성화하거나 비활성화하려면 필요에 따라
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
값을 편집합니다.apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-gitops-operator spec: config: env: - name: DISABLE_DEFAULT_ARGOCD_CONSOLELINK value: 'true'
2장. Argo CD 사용자 정의 리소스 및 구성 요소 속성
ArgoCD
사용자 정의 리소스는 Argo CD 클러스터를 구성하는 구성 요소를 구성할 수 있는 지정된 Argo CD 클러스터에 대해 원하는 상태를 설명하는 CRD(Kubernetes Custom Resource)입니다.
2.1. Argo CD 사용자 정의 리소스 속성
Argo CD 사용자 정의 리소스는 다음 속성으로 구성됩니다.
이름 | 설명 | 기본 | 속성 |
---|---|---|---|
| 클러스터 범위 인스턴스의 Argo CD Application Controller 구성 요소에 대해 집계된 클러스터 역할을 사용합니다. |
| |
|
Argo CD가 앱 이름을 추적 레이블로 삽입하는 |
| |
| ApplicationSet 컨트롤러 구성 옵션입니다. |
|
|
| UI 배너 메시지를 추가합니다. |
|
|
| 구성 관리 플러그인을 추가합니다. |
| |
| Argo CD 애플리케이션 컨트롤러 옵션. |
|
|
| 기본 제공 admin 사용자를 비활성화합니다. |
| |
| 클러스터 범위 인스턴스의 기본 클러스터 역할 생성을 비활성화합니다. |
| |
|
Argo CD 사용자 정의 리소스 내에서 직접 구성할 수 없는 |
| |
| Google Analytics 추적 ID를 사용합니다. |
| |
| Google Analytics로 전송되는 해시된 사용자 이름을 활성화합니다. |
| |
| 고가용성 옵션. |
|
|
| 채팅 도움말을 가져오기 위한 URL(일반적으로 지원을 위한 Slack 채널임). |
| |
| 채팅 도움말을 가져오기 위해 텍스트 상자에 표시되는 텍스트입니다. |
| |
|
모든 Argo CD 구성 요소의 컨테이너 이미지입니다. 이렇게 하면 |
| |
| Argo CD의 구성 옵션을 가져옵니다. |
|
|
| 인그레스 구성 옵션. |
| |
| 클러스터 생성 시 사용할 Argo CD를 구성하는 초기 Git 리포지토리입니다. |
| |
| SSH를 통해 Git 리포지토리에 연결하는 데 클러스터 생성 시 사용할 Argo CD의 초기 SSH knownn Hosts 데이터를 정의합니다. |
|
|
|
|
| |
|
Argo CD 리포지토리 서버 컨테이너 이미지에 구성된 |
|
|
| 인스턴스의 워크로드 상태 모니터링 구성을 정의합니다. |
|
|
| 알림 컨트롤러 구성 옵션. |
|
|
|
Argo CD 워크로드에 대한 |
|
|
| OIDC 구성의 대안으로 Dex입니다. |
| |
| Prometheus 구성 옵션. |
|
|
| RBAC 구성 옵션. |
|
|
| Redis 구성 옵션. |
|
|
| 클러스터 생성에 사용할 Argo CD를 구성하기 위한 Git 리포지토리 인증 정보 템플릿입니다. |
| |
| 리소스 작업 동작을 사용자 정의합니다. |
| |
| 리소스 그룹의 전체 클래스를 완전히 무시합니다. |
| |
| 적용되는 리소스 그룹/종류를 식별하는 구성입니다. |
| |
| 리소스 상태 점검 동작을 사용자 정의합니다. |
| |
| 리소스를 사용자 지정하면 차이점 동작이 무시됩니다. |
| |
| Argo CD에서 관리 리소스를 모니터링하는 데 사용하는 필드입니다. |
| |
| Argo CD 서버 구성 옵션. |
|
|
| 애플리케이션 리소스를 생성할 수 있는 네임스페이스를 지정합니다. |
| |
| Single Sign-On 옵션 |
|
|
| 애플리케이션 상태 배지를 활성화합니다. |
| |
| TLS 구성 옵션. |
|
|
| 익명 사용자 액세스를 활성화합니다. |
| |
| 모든 Argo CD 구성 요소에 대해 컨테이너 이미지와 함께 사용할 태그입니다. | 최신 Argo CD 버전 |
2.2. 리포지토리 서버 속성
다음 속성은 리포지토리 서버 구성 요소를 구성하는 데 사용할 수 있습니다.
이름 | 기본 | 설명 |
---|---|---|
|
| Operator에서 배포한 Pod에 추가할 사용자 정의 주석 목록입니다. 이 필드는 선택 사항입니다. |
|
|
repo-server의 gRPC TLS 인증서에 TLS를 설정하는 데 사용할 공급자입니다. 현재는 |
|
| Repo 서버 워크로드에 대해 설정할 환경입니다. |
|
| Argo CD 설치 중에 Repo 서버를 활성화하는 플래그입니다. |
|
| 툴 렌더링을 위한 실행 시간(초)입니다(예: Helm 또는 Kustomize). |
|
| Repo 서버 워크로드에 명령줄 인수를 전달합니다. 명령줄 인수는 Operator에서 설정한 인수 목록에 추가됩니다. |
|
|
Argo CD 애플리케이션 컨트롤러 구성 요소의 |
|
|
Argo CD Repo 서버의 컨테이너 이미지입니다. 이 적절한 경우 |
|
| Operator에서 배포한 Pod에 추가할 사용자 정의 라벨 목록입니다. 이 필드는 선택 사항입니다. |
|
|
Argo CD Repo 서버에서 사용하는 로그 수준입니다. 유효한 옵션은 |
|
|
Argo CD 리포지토리 서버에서 사용할 로그 형식입니다. 유효한 옵션은 |
|
|
|
|
| Repo 서버 컨테이너의 원격 URL을 지정합니다. |
|
|
Argo CD Repo 서버의 복제본 수입니다. |
|
| 컨테이너 컴퓨팅 리소스입니다. |
|
|
repo-server Pod와 함께 사용할 |
|
|
Argo CD 애플리케이션 컨트롤러 구성 요소의 |
|
| 리포지토리 서버와 통신할 때 모든 구성 요소에서 엄격한 TLS 검사를 적용할지 여부를 정의합니다. |
|
| Argo CD Repo 서버와 함께 사용할 태그입니다. |
|
| Repo 서버 배포에 사용되는 추가 볼륨을 구성합니다. 이 필드는 선택 사항입니다. |
|
| Repo 서버 배포에 사용되는 추가 볼륨 마운트를 구성합니다. 이 필드는 선택 사항입니다. |
2.3. Argo CD 인스턴스를 사용하여 알림 활성화
Argo CD 알림을 사용하면 Argo CD 인스턴스에서 이벤트가 발생할 때 외부 서비스에 알림을 보낼 수 있습니다. 예를 들어 동기화 작업이 실패하면 Slack 또는 이메일에 알림을 보낼 수 있습니다. 기본적으로 알림은 Argo CD 인스턴스에서 비활성화되어 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있고 웹 콘솔에 로그인한 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. - 클러스터에 Red Hat OpenShift GitOps Operator가 설치되어 있습니다.
프로세스
OpenShift Container Platform 웹 콘솔을 사용하여 Argo CD 인스턴스에 대한 알림을 활성화하려면 다음 단계를 완료합니다.
- Operator → 설치된 Operator 페이지로 이동합니다.
- 설치된 Operator 목록에서 Red Hat OpenShift GitOps Operator를 선택한 다음 ArgoCD 탭을 클릭합니다.
-
알림을 활성화하려는 Argo CD 인스턴스 이름을 선택합니다. 예:
openshift-gitops
. YAML 탭을 클릭한 다음
spec.notifications.enabled
매개변수를true
로 편집한 다음 설정합니다.예
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: openshift-gitops spec: notifications: enabled: true #....
- 저장을 클릭합니다.
또는 Openshift CLI에서 oc patch
명령을 사용하여 알림을 활성화할 수 있습니다. 예를 들면 다음과 같습니다.
oc patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}'
추가 리소스
2.4. Argo CD CR에서 구성 관리 플러그인 활성화
Argo CD는 Helm, Jsonnet 및 Kustomize를 기본 제공 구성 관리 툴로 지원합니다. 다른 구성 관리 툴을 사용하거나 기본 제공 구성 관리 툴에서 제공하지 않는 기능을 활성화하려면 구성 관리 플러그인(CMP)을 사용할 수 있습니다.
Argo CD에서 CMP는 Argo CD 리포지토리 서버 컨테이너의 사이드카 컨테이너로 지정됩니다. 자세한 내용은 "구성 관리 플러그인"을 참조하십시오.
Red Hat OpenShift GitOps Operator에서 Argo CD CR(사용자 정의 리소스)에서 구성 관리 플러그인을 사이드카 컨테이너로 구성할 수 있습니다. 사이드카 컨테이너를 구성할 때 off-the-shelf 또는 사용자 정의 빌드 컨테이너 이미지를 지정합니다. 이미지를 지정하지 않으면 시스템은 플러그인의 리포지토리 서버와 동일한 이미지를 사용합니다.
Red Hat OpenShift GitOps Operator에서 사이드카 컨테이너를 구성하려면 Argo CD CR에 .spec.repo.sidecarContainers
키를 추가합니다.
구성 관리 플러그인 구성의 예
apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: <my_argocd> 1 spec: repo: sidecarContainers: - name: <my_cmp> 2 command: [/var/run/argocd/argocd-cmp-server] image: <my_image> securityContext: runAsNonRoot: <true> runAsUser: 3 volumeMounts: 4 - mountPath: /var/run/argocd name: <var_files> - mountPath: /home/argocd/cmp-server/plugins name: plugins - mountPath: /tmp name: tmp - mountPath: /home/argocd/cmp-server/config/plugin.yaml subPath: <plugin.yaml> name: <cmp_plugin>
2.5. NotificationsConfiguration 사용자 정의 리소스 속성
NotificationsConfiguration
리소스는 Kubernetes 클러스터의 알림을 관리하는 Kubernetes 사용자 정의 리소스(CR)입니다. Red Hat OpenShift GitOps에서는
CR을 사용하여 템플릿, 트리거, 서비스 및 서브스크립션 리소스를 Argo CD 알림 구성 맵에 추가할 수 있습니다.
Notifications
Configuration
알림이 활성화된 Red Hat OpenShift GitOps에서 클러스터를 생성하면 기본적으로 NotificationsConfiguration
CR이 name default-notifications-configuration
을 사용하여 생성됩니다.
NotificationsConfiguration
CR의 기존 구성에서 수행된 모든 변경 사항은 Argo CD 알림
구성 맵에 복제됩니다. 예를 들어, 사용자가
리소스에 트리거 구성을 추가하면 Argo CD 알림 구성 맵에서 이 구성을 읽고 처리하고 업데이트합니다.
Notifications
Configuration
모든 구성 변경 사항은 default-notifications-configuration
CR에서 업데이트해야 합니다. NotificationsConfiguration
리소스에 대해 사용자가 생성한 사용자 정의 리소스는 지원되지 않습니다.
Argo CD argocd-notifications-cm
구성 맵에 대한 수정은 NotificationsConfiguration
CR에서 변경한 사항으로 재정의됩니다.
속성 | 기본 | 설명 |
---|---|---|
Templates |
| 템플릿은 알림 템플릿 메시지를 생성하는 데 사용됩니다. |
Trigger |
| 트리거는 알림이 사용자에게 전송될 때 조건과 메시지를 생성하는 데 필요한 템플릿 목록을 정의하는 데 사용됩니다. |
서비스 |
| 서비스는 메시지를 전달하는 데 사용됩니다. |
서브스크립션 |
| 서브스크립션에는 중앙 집중식으로 관리되는 글로벌 애플리케이션 서브스크립션이 포함되어 있습니다. |
다음 예제에서는 default-notifications-configuration
사용자 정의 리소스를 사용하여 Argo CD argocd-notification-cm
구성 구성 맵에 템플릿, 트리거, 서비스 및 서브스크립션 리소스를 추가하는 방법을 정의합니다.
템플릿
예
apiVersion: argoproj.io/v1alpha1 kind: NotificationsConfiguration metadata: name: default-notifications-configuration 1 spec: templates: template.my-custom-template: | 2 message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
트리거
의 예
apiVersion: argoproj.io/v1alpha1 kind: NotificationsConfiguration metadata: name: default-notifications-configuration 1 spec: triggers: trigger.on-sync-status-unknown: | 2 - when: app.status.sync.status == 'Unknown' send: [my-custom-template]
서비스
의 예
apiVersion: argoproj.io/v1alpha1 kind: NotificationsConfiguration metadata: name: default-notifications-configuration 1 spec: services: service.slack: | token: $slack-token 2 username: <override-username> # optional username icon: <override-icon> # optional icon for the message (supports both emoji and url notation)
서브스크립션
예
apiVersion: argoproj.io/v1alpha1 kind: NotificationsConfiguration metadata: name: default-notifications-configuration 1 spec: subscriptions: 2 subscriptions: | # subscription for on-sync-status-unknown trigger notifications - recipients: - slack:test2 - email:test@gmail.com triggers: - on-sync-status-unknown # subscription restricted to applications with matching labels only - recipients: - slack:test3 selector: test=true triggers: - on-sync-status-unknown
OpenShift Container Platform 웹 콘솔 또는 CLI(oc
)를 사용하여 NotificationsConfiguration
CR을 구성할 수 있습니다.
2.5.1. 웹 콘솔을 사용하여 NotificationsConfiguration CR 구성
웹 콘솔을 사용하여 NotificationsConfiguration
CR(사용자 정의 리소스)을 구성할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있고 웹 콘솔에 로그인한 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. - 클러스터에 Red Hat OpenShift GitOps Operator가 설치되어 있습니다.
- Argo CD 인스턴스에 대한 알림이 활성화되어 있습니다. 자세한 내용은 " Argo CD 인스턴스를 사용하여 알림 활성화"를 참조하십시오.
프로세스
- OpenShift Container Platform 웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator 를 확장합니다.
- 설치된 Operator 목록에서 Red Hat OpenShift GitOps Operator를 선택한 다음 NotificationsConfiguration 탭을 클릭합니다.
-
NotificationsConfigurations 페이지에서
default-notifications-configuration
을 클릭합니다. default-notifications-configuration 페이지에서 YAML 을 클릭하고
템플릿
과 같은 지원되는 리소스에 대한 구성을 추가합니다
.예를 들어 코드의
템플릿
아래에 다음 샘플 구성을 추가합니다.템플릿 구성 예
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
- 저장을 클릭합니다.
NotificationsConfiguration
CR의 구성 변경 사항이argocd-notifications-cm
구성 맵에 반영되었는지 확인합니다.- 워크로드 → ConfigMap 으로 이동합니다.
- argocd-notifications-cm 를 클릭하고 YAML 탭을 선택합니다.
- YAML 탭의 페이지를 스크롤하여 지원되는 리소스에 추가된 샘플 구성을 확인합니다.
2.5.2. CLI를 사용하여 NotificationsConfiguration CR 구성
CLI(oc
)를 사용하여 NotificationsConfiguration
CR(사용자 정의 리소스)을 구성할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. - 클러스터에 Red Hat OpenShift GitOps Operator가 설치되어 있습니다.
- Argo CD 인스턴스에 대한 알림이 활성화되어 있습니다. 자세한 내용은 " Argo CD 인스턴스를 사용하여 알림 활성화"를 참조하십시오.
프로세스
다음 명령을 실행하여 클러스터에서 기본
NotificationsConfiguration
CR을 편집합니다.$ oc edit notificationsconfiguration default-notifications-configuration -n <namespace>
다음과 같습니다.
default-notifications-configuration
-
기본
NotificationsConfiguration
CR의 이름을 지정합니다. <namespace>
- 네임스페이스의 이름을 지정합니다.
CR의
templates
섹션에서 다음 예와 유사한 구성을 추가합니다.템플릿 구성 예
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
다음 명령을 실행하여
argocd-notifications-cm
구성 맵의 내용을 확인합니다.$ oc edit cm argocd-notifications-cm -n <namespace>
NotificationsConfiguration
CR의 기존 구성 변경 사항은argocd-notifications-cm
구성 맵에 반영됩니다.
2.6. Argo CD에서 주석 기반 리소스 추적 활성화
Red Hat OpenShift GitOps Operator는 Argo CD에서 주석 기반 리소스 추적을 개선하여 다중 인스턴스 지원을 향상시킵니다. 이전 버전에서는 여러 Argo CD 인스턴스가 기존 레이블 기반 추적에만 의존하여 동일한 애플리케이션 이름으로 리소스를 적절하게 구별하지 않았습니다. 이번 개선된 기능을 통해 각 인스턴스에 고유한 설치 ID
를 할당하여 주석 기반 추적을 완전히 활용할 수 있습니다. 이렇게 하면 리소스 충돌을 방지하고 무한 동기화 루프를 제거하고 안전하게 병렬 작업을 수행할 수 있습니다.
OpenShift Container Platform 웹 콘솔을 사용하여 다음 작업을 수행할 수 있습니다.
- 여러 Argo CD 인스턴스 설정
- 네임스페이스와 연결하여 주석 기반 추적 구성
- 배포 확인
-
리소스 추적 충돌을 방지하려면 각 Argo CD 인스턴스에 고유한
installationID
ID가 있어야 합니다. - 각 Argo CD 인스턴스에서 의도한 리소스만 관리할 수 있으므로 네임스페이스의 레이블이 정확하게 지정되었는지 확인합니다.
-
여러 인스턴스에 이름이 같은 애플리케이션이 있는 경우 리소스 추적을 annotations
+label
로 설정합니다. - 문제가 발생하면 Argo CD 애플리케이션 상태를 확인하고 OpenShift Container Platform 웹 콘솔의 로그를 확인하십시오.
2.6.1. 여러 Argo CD 인스턴스에서 주석 기반 추적 구성
여러 Argo CD 인스턴스에서 주석 기반 추적을 구성할 수 있습니다.
이 절차에서는 다음 예제 값을 사용합니다.
-
repoURL
:https://github.com/redhat-developer/gitops-operator
-
server
:https://kubernetes.default.svc
다음 단계를 수행할 때 예제 값을 실제 값으로 바꿉니다.
사전 요구 사항
- 관리자로 OpenShift Container Platform 클러스터에 로그인했습니다.
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps Operator를 설치했습니다.
프로세스
- OpenShift Container Platform 웹 콘솔에 로그인합니다.
웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator 를 클릭합니다.
- 프로젝트 목록에서 사용자 정의 Argo CD 인스턴스를 설치할 프로젝트를 생성하거나 선택합니다.
- 설치된 Operator 목록에서 Red Hat OpenShift GitOps 를 선택하고 Argo CD 탭을 클릭합니다.
Argo CD 인스턴스 두 개를 생성하려면 ArgoCD 생성 을 클릭하고 다음 예제와 유사한 두 개의 YAML 파일을 생성합니다.
주석 레이블이 있는 첫 번째 Argo CD 인스턴스의 예
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: argocd-instance-demo-1 1 namespace: argocd-test-demo-1 2 spec: installationID: "instance-demo-1" 3 resourceTrackingMethod: "annotation+label"
주석 레이블이 있는 두 번째 Argo CD 인스턴스의 예
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: argocd-instance-demo-2 1 namespace: argocd-test-demo-2 2 spec: installationID: "instance-demo-2" 3 resourceTrackingMethod: "annotation+label"
네임스페이스를 Argo CD 인스턴스와 연결하도록 대상 네임스페이스를 구성하고 레이블을 지정합니다.
- 관리 → 네임스페이스로 이동합니다.
-
애플리케이션 배포,
app-ns-1
및app-ns-2
를 위한 네임스페이스를 만듭니다. 각 네임스페이스를 각 Argo CD 인스턴스와 연결합니다.
다음 명령을 실행하여
app-ns-1
네임스페이스를argocd-test-demo-1
Argo CD 인스턴스와 연결합니다.명령 예
$ oc label namespace app-ns-1 argocd.argoproj.io/managed-by=argocd-test-demo-1
다음 명령을 실행하여
app-ns-2
네임스페이스를argocd-test-demo-2
Argo CD 인스턴스와 연결합니다.명령 예
$ oc label namespace app-ns-2 argocd.argoproj.io/managed-by=argocd-test-demo-2
Argo CD에 두 개의 애플리케이션을 생성합니다.
- OpenShift Container Platform 웹 콘솔에서 Operator → 설치된 Operator → OpenShift GitOps Operator 로 이동합니다.
- Argo CD 를 선택하고 애플리케이션 탭으로 이동합니다.
- 애플리케이션 생성을 클릭합니다.
다음 YAML 스니펫을 입력하여 Argo CD에 두 개의 애플리케이션을 생성합니다.
Argo CD를 사용하는 첫 번째 애플리케이션 예
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: sprint-petclinic 1 namespace: argocd-test-demo-1 2 spec: project: default source: repoURL: https://github.com/redhat-developer/gitops-operator path: test/examples/nginx targetRevision: HEAD destination: server: https://kubernetes.default.svc namespace: app-ns-1 syncPolicy: automated: {}
Argo CD를 사용하는 두 번째 애플리케이션 예
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: sprint-petclinic 1 namespace: argocd-test-demo-2 2 spec: project: default source: repoURL: https://github.com/redhat-developer/gitops-operator path: test/examples/nginx targetRevision: HEAD destination: server: https://kubernetes.default.svc namespace: app-ns-2 syncPolicy: automated: {}
검증
- OpenShift Container Platform 웹 콘솔에서 워크로드 → Pod 로 이동합니다.
-
Argo CD 인스턴스의 포드가
argocd-instance-demo-1
및argocd-instance-demo-2
가 실행 중인지 확인합니다. - Argo CD Applications YAML 탭에서 애플리케이션 동기화 상태를 확인합니다.
-
argocd-test-demo-1
및 argocd-test-demo-2 네임스페이스에서
구성 맵으로 이동하여argocd-
cminstallationID
오브젝트가 성공적으로 구성되었는지 확인합니다.