Argo CD의 EKS 기능과 자체 관리형 Argo CD 비교 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

Argo CD의 EKS 기능과 자체 관리형 Argo CD 비교

Argo CD의 EKS 기능은 EKS에서 실행되는 완전관리형 Argo CD 환경을 제공합니다. EKS 기능과 자체 관리형 솔루션의 일반적인 비교는 EKS 기능 및 고려 사항 섹션을 참조하세요. 이 주제에서는 인증, 다중 클러스터 관리, 업스트림 기능 지원을 비롯한 Argo CD 특정 차이에 중점을 둡니다.

업스트림 Argo CD와의 차이

Argo CD의 EKS 기능은 업스트림 Argo CD를 기반으로 하지만 액세스, 구성 및 AWS 서비스와 통합하는 방식에서 차이가 납니다.

RBAC 및 인증: 이 기능은 세 가지 RBAC 역할(관리자, 편집자, 뷰어)과 함께 제공되며 Argo CD의 기본 제공 인증 대신 인증에 AWS Identity Center를 사용합니다. 기능의 rbacRoleMapping 파라미터를 통해 역할 매핑을 구성하여 Identity Center 그룹을 Argo CD의 argocd-rbac-cm ConfigMap이 아닌 Argo CD 역할에 매핑합니다. Argo CD UI는 자체 직접 URL(EKS 콘솔에서 클러스터의 기능 탭 아래 찾기)로 호스팅되며, API 액세스는 IAM을 통해 AWS 인증 및 권한 부여를 사용합니다.

클러스터 구성: 이 기능은 로컬 클러스터 또는 허브 및 스포크 토폴로지를 자동으로 구성하지 않습니다. 사용자가 배포 대상 클러스터 및 EKS 액세스 항목을 구성합니다. 이 기능은 EKS 클러스터 ARN(Kubernetes API 서버 URL 아님)을 사용하는 배포 대상으로 Amazon EKS 클러스터만 지원합니다. 기능은 로컬 클러스터(kubernetes.default.svc)를 배포 대상으로 자동 추가하지 않습니다. 기능이 생성된 동일한 클러스터에 배포하려면 ARN을 사용하여 해당 클러스터를 명시적으로 등록합니다.

단순화된 원격 클러스터 액세스: 이 기능은 EKS 액세스 항목을 사용하여 Argo CD에 원격 클러스터에 대한 액세스 권한을 부여함으로써 다중 클러스터 배포를 단순화하므로 서비스 계정에 대한 IAM 역할(IRSA)을 구성하거나 교차 계정 IAM 역할 수임을 설정할 필요가 없습니다. 또한 이 기능은 VPC 피어링 또는 특수 네트워킹 구성 없이도 완전한 프라이빗 EKS 클러스터에 대한 투명한 액세스를 제공합니다. AWS는 Argo CD 기능과 프라이빗 원격 클러스터 간 연결을 자동으로 관리합니다.

직접 AWS 서비스 통합: 이 기능은 기능 역할의 IAM 권한을 통해 AWS 서비스와의 직접 통합을 제공합니다. 리포지토리 구성을 생성하지 않고도 애플리케이션 리소스에서 직접 CodeCommit 리포지토리, ECR 헬름 차트 및 CodeConnections를 참조할 수 있습니다. 그러면 인증이 단순화되고 AWS 서비스에 대한 별도의 자격 증명을 관리할 필요가 없습니다. 세부 정보는 리포지토리 액세스 구성 섹션을 참조하세요.

네임스페이스 지원: 이 기능을 사용하려면 Argo CD Application, ApplicationSet 및 AppProject 사용자 지정 리소스를 생성해야 하는 단일 네임스페이스를 지정해야 합니다.

참고

이 네임스페이스 제한 사항은 Argo CD의 자체 사용자 지정 리소스(Application, ApplicationSet, AppProject)에만 적용됩니다. 애플리케이션 워크로드는 대상 클러스터의 모든 네임스페이스에 배포할 수 있습니다. 예를 들어 argocd 네임스페이스를 사용하여 기능을 생성하는 경우 모든 애플리케이션 CR은 argocd 네임스페이스에서 생성되어야 하지만, 해당 애플리케이션은 default, production, staging 또는 기타 모든 네임스페이스에 워크로드를 배포할 수 있습니다.

