이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
Argo CD 설정 구성
Argo CD용 EKS 기능을 사용하면 완전관리형 Argo CD 환경을 확보할 수 있습니다. 업스트림 Argo CD는 다양한 선택적 설정 및 기능을 제공하며, Argo CD의 EKS 기능은 그중 일부를 지원합니다. 지원되는 설정의 경우 클러스터의 argocd-cm ConfigMap을 통해 업스트림 Argo CD와 동일한 방식으로 구성합니다. AWS는 해당 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와 동일한 필드 형식 및 키를 사용합니다.
다음 예제는 ConfigMap 구조를 보여줍니다.
apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: # Supported settings go here (see the following sections)
중요
ConfigMap은 보안 저장소가 아닙니다. argocd-cm ConfigMap에 비밀, 자격 증명 또는 기타 민감한 정보를 넣지 마세요.
지원되는 설정
관리형 기능은 다음 argocd-cm 필드를 지원합니다.
| 필드 | 설명 |
|---|---|
|
|
사용자 지정 리소스에 대한 사용자 지정 상태 확인 스크립트입니다. 사용자 지정 상태 확인을(를) 참조하세요. |
사용자 지정 상태 확인
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>를 사용합니다.
-