Argo CD용 EKS 캐퍼빌리티와 자체 관리 Argo CD 비교

Argo CD용 EKS 캐퍼빌리티와 자체 관리 Argo CD 비교

EKS용 Argo CD 캐퍼빌리티와 자체 관리 Argo CD의 차이를 설명합니다.

출처: 문서

본문

Argo CD용 EKS 캐퍼빌리티는 EKS에서 실행되는 완전 관리형 Argo CD 경험을 제공합니다. EKS 캐퍼빌리티와 자체 관리 솔루션의 일반적인 비교는 EKS 캐퍼빌리티 고려 사항을 참고하세요. 이 항목은 인증, 멀티 클러스터 관리, 업스트림 기능 지원 등 Argo CD 특유의 차이점에 초점을 맞춥니다.

업스트림 Argo CD와의 차이점

Argo CD용 EKS 캐퍼빌리티는 업스트림 Argo CD를 기반으로 하지만 접근, 구성, AWS 서비스 통합 방식에서 다릅니다.

  • RBAC와 인증 - 캐퍼빌리티는 세 가지 RBAC 역할(admin, editor, viewer)을 제공하며 Argo CD의 내장 인증 대신 AWS Identity Center를 사용합니다. Identity Center 그룹을 Argo CD 역할에 매핑하려면 Argo CD의 argocd-rbac-cm ConfigMap이 아니라 캐퍼빌리티의 rbacRoleMapping 매개변수로 역할 매핑을 구성하세요. Argo CD UI는 자체 직접 URL(클러스터의 Capabilities 탭 아래 EKS 콘솔에서 확인 가능)로 호스팅되며, API 접근은 IAM을 통한 AWS 인증과 권한 부여를 사용합니다.
  • 클러스터 구성 - 캐퍼빌리티는 로컬 클러스터나 허브 앤 스포크 토폴로지를 자동으로 구성하지 않습니다. 배포 대상 클러스터와 EKS 접근 항목을 직접 구성합니다. 캐퍼빌리티는 배포 대상으로 EKS 클러스터 ARN(Kubernetes API 서버 URL이 아니라)을 사용하는 Amazon EKS 클러스터만 지원합니다. 캐퍼빌리티는 로컬 클러스터(kubernetes.default.svc)를 배포 대상으로 자동 추가하지 않으므로, 캐퍼빌리티가 생성된 것과 같은 클러스터에 배포하려면 해당 클러스터를 ARN으로 명시적으로 등록하세요.
  • 간소화된 원격 클러스터 접근 - 캐퍼빌리티는 EKS 접근 항목을 사용해 Argo CD에 원격 클러스터 접근을 부여하므로 멀티 클러스터 배포를 간소화하며, IAM Roles for Service Accounts(IRSA) 구성이나 교차 계정 IAM 역할 가정 설정이 필요 없습니다. 캐퍼빌리티는 또한 VPC 피어링이나 특수 네트워킹 구성 없이 완전 프라이빗 EKS 클러스터에 대한 투명한 접근을 제공합니다. AWS가 Argo CD 캐퍼빌리티와 프라이빗 원격 클러스터 간의 연결을 자동으로 관리합니다.
  • 직접 AWS 서비스 통합 - 캐퍼빌리티는 캐퍼빌리티 역할의 IAM 권한을 통해 AWS 서비스와 직접 통합합니다. Repository 구성을 만들지 않고 Application 리소스에서 CodeCommit 리포지토리, ECR Helm 차트, CodeConnections를 직접 참조할 수 있습니다. 이는 인증을 간소화하고 AWS 서비스에 대한 별도 자격 증명 관리의 필요를 없앱니다. 자세한 내용은 리포지토리 접근 구성을 참고하세요.
  • 네임스페이스 지원 - 캐퍼빌리티는 Argo CD Application, ApplicationSet, AppProject 커스텀 리소스를 생성해야 하는 단일 네임스페이스를 지정해야 합니다.

참고

이 네임스페이스 제한은 Argo CD 자체의 커스텀 리소스(Application, ApplicationSet, AppProject)에만 적용됩니다. 애플리케이션 워크로드는 모든 대상 클러스터의 모든 네임스페이스에 배포할 수 있습니다. 예를 들어 네임스페이스 argocd로 캐퍼빌리티를 만들면 모든 Application CR은 argocd 네임스페이스에 생성해야 하지만, 해당 Application은 default, production, staging 또는 다른 네임스페이스에 워크로드를 배포할 수 있습니다.

참고

