Argo CD로 지속적 배포
Argo CD로 지속적 배포
Argo CD를 사용해 Kubernetes에서 GitOps 지속적 전달을 구현하는 방법을 설명합니다.
출처: 문서
본문
Argo CD는 Kubernetes를 위한 선언적 GitOps 지속적 전달 도구입니다. Argo CD를 사용하면 여러 클러스터와 환경에서 애플리케이션의 배포와 수명 주기 관리를 자동화할 수 있습니다. Argo CD는 Git 리포지토리, Helm 레지스트리(HTTP 및 OCI), OCI 이미지 등 여러 소스 유형을 지원해 보안 및 규정 준수 요구 사항이 다른 조직에 유연성을 제공합니다.
EKS 캐퍼빌리티를 통하면 Argo CD가 AWS에 의해 완전 관리되므로, 클러스터에 Argo CD 컨트롤러와 그 의존성을 설치하고 유지 관리하며 확장할 필요가 없습니다.
Argo CD 작동 방식
Argo CD는 애플리케이션 소스(Git 리포지토리, Helm 레지스트리, 또는 OCI 이미지)가 원하는 애플리케이션 상태를 정의하는 정보 원천이 되는 GitOps 패턴을 따릅니다. Argo CD Application 리소스를 만들 때 애플리케이션 매니페스트를 포함한 소스와 대상 Kubernetes 클러스터 및 네임스페이스를 지정합니다. Argo CD는 소스와 클러스터의 실시간 상태를 지속적으로 모니터링하며, 변경 사항을 자동으로 동기화해 클러스터 상태가 원하는 상태와 일치하도록 합니다.
참고
Argo CD용 EKS 캐퍼빌리티에서 Argo CD 소프트웨어는 워커 노드가 아니라 AWS 제어 플레인에서 실행됩니다. 즉, 워커 노드가 Git 리포지토리나 Helm 레지스트리에 직접 접근할 필요가 없습니다. 캐퍼빌리티가 AWS 계정에서 소스 접근을 처리합니다.
Argo CD는 세 가지 주요 리소스 유형을 제공합니다.
- Application - Git 리포지토리에서 대상 클러스터로의 배포를 정의합니다.
- ApplicationSet - 멀티 클러스터 배포를 위해 템플릿에서 여러 Application을 생성합니다.
- AppProject - Application에 논리적 그룹화와 접근 제어를 제공합니다.
예시: Argo CD Application 생성
다음 예시는 Argo CD Application 리소스를 생성하는 방법을 보여줍니다.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: guestbook
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/argoproj/argocd-example-apps.git
targetRevision: HEAD
path: guestbook
destination:
name: in-cluster
namespace: guestbook
syncPolicy:
automated:
prune: true
selfHeal: true
참고
클러스터를 등록할 때 사용한 클러스터 이름으로
destination.name을 사용하세요(로컬 클러스터는in-cluster).destination.server필드는 EKS 클러스터 ARN에서도 작동하지만, 가독성을 위해 클러스터 이름을 사용하는 것이 좋습니다.
Argo CD의 이점
Argo CD는 Git 리포지토리에서 애플리케이션 구성을 정의하고 Argo CD가 원하는 상태와 일치하도록 애플리케이션을 자동으로 동기화하는 GitOps 워크플로를 구현합니다. 이 Git 중심 접근 방식은 모든 변경에 대한 완전한 감사 추적을 제공하고, 손쉬운 롤백을 가능하게 하며, 기존 코드 리뷰 및 승인 프로세스와 자연스럽게 통합됩니다. Argo CD는 Git의 원하는 상태와 클러스터의 실제 상태 사이의 드리프트를 자동으로 감지하고 조정해, 배포가 선언된 구성과 일관성을 유지하도록 합니다.
Argo CD를 사용하면 단일 Argo CD 인스턴스에서 여러 클러스터에 걸쳐 애플리케이션을 배포하고 관리할 수 있어 멀티 클러스터 및 멀티 리전 환경의 운영을 간소화합니다. Argo CD UI는 시각화와 모니터링 기능을 제공해 애플리케이션의 배포 상태, 상태(health), 이력을 볼 수 있습니다. UI는 AWS Identity Center(이전 AWS SSO)와 통합해 원활한 인증과 권한 부여를 제공하므로, 기존 ID 관리 인프라로 접근을 제어할 수 있습니다.
EKS 관리형 캐퍼빌리티의 일부로서 Argo CD는 AWS에 의해 완전 관리되어 Argo CD 인프라를 설치, 구성, 유지 관리할 필요가 없습니다. AWS가 확장, 패치, 운영 관리를 처리하므로 팀은 도구 유지 관리 대신 애플리케이션 전달에 집중할 수 있습니다.
AWS Identity Center와의 통합
EKS 관리형 캐퍼빌리티는 Argo CD와 AWS Identity Center 간의 직접 통합을 제공해 사용자에게 원활한 인증과 권한 부여를 가능하게 합니다. Argo CD 캐퍼빌리티를 활성화하면 AWS Identity Center 통합을 구성해 Identity Center 그룹과 사용자를 Argo CD RBAC 역할에 매핑할 수 있으며, 이를 통해 Argo CD에서 애플리케이션에 접근하고 관리할 수 있는 사용자를 제어할 수 있습니다.
다른 EKS 관리형 캐퍼빌리티와의 통합
Argo CD는 다른 EKS 관리형 캐퍼빌리티와 통합됩니다.
- AWS Controllers for Kubernetes(ACK) - Argo CD를 사용해 여러 클러스터에 걸쳐 ACK 리소스의 배포를 관리하여 AWS 인프라에 GitOps 워크플로를 적용할 수 있습니다.
- kro(Kube Resource Orchestrator) - Argo CD를 사용해 여러 클러스터에 걸쳐 kro 구성을 배포하여 Kubernetes 자산 전반에 일관된 리소스 구성을 가능하게 합니다.
Argo CD 시작하기
Argo CD용 EKS 캐퍼빌리티를 시작하려면 다음을 수행하세요.
- Argo CD가 소스에 접근하고 애플리케이션을 관리하는 데 필요한 권한이 있는 IAM 캐퍼빌리티 역할을 생성하고 구성합니다.
- AWS 콘솔, AWS CLI, 또는 선호하는 infrastructure as code 도구를 통해 EKS 클러스터에 Argo CD 캐퍼빌리티 리소스를 생성합니다.
- 애플리케이션 배포를 위해 리포지토리 접근을 구성하고 클러스터를 등록합니다.
- 선언적 소스에서 애플리케이션을 배포하도록 Application 리소스를 생성합니다.