참고

관리형 기능에는 CLI 사용 및 AppProject 구성에 대한 특정 요구 사항이 있습니다.

  • Argo CD CLI를 사용하는 경우 네임스페이스 접두사를 포함하여 애플리케이션 지정: argocd app sync namespace/appname

  • AppProject 리소스는 프로젝트가 Applications에 대해 감시할 수 있는 네임스페이스를 정의하기 위해 .spec.sourceNamespaces를 지정해야 함(일반적으로 기능을 생성할 때 지정한 네임스페이스로 설정됨)

  • 리소스 추적 주석은 namespace_appname:group/kind:namespace/name 형식을 사용합니다.

지원되지 않는 기능: 다음 기능은 관리형 기능에서 사용할 수 없습니다.

  • 사용자 지정 매니페스트 생성을 위한 Config 관리 플러그인(CMP)

  • 리소스 상태 평가를 위한 사용자 지정 Lua 스크립트(표준 리소스에 대한 기본 제공 상태 확인이 지원됨)

  • 알림 컨트롤러

  • 사용자 지정 SSO 공급자(AWS Identity Center를 통한 서드 파티 페더레이션 ID를 포함하여 AWS Identity Center만 지원됨)

  • UI 확장 및 사용자 지정 배너

  • argocd-cm, argocd-params 및 기타 구성 ConfigMaps에 대한 직접 액세스

  • 동기화 제한 시간 수정(120초로 수정됨)

호환성: Application 및 ApplicationSet는 매니페스트를 변경하지 않고도 업스트림 Argo CD와 동일하게 작동합니다. 이 기능은 동일한 Kubernetes API 및 CRD를 사용하므로 kubectl 같은 도구가 동일한 방식으로 작동합니다. 이 기능은 Application 및 ApplicationSet, 자동 동기화가 포함된 GitOps 워크플로, 다중 클러스터 배포, 동기화 정책(자동, 정리, 자체 복구), 동기화 웨이브 및 후크, 표준 Kubernetes 리소스에 대한 상태 평가, 롤백 기능, Git 리포지토리 소스(HTTPS 및 SSH), 헬름, Kustomize 및 일반 YAML 매니페스트, GitHub 앱 자격 증명, 다중 테넌시용 프로젝트, 리소스 제외 및 포함을 완벽하게 지원합니다.

관리형 기능과 함께 Argo CD CLI 사용

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

사전 조건

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

구성

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

  1. EKS 콘솔(클러스터의 기능 탭 아래)에서 또는 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://||')
  2. Argo CD UI(설정계정관리자새 토큰 생성)에서 계정 토큰을 생성한 다음 환경 변수로 설정하세요.

    export ARGOCD_AUTH_TOKEN="your-token-here"
중요

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

  1. 필요한 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 참조를 참조하세요.

마이그레이션 경로

자체 관리형 Argo CD에서 관리형 기능으로 마이그레이션할 수 있습니다.

  1. 현재 Argo CD 구성에서 지원되지 않는 기능(알림 컨트롤러, CMP, 사용자 지정 상태 확인, UI 확장) 검토

  2. 충돌을 방지하기 위해 자체 관리형 Argo CD 컨트롤러를 0개의 복제본으로 조정

  3. 클러스터에서 Argo CD 기능 리소스 생성

  4. 기존 Application, ApplicationSet 및 AppProject 내보내기

  5. 리포지토리 자격 증명, 클러스터 보안 암호 및 리포지토리 자격 증명 템플릿(repocreds) 마이그레이션

  6. GPG 키, TLS 인증서 또는 SSH 알려진 호스트를 사용하는 경우 이 구성도 마이그레이션합니다.

  7. 클러스터 이름 또는 EKS 클러스터 ARN을 사용하도록 destination.server 필드 업데이트

  8. 관리형 Argo CD 인스턴스에 적용

  9. 애플리케이션이 올바르게 동기화 중인지 확인

  10. 자체 관리형 Argo CD 설치 폐기

관리형 기능은 동일한 Argo CD API 및 리소스 정의를 사용하므로 기존 매니페스트는 최소한의 수정으로도 작동합니다.

다음 단계