GitOps 멀티 클러스터

지원 버전: ArgoCD 2.10+, EKS 1.28+, External Secrets Operator 0.9+ 마지막 업데이트: 2026년 2월 23일

< 이전: CI 파이프라인 | 목차 | 다음: GitOps 자동화 >


이 문서에서는 ArgoCD를 사용하여 여러 EKS 클러스터에 애플리케이션을 배포하고, IAM Identity Center(AWS SSO)와 통합하여 중앙 집중식 인증 및 권한 관리를 구현하는 방법을 설명합니다.

목차


멀티클러스터 아키텍처

멀티클러스터 GitOps 아키텍처는 중앙 관리 클러스터(Hub)에서 여러 워크로드 클러스터(Spoke)를 관리하는 Hub-Spoke 모델을 기반으로 합니다.

Hub-Spoke 모델 개요

Hub-Spoke 모델의 장점

장점
설명

중앙 집중식 관리

단일 ArgoCD 인스턴스에서 모든 클러스터의 배포를 관리하여 운영 복잡성 감소

일관된 배포

ApplicationSet을 통해 여러 클러스터에 동일한 정책과 구성을 일관되게 적용

감사 추적

모든 배포 변경 사항이 Git에 기록되어 완전한 감사 추적 가능

권한 분리

Hub 클러스터에서만 배포 권한을 관리하여 보안 강화

재해 복구

클러스터 간 독립성을 유지하면서 신속한 장애 복구 가능

클러스터 등록 패턴


ArgoCD Terraform 설치

Terraform을 사용하여 고가용성(HA) ArgoCD를 설치하고 구성합니다.

Helm Provider 설정

HA ArgoCD 배포

변수 정의


NodePool GitOps 관리

EKS Auto Mode의 NodePool은 Kubernetes CRD(Custom Resource Definition)로 정의되므로, Terraform이 아닌 ArgoCD를 통해 GitOps 방식으로 관리하는 것이 적합합니다. 이를 통해 NodePool 변경 사항을 Git에서 추적하고, 여러 클러스터에 일관되게 적용할 수 있습니다.

왜 NodePool을 ArgoCD로 관리하는가?

Terraform 관리
ArgoCD 관리

인프라 프로비저닝에 적합

Kubernetes 리소스 관리에 적합

상태 파일 관리 필요

Git이 단일 진실의 원천

수동 terraform apply 필요

자동 동기화 및 자체 치유

클러스터별 별도 관리

멀티클러스터 일관성 유지

Blue 클러스터 NodePool 예제

Green 클러스터 NodePool 예제

Data Processing NodePool (전용)

NodePool 관리용 ArgoCD Application


ApplicationSet 전략

ApplicationSet은 여러 클러스터나 환경에 애플리케이션을 효율적으로 배포하기 위한 ArgoCD의 기능입니다. 다양한 Generator를 사용하여 동적으로 Application을 생성합니다.

Cluster Generator

등록된 모든 클러스터 또는 특정 레이블의 클러스터에 애플리케이션을 배포합니다.

Git Generator

Git 저장소의 디렉토리 구조 또는 파일을 기반으로 Application을 생성합니다.

Matrix Generator

여러 Generator를 조합하여 클러스터 × 애플리케이션 매트릭스를 생성합니다.

PR Generator (프리뷰 환경)

Pull Request 기반으로 프리뷰 환경을 자동 생성합니다.

Sync Wave 기반 배포

sync-wave 어노테이션을 사용하여 리소스 배포 순서를 제어합니다.


IAM Identity Center SSO

IAM Identity Center(이전 AWS SSO)를 ArgoCD와 통합하여 중앙 집중식 인증 및 권한 관리를 구현합니다.

SAML 2.0 구성

ArgoCD SAML 설정

그룹-역할 매핑

Kubernetes RBAC 통합

SSO 트러블슈팅

일반적인 SSO 문제 및 해결 방법:

문제
원인
해결 방법

"Invalid redirect_uri"

SAML ACS URL 불일치

IAM Identity Center 앱 설정에서 ACS URL 확인

"User not found"

그룹 속성 미전달

SAML 응답에 groups 속성 포함 확인

"Access denied"

RBAC 매핑 오류

policy.csv 그룹 이름 정확히 일치 확인

"Certificate error"

CA 인증서 만료

SAML 메타데이터 재다운로드 및 업데이트


시크릿 관리

External Secrets Operator(ESO)를 사용하여 AWS Secrets Manager의 시크릿을 Kubernetes Secret으로 동기화합니다.

External Secrets Operator 설치

SecretStore / ClusterSecretStore 설정

ExternalSecret CRD 예제

시크릿 로테이션 전략

ESO Pod Identity 설정


요약

이 문서에서 다룬 주요 내용:

  1. 멀티클러스터 아키텍처: Hub-Spoke 모델을 통한 중앙 집중식 GitOps 관리, 클러스터 등록 및 관리 패턴

  2. ArgoCD Terraform 설치: Helm을 통한 HA ArgoCD 배포, Server/Controller/Repo Server/Redis 설정, Ingress 및 메트릭 구성

  3. NodePool GitOps 관리: Kubernetes CRD인 NodePool을 ArgoCD로 관리하는 이유, 클러스터별 NodePool 설정, 데이터 처리 전용 NodePool

  4. ApplicationSet 전략: Cluster/Git/Matrix/PR Generator 활용, 멀티클러스터 배포, Sync Wave 기반 순차 배포

  5. IAM Identity Center SSO: SAML 2.0 구성, 그룹-역할 매핑, Kubernetes RBAC 통합, 트러블슈팅

  6. 시크릿 관리: External Secrets Operator 설치, SecretStore/ClusterSecretStore 설정, ExternalSecret CRD, 시크릿 로테이션


관련 문서


퀴즈

이 장에서 배운 내용을 테스트하려면 ArgoCD 멀티클러스터 퀴즈를 풀어보세요.

마지막 업데이트