ArgoCD ApplicationSet
을 사용하면 여러 Kubernetes 클러스터에 동일한 앱을 쉽게 배포할 수 있습니다. ApplicationSet
는 ArgoCD Helm 차트에 의해 자동으로 설치됩니다. ApplicationSet
은 정의된 기준에 따라 여러 ArgoCD Applications
를 생성합니다. 여러 유형의 기준을 사용할 수 있는데 그 중 하나가 ArgoCD가 관리하는 Kubernetes 클러스터 목록입니다.
아래 스크립트를 실행하면
git 레포지토리에 미리 올려둔 yaml 파일이 우리가 관리하는 3개의 클러스터에 동일하게 배포됩니다. {{name}} 변수를 사용하여 각각의 클러스터 이름을 접두어로 설정함으로써 식별을 용이하게 하였습니다.
cat <<EOT> application-set-nginx.yaml
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: nginx-app
namespace: argocd
spec:
generators:
- clusters: {}
template:
metadata:
name: '{{name}}-nginx-app'
spec:
project: default
source:
repoURL: https://github.com/codelab-kr/nginx-app.git
targetRevision: HEAD
path: yaml
destination:
server: '{{server}}'
namespace: demo
syncPolicy:
automated:
selfHeal: true
syncOptions:
- CreateNamespace=true
EOT
k apply -f application-set-nginx.yaml
ArgoCD 대시보드로 돌아가봅시다. ArgoCD가 관리하는 클러스터는 관리 클러스터 1개와 워크로드 클러스터 2개 총 3개입니다.
스크립트가 잘 반영되었는지 확인합니다. 3개의 ArgoCD 응용 프로그램이 생성되고 자동으로 동기화되었습니다. nginx-app이 현재 모든 클러스터에서 실행되고 있네요.