반응형
대규모 조직이나 여러 환경(Dev/Prod)을 운영하는 경우, 각각의 Kubernetes 클러스터에 Argo CD를 설치하는 것은 관리 포인트가 많아지고 운영이 복잡해질 수 있습니다.
이 글에서는 하나의 중앙 Argo CD 인스턴스로 여러 Kubernetes 클러스터를 관리하는 Multi-Cluster GitOps 환경 구성 방법을 소개합니다.
목적
- Infra 전용 Argo CD 인스턴스를 통해 여러 환경(EKS Dev/Prod 등)의 리소스를 통합 관리
- Argo CD의 cluster add 기능을 활용해 멀티 클러스터로 애플리케이션 배포
- 동일한 GitOps Workflow를 모든 클러스터에 일관성 있게 적용
ArgoCD Multi-Cluster Setting
1. 네트워크 연결 확인
- 멀티 클러스터 구성을 위해서는 Argo CD가 대상 클러스터 API 서버에 접근할 수 있어야 합니다.
- 전제 조건: Argo CD가 설치된 클러스터에서 다른 클러스터의 Kubernetes API Server에 통신 가능해야 합니다.
2. Argo CD에서 클러스터 추가 (Same Account)
argocd login <ARGOCD_SERVER> --sso
# 클러스터 추가
argocd cluster add arn:aws:eks:ap-northeast-2:<account-id>:cluster/<cluster-name> --name <cluster-alias>
# 확인
argocd cluster list
3. Cross-Account 클러스터 연결 (다른 AWS 계정)
운영 환경처럼 AWS 계정이 서로 다를 경우, 추가로 IAM Role 기반의 cross-account 설정이 필요합니다.
1) 대상 계정 (클러스터 소유 계정)에 IAM Role 생성
예시: eks-infra-argocd Role
- 신뢰 관계 설정
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<argocd-account-id>:role/eks-infra-argocd"
},
"Action": "sts:AssumeRole"
}
]
}
2) aws-auth ConfigMap에 Role 추가
해당 Role이 EKS 클러스터에 접근할 수 있도록 aws-auth에 등록합니다.
# Namespace: kube-system
# ConfigMap: aws-auth
mapRoles: |
- rolearn: arn:aws:iam::<account-id>:role/eks-infra-argocd
username: eks-infra-argocd
groups:
- system:masters
4. Argo CD에서 Cross-Account 클러스터 등록
Argo CD가 있는 계정에서 대상 클러스터를 등록합니다.
# SSO 로그인
argocd login <ARGOCD_SERVER> --sso
# Role 기반 클러스터 등록
argocd cluster add arn:aws:eks:ap-northeast-2:<target-account-id>:cluster/<cluster-name> \
--name <cluster-alias> \
--aws-role-arn arn:aws:iam::<argocd-account-id>:role/eks-infra-argocd
5. 애플리케이션 배포 테스트
애플리케이션 배포 테스트
이제 등록된 클러스터 대상으로 배포가 가능합니다.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nginx-dev
spec:
destination:
server: https://
namespace: default
project: default
source:
repoURL: https://github.com/your-org/infra-manifests
targetRevision: main
path: nginx
syncPolicy:
automated:
prune: true
selfHeal: true
- server: 필드는 argocd cluster list에서 확인한 API 서버 주소
- 각 클러스터마다 Application 하나씩 만들어 배포 가능
반응형
'DEV > CI CD' 카테고리의 다른 글
| 기존 멀티클러스터 배포 방식을 App of Apps 패턴으로 전환한 이유 (0) | 2025.11.27 |
|---|---|
| Keycloak + ArgoCD 연동 (0) | 2024.01.29 |
| 무중단 배포 (0) | 2023.01.16 |
