이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
Argo CD 설정 구성
Argo CD의 EKS 기능은 완전관리형 Argo CD 환경을 제공합니다. 업스트림 Argo CD는 많은 선택적 설정 및 기능을 제공하며, 이 기능은 기능의 하위 집합도 지원합니다. 지원되는 설정의 경우 클러스터의 argocd-cm ConfigMap을 통해 업스트림 Argo CD와 동일한 방식으로 구성합니다. 이 기능은 이 ConfigMap에서 지원되는 필드를 읽고 관리형 Argo CD 인스턴스에 적용합니다.
다음 섹션에서는 지원되는 설정에 대해 argocd-cm ConfigMap을 구성하는 방법을 설명합니다.
사전 조건
Argo CD 설정을 구성하기 전에 다음이 있어야 합니다.
-
Argo CD 기능이 생성된 EKS 클러스터(Argo CD 기능 생성 참조)
-
기능에서 Argo CD에 대해 구성된 네임스페이스(기본적으로
argocd네임스페이스) -
클러스터와 통신하도록 구성된
kubectlCLI
argocd-cm ConfigMap 구성
지원되는 Argo CD 설정을 구성하려면 클러스터에서 argocd-cm이라는 ConfigMap을 생성합니다. 관리형 기능은 이 ConfigMap에서 지원되는 설정을 읽고 관리형 Argo CD 인스턴스에 적용합니다. 기능이 지원하는 설정과 이를 적용하는 방법은 지원되는 설정 섹션을 참조하세요.
다음 요구 사항에 따라 ConfigMap을 생성합니다.
-
ConfigMap의 이름을
argocd-cm으로 지정합니다. -
기능에서 Argo CD용으로 구성된 네임스페이스(기능 생성 시 Argo CD 설정에서 지정한 네임스페이스)에서 이를 생성하세요. 기본적으로 이 네임스페이스는
argocd네임스페이스입니다. -
app.kubernetes.io/part-of: argocd레이블을 적용합니다. 이 레이블은 필수 항목이며, 업스트림 Argo CD 동작과 일치합니다. -
업스트림 Argo CD와 동일한 필드 형식 및 키를 사용합니다.
다음 예제에서는 Argo CD UI에 배너를 표시하는 설정을 포함하는 ConfigMap 구조를 보여줍니다. data에서 지원되는 다른 설정을 동일한 방식으로 추가합니다.
apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: ui.bannercontent: "Production cluster"
중요
ConfigMap은 보안 저장소가 아닙니다. argocd-cm ConfigMap에 비밀, 자격 증명 또는 기타 민감한 정보를 넣지 마세요.
기능에서 설정을 적용하는 방법
자체 클러스터에서 argocd-cm ConfigMap을 생성하여 Argo CD를 구성합니다. 이 기능은 ConfigMap에서 지원되는 설정을 관리형 Argo CD 인스턴스에 적용합니다. 지원되는 설정만 적용하고, 사용자가 설정한 다른 필드 또는 기능은 무시합니다. 지원되는 설정에 나열되지 않은 설정은 지원되지 않으며, 아무런 영향도 주지 않습니다.
이 기능은 사용자가 설정한 값을 검증합니다. 값이 유효하지 않거나 잘못 구성된 경우 기능은 해당 값을 무시하고 해당 설정에 대한 기본 구성으로 계속 실행됩니다. ConfigMap에서 실수가 있어도 관리형 Argo CD 인스턴스를 손상시키지 않습니다.
참고
이 기능은 클러스터의 argocd-cm ConfigMap에서 구성을 적용합니다. 이 ConfigMap에 대한 쓰기 액세스 권한이 있는 모든 위탁자는 관리형 Argo CD 인스턴스의 구성을 변경할 수 있습니다. 클러스터의 Kubernetes 역할 기반 액세스 제어(RBAC)는 기능 리소스를 제어하는 IAM 권한이 아니라 ConfigMap에 대한 액세스를 제어합니다. 보안 모범 사례로, 신뢰할 수 있는 사용자 및 서비스 계정에만 Argo CD 네임스페이스의 객체를 수정할 수 있는 권한을 부여합니다. Kubernetes RBAC는 리소스 유형별로 권한 범위를 지정하므로, 여전히 다른 사용자에게 필요한 액세스 권한을 부여할 수 있습니다. 예를 들어 개발자가 애플리케이션을 생성 및 관리하도록 허용할 수 있지만, ConfigMap은 수정할 수 없습니다. 이를 통해 argocd-cm 구성 변경을 방지합니다.
Argo CD 기능의 공동 책임 모델, Kubernetes RBAC 및 네임스페이스 격리에 대한 자세한 내용은 EKS 기능에 대한 보안 고려 사항 섹션을 참조하세요. Argo CD 내에서 액세스를 제어하려면 Argo CD 권한 구성 섹션을 참조하세요.
지원되는 설정
다음 섹션에서는 관리형 기능이 지원하는 argocd-cm 설정을 카테고리별로 그룹화하여 나열합니다. 각 설정은 업스트림 Argo CD와 동일한 키 및 형식을 사용합니다. 각 테이블의 값을 적용하는 방법 열에는 값이 기능의 기본 구성에 추가되는지 또는 재정의되는지가 표시됩니다. 각 설정에 대한 전체 설명은 Argo CD 설명서 웹 사이트의 argocd-cm ConfigMap 참조
사용자 인터페이스
이러한 설정은 Argo CD UI를 사용자 지정합니다.
| 설정 | 설명 | 값을 적용하는 방법 |
|---|---|---|
|
|
환경 식별자 또는 유지 관리 알림과 같이 UI 전체에 표시되는 배너의 텍스트입니다. |
재정의 |
|
|
런북 또는 wiki 페이지와 같이 배너가 연결되는 URL입니다. |
재정의 |
|
|
사용자가 배너를 해제하지 못하게 하려면 |
재정의 |
|
|
배너가 나타나는 위치: |
재정의 |
|
|
브랜드 또는 스타일을 위한 사용자 지정 CSS 파일의 URL입니다. CSS는 브라우저에서 실행됩니다. |
재정의 |
리소스 설정
이러한 설정은 기능이 Argo CD에서 관리하는 리소스를 감시, 비교 및 표시하는 방법을 제어합니다.
| 설정 | 설명 | 값을 적용하는 방법 |
|---|---|---|
|
|
Argo CD가 Git을 클러스터와 비교할 때 무시하는 필드(예: Horizontal Pod Autoscaler에서 관리하는 복제본 수)입니다. |
추가 |
|
|
Git을 클러스터와 비교할 때 무시하는 필드로, 모든 리소스 유형에 적용됩니다. |
추가 |
|
|
업데이트 이벤트에서 조정 트리거 여부를 결정할 때 Argo CD가 무시하는 필드로, 로드를 줄입니다. 이벤트는 여전히 생성되며, Argo CD는 이러한 필드의 변경 사항만 무시합니다. |
추가 |
|
|
업데이트 이벤트를 처리할 때 Argo CD가 무시하는 필드로, 모든 리소스 유형에 적용됩니다. |
추가 |
|
|
Argo CD가 전체 필드 교체를 표시하는 대신 정확한 차이를 계산하게 하는 사용자 지정 리소스의 필드 유형(목록, 맵 또는 기본)입니다. |
추가 |
|
|
Lua 스크립트로 정의된, 리소스 유형에 대한 사용자 지정 상태 확인입니다. 이 기능에는 ACK 및 kro 리소스에 대한 기본 제공 상태 확인이 포함되어 있습니다. 사용자 지정 상태 확인을(를) 참조하세요. |
재정의 |
|
|
Argo CD가 감시하지 않는 리소스 유형으로, 이탈률이 높은 유형의 성능을 개선합니다. |
추가 |
|
|
Argo CD가 감시하는 리소스 유형입니다. 설정된 경우 Argo CD는 나열된 유형만 감시합니다. |
추가 |
|
|
Argo CD가 차이를 계산하는 방법을 제어하는 옵션(예: |
재정의 |
|
|
컨트롤러가 RBAC 읽기 권한이 있는 리소스만 감시하는지를 나타냅니다. |
재정의 |
|
|
UI 리소스 보기에 표시할 추가 리소스 레이블입니다. |
재정의 |
|
|
Argo CD가 생성하는 Kubernetes 이벤트에 복사할 애플리케이션 및 프로젝트의 레이블입니다. |
재정의 |
|
|
Argo CD가 생성하는 Kubernetes 이벤트에서 제외할 레이블입니다. |
재정의 |
|
|
UI 또는 CLI에 시크릿을 표시될 때 마스킹할 주석입니다. |
재정의 |
리포지토리 및 도구 설정
이러한 설정은 Argo CD가 매니페스트를 렌더링하는 데 사용하는 매니페스트 도구를 제어합니다.
| 설정 | 설명 | 값을 적용하는 방법 |
|---|---|---|
|
|
Kustomize를 매니페스트 소스 유형으로 활성화할지를 나타냅니다. |
재정의 |
|
|
헬름을 을 매니페스트 소스 유형으로 활성화할지를 나타냅니다. |
재정의 |
|
|
Jsonnet을 매니페스트 소스 유형으로 활성화할지를 나타냅니다. |
재정의 |
|
|
모든 |
재정의 |
지원되는 kustomize.buildOptions 플래그
kustomize.buildOptions의 경우 이 기능은 값을 안전하고 지원되는 플래그 집합으로 필터링합니다. 빌드가 임의의 파일을 읽거나 임의의 코드를 실행하도록 허용하는 플래그는 지원하지 않습니다. 지원되지 않는 플래그 또는 유효하지 않은 값을 개별적으로 삭제하고 지원되는 나머지 플래그를 적용합니다. --flag value 또는 --flag=value 양식으로 플래그를 작성할 수 있습니다.
| 플래그 | 지원되는 값 | 참고 |
|---|---|---|
|
|
|
렌더링된 YAML의 순서만 변경합니다. |
|
|
부울 |
경로에서 관리형 헬름 바이너리를 실행합니다. |
|
|
부울 |
레이블만 추가합니다. |
이 기능은 --load-restrictor, --enable-exec 및 --enable-alpha-plugins를 포함하여 다른 모든 플래그를 삭제합니다.
사용자 지정 상태 확인
Argo CD는 자신이 배포하는 리소스의 상태를 평가합니다. 배포 및 서비스와 같은 표준 Kubernetes 리소스의 경우 Argo CD에 상태 로직이 내장되어 있습니다. Argo CD가 인식하지 못하는 사용자 지정 리소스의 경우 기본 제공 상태 로직이 없으며 상태를 보고하지 않습니다.
사용자 지정 리소스에 상태 확인이 없는 경우 Argo CD는 해당 리소스의 상태를 보고하지 않고 애플리케이션의 전체 상태에서 제외합니다. 따라서 애플리케이션은 리소스가 아직 프로비저닝 중이거나 실패한 경우에도 Healthy를 보고할 수 있습니다. 또한 동기화 순서는 보고된 상태에 따라 달라지므로 해당 리소스가 준비되기 전에 동기화 웨이브가 진행될 수 있습니다.
사용자 지정 상태 확인을 사용하면 사용자 지정 리소스에 대한 상태 로직을 정의할 수 있어 Argo CD가 정확한 상태를 보고하고 배포를 정확하게 정렬합니다. 동일한 구성 키를 사용하여 업스트림 Argo CD에서와 동일한 방식으로 사용자 지정 상태 확인을 정의합니다. 기존 업스트림 스크립트 및 커뮤니티 예제는 수정 없이 Argo CD의 EKS 기능과 함께 작동합니다.
ACK 및 kro에 대한 기본 제공 상태 확인
Argo CD의 EKS 기능에는 AWS Controllers for Kubernetes(ACK) 및 kro(Kube Resource Orchestrator) 리소스에 대한 기본 제공 상태 확인이 포함되어 있습니다. 이러한 리소스는 추가 구성 없이 정확한 상태를 보고합니다.
기능이 ACK 또는 kro 리소스의 상태를 평가하는 방법을 변경하려면 해당 리소스 유형에 대한 사용자 지정 상태 확인을 정의할 수 있습니다. 리소스 유형에 정의한 사용자 지정 상태 확인은 해당 유형에 대한 기본 제공 상태 확인을 재정의합니다.
사용자 지정 상태 확인 작성
다음 형식의 키를 사용하여 argocd-cm ConfigMap에 Lua 스크립트를 추가해 사용자 지정 상태 확인을 정의합니다.
resource.customizations.health.<group>_<kind>
<group>을 사용자 지정 리소스의 API 그룹으로 바꾸고 <kind>를 해당 종류로 바꿉니다. 예를 들어 API 그룹이 example.com이고 종류가 Database인 사용자 지정 리소스의 키는 resource.customizations.health.example.com_Database입니다.
Lua 스크립트는 전역 obj 변수를 통해 리소스 객체에 액세스할 수 있습니다. 스크립트는 status 필드가 Healthy, Progressing, Degraded 또는 Suspended 중 하나로 설정된 테이블을 반환해야 합니다. 또한 스크립트는 선택적 message 필드를 설정하여 설명하는 상태 메시지를 제공할 수도 있습니다.
다음 예제 ConfigMap은 Database 사용자 지정 리소스에 대한 상태 확인을 정의합니다. 스크립트는 리소스의 상태 단계가 Ready이면 Healthy로 보고하고, 그렇지 않으면 Progressing로 보고합니다.
apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: resource.customizations.health.example.com_Database: | hs = {} hs.status = "Progressing" hs.message = "Waiting for the resource to become ready" if obj.status ~= nil then if obj.status.phase == "Ready" then hs.status = "Healthy" hs.message = "Database is ready" end end return hs
상태 확인 스크립트 형식, 기본 제공 상태 확인 목록 및 조정할 수 있는 커뮤니티 예제에 대한 자세한 내용은 Argo CD 설명서 웹사이트의 Resource Health
안전 및 제한 사항
관리형 기능을 사용하면 사용자 지정 상태 확인 스크립트가 격리된 완전관리형 컴퓨팅에서 실행됩니다. 실행 환경은 기능별로 격리되며 클러스터의 데이터 또는 AWS API에 액세스할 수 없습니다. 사용자는 실행 환경의 어떤 부분도 프로비저닝, 패치 또는 운영하지 않습니다.
EKS 기능과 함께 사용할 사용자 지정 상태 확인을 작성할 때 다음 사항에 유의하세요.
-
표준 Lua 라이브러리는 사용할 수 없습니다.
useOpenLibs옵션은 항상 비활성화되어 있으며, 이는 업스트림 Argo CD의 기본값입니다. 스크립트는 운영 체제 또는 파일 시스템에 액세스할 수 없습니다. 스크립트를 표준 Lua 라이브러리를 사용하는 자체 관리형 Argo CD에서 마이그레이션하는 경우 해당 스크립트가 기능에서 동일한 방식으로 실행되지 않을 수 있습니다. 프로덕션 환경에서 사용하기 전에 개발 환경에서 상태 확인 스크립트를 테스트하는 것이 좋습니다.
상태 평가를 일시적으로 사용할 수 없는 경우 기능은 영향을 받는 사용자 지정 리소스의 상태를 제거하는 대신 Progressing으로 보고합니다. 이로 인해 평가가 복구될 때까지 영향을 받는 리소스가 애플리케이션의 상태에 표시됩니다.
사용자 지정 상태 확인을 확인
argocd-cm ConfigMap을 적용하거나 업데이트한 후 상태 확인이 활성 상태인지 확인합니다.
-
Argo CD UI에서 상태 확인을 정의한 종류의 사용자 지정 리소스가 포함된 애플리케이션을 선택합니다. 리소스가 스크립트에서 반환하는 상태를 보고하는지 확인합니다. 또는
argocd app get을 실행하여 리소스의 상태를 검토합니다.<application-name> -
리소스가 예상 상태를 보고하지 않는 경우 다음을 확인합니다.
-
ConfigMap이 이름은
argocd-cm이고 기능에서 Argo CD에 대해 구성된 네임스페이스에 있습니다. -
ConfigMap에 필수
app.kubernetes.io/part-of: argocd레이블이 있습니다. -
상태 확인 키가 리소스 유형에 올바른
<group>_<kind>를 사용합니다.
-