개요

이 문서는 하나의 ArgoCD 서버(com 클러스터)를 통해 여러 AKS 클러스터(dev, prod)에 GitOps 방식으로 애플리케이션을 자동 배포하는 환경을 구축하는 과정을 설명합니다.

 

목표

  • com 클러스터: ArgoCD 서버를 호스팅하는 중심 클러스터
  • dev 클러스터: 개발 환경 배포 대상
  • prod 클러스터: 운영 환경 배포 대상
  • GitOps 기반 자동화: Git 저장소 변경 시 자동으로 각 클러스터에 배포

아키텍처

설정 단계

1. ArgoCD 설치 (com 클러스터)

  • argocd 네임스페이스에 Helm으로 배포
  • agentpool: infrapools 노드에 스케줄링
  • cluster-secrets.yaml에 다른 클러스터 인증정보를 설정

2. 클러스터 자격증명 수집

  • Dev/Prod 클러스터에 argocd-manager 서비스계정 생성
  • bearerToken 및 ca.crt 추출
  • Secret 형태로 com 클러스터에 등록

3. Git 저장소 등록

apiVersion: v1
kind: Secret
metadata:
  name: helm-kustomize-techtf
  namespace: argocd
type: Opaque
stringData:
  url: https://github.com/<username>/helm-kustomize-techtf.git
  username: <username>
  password: <password>

4. ApplicationSet 설정

  • applicationsets-dev.yaml, applicationsets-prod.yaml 파일 생성
  • 클러스터/애플리케이션 매트릭스 방식으로 구성
  • CreateNamespace, automated sync, self-heal, prune 설정 포함

5. dev/prod 클러스터의 ArgoCD 비활성화

  • dev/prd 클러스터의 argocd/kustomization.yaml은 주석 처리하거나 제거

배포 절차

# com 클러스터로 전환
kubectl config use-context aks-techtf-com-01-admin

# ArgoCD 설치 및 설정
kubectl apply -k clusters/aks-techtf-com-01/argocd/

# 클러스터 인증 정보 적용
kubectl apply -f clusters/aks-techtf-com-01/argocd/cluster-secrets.yaml

# ApplicationSet 적용
kubectl apply -f clusters/aks-techtf-com-01/argocd/applicationsets-dev.yaml
kubectl apply -f clusters/aks-techtf-com-01/argocd/applicationsets-prod.yaml

GitOps Workflow

  1. Git 저장소 변경
  2. ArgoCD가 변경 감지
  3. ApplicationSet에서 클러스터별 Applications 생성
  4. 대상 클러스터에 자동 동기화 (자동 생성 + Self-Heal + Prune)

Git 저장소에 정의된 applicationsets-dev.yaml, applicationsets-prod.yaml을 통해 ArgoCD가 자동으로 클러스터별 Application을 생성하고 동기화한 화면입니다.

  • prometheus, logging 각각의 애플리케이션이 dev/prd 클러스터로 자동 배포되었고, 상태는 모두 Synced + Healthy 입니다.

 

기존에는 dev, prod 클러스터마다 ArgoCD를 따로 관리하다 보니 운영 상 복잡도와 관리 비용이 높아졌습니다. 이번 구성에서는 하나의 ArgoCD 서버(com 클러스터)에서 모든 환경(dev, prod)을 GitOps 방식으로 통합 배포하도록 구성함으로써 다음과 같은 효과를 얻을 수 있었습니다.

  • 중앙 집중형 배포 관리: 클러스터별 ArgoCD 중복 제거
  • 환경 분리 유지 + 통합 제어: 환경별 ApplicationSet으로 관리
  • Git 기반 완전 자동화: 개발-운영 간 일관성 확보
  • 확장성 향상: 향후 staging, qa 등의 클러스터 추가도 용이

무엇보다도, Git 저장소만으로 클러스터 전체를 운영할 수 있다는 점에서 GitOps 방식의 실용성을 다시금 체감할 수 있었습니다. 작업이 많아 미뤄왔던 효율성 개선 과제를 하나씩 해결해나가며, 보다 편리하고 안정적인 운영 구조로 전환해가고 있습니다.