관리형 캐퍼빌리티에는 CLI 사용과 AppProject 구성에 대한 특정 요구 사항이 있습니다.

  • Argo CD CLI를 사용할 때 네임스페이스 접두사를 사용해 애플리케이션을 지정하세요: argocd app sync namespace/appname
  • AppProject 리소스는 프로젝트가 Application을 감시할 수 있는 네임스페이스를 정의하려면 .spec.sourceNamespaces를 지정해야 합니다(보통 캐퍼빌리티를 만들 때 지정한 네임스페이스로 설정)
  • 리소스 추적 어노테이션은 namespace_appname:group/kind:namespace/name 형식을 사용합니다
  • 지원되지 않는 기능 - 관리형 캐퍼빌리티에서는 다음 기능을 사용할 수 없습니다.

    • 커스텀 매니페스트 생성을 위한 Config Management Plugins(CMP)
    • Notifications 컨트롤러
    • 커스텀 SSO 프로바이더(AWS Identity Center만 지원되며, AWS Identity Center를 통한 타사 페더레이션 ID를 포함)
    • UI 확장과 커스텀 배너
    • argocd-params와 대부분의 구성 ConfigMap에 대한 직접 접근(argocd-cm 연 필드의 하위 집합은 지원됨. Argo CD 설정 구성 참고)
    • 동기화 타임아웃 수정(120초로 고정)
  • 호환성 - Application과 ApplicationSet은 매니페스트를 변경하지 않고 업스트림 Argo CD와 동일하게 작동합니다. 캐퍼빌리티는 동일한 Kubernetes API와 CRD를 사용하므로 kubectl 같은 도구도 동일하게 작동합니다. 캐퍼빌리티는 Application과 ApplicationSet, 자동 동기화가 있는 GitOps 워크플로, 멀티 클러스터 배포, 동기화 정책(automated, prune, self-heal), 동기화 웨이브와 훅, 표준 Kubernetes 리소스의 상태(health) 평가, 롤백 기능, Git 리포지토리 소스(HTTPS 및 SSH), Helm, Kustomize, 일반 YAML 매니페스트, GitHub 앱 자격 증명, 멀티 테넌시용 프로젝트, 리소스 제외와 포함을 완전히 지원합니다.

관리형 캐퍼빌리티에서 Argo CD CLI 사용

Argo CD CLI는 대부분의 작업에서 업스트림 Argo CD와 동일하게 작동하지만 인증과 클러스터 등록은 다릅니다.

사전 요구 사항

업스트림 설치 지침에 따라 Argo CD CLI를 설치합니다.

구성

환경 변수를 사용해 CLI를 구성합니다.

EKS 콘솔(클러스터의 Capabilities 탭 아래) 또는 AWS CLI에서 Argo CD 서버 URL을 가져옵니다. https:// 접두사는 제거해야 합니다.

export ARGOCD_SERVER=$(aws eks describe-capability \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --query 'capability.configuration.argoCd.serverUrl' \
  --output text \
  --region region-code | sed 's|^https://||')

Argo CD UI(Settings → Accounts → admin → Generate New Token)에서 계정 토큰을 생성한 후 환경 변수로 설정합니다.

export ARGOCD_AUTH_TOKEN="your-token-here"

중요

이 구성은 초기 설정과 개발 워크플로에 관리자 계정 토큰을 사용합니다. 프로덕션 사용 사례에서는 최소 권한 원칙을 따르기 위해 프로젝트 범위 역할과 토큰을 사용하세요. 프로젝트 역할과 RBAC 구성에 대한 자세한 내용은 Argo CD 권한 구성을 참고하세요.

필요한 gRPC 옵션을 설정합니다.

export ARGOCD_OPTS="--grpc-web"

이 환경 변수들이 설정되면 argocd login 명령 없이 Argo CD CLI를 사용할 수 있습니다.

주요 차이점

관리형 캐퍼빌리티에는 다음과 같은 CLI 제한이 있습니다.

  • argocd admin 명령은 지원되지 않습니다(직접 파드 접근 필요).
  • argocd login은 지원되지 않습니다(계정 또는 프로젝트 토큰 대신 사용).
  • argocd cluster add는 EKS 클러스터 ARN이 있는 --aws-cluster-name 플래그가 필요합니다.

예시: 클러스터 등록

애플리케이션 배포용 EKS 클러스터를 등록합니다.

# Get the cluster ARN
CLUSTER_ARN=$(aws eks describe-cluster \
  --name my-cluster \
  --query 'cluster.arn' \
  --output text)

# Register the cluster
argocd cluster add $CLUSTER_ARN \
  --aws-cluster-name $CLUSTER_ARN \
  --name in-cluster \
  --project default

완전한 Argo CD CLI 문서는 Argo CD CLI reference를 참고하세요.

마이그레이션 경로

자체 관리 Argo CD에서 관리형 캐퍼빌리티로 마이그레이션할 수 있습니다.

  1. 현재 Argo CD 구성을 지원되지 않는 기능(Notifications 컨트롤러, CMP, 커스텀 상태(health) 검사, UI 확장)이 있는지 검토합니다.
  2. 충돌을 방지하기 위해 자체 관리 Argo CD 컨트롤러를 0개 복제본으로 축소합니다.
  3. 클러스터에 Argo CD 캐퍼빌리티 리소스를 만듭니다.
  4. 기존 Application, ApplicationSet, AppProject를 내보냅니다.
  5. 리포지토리 자격 증명, 클러스터 시크릿, 리포지토리 자격 증명 템플릿(repocreds)을 마이그레이션합니다.
  6. GPG 키, TLS 인증서, SSH known hosts를 사용한다면 이러한 구성을 마이그레이션합니다.
  7. destination.server 필드를 클러스터 이름 또는 EKS 클러스터 ARN으로 업데이트합니다.
  8. 관리형 Argo CD 인스턴스에 적용합니다.
  9. 애플리케이션이 올바르게 동기화되는지 확인합니다.
  10. 자체 관리 Argo CD 설치를 폐기합니다.

관리형 캐퍼빌리티는 동일한 Argo CD API와 리소스 정의를 사용하므로 기존 매니페스트는 최소한의 수정으로 작동합니다.

다음 단계

  • Argo CD 캐퍼빌리티 생성 - Argo CD 캐퍼빌리티 리소스 생성
  • Argo CD 사용하기 - 첫 애플리케이션 배포
  • Argo CD 고려 사항 - AWS Identity Center 통합 구성

더 알아보기 (Learn more)