Playball Logo

Command Palette

Search for a command to run...

목차 열기

GitOps 구성 개요

역할: 3-레포 분리 구조와 클러스터 내부 App-of-Apps 패턴을 한눈에 보여주는 개요

301 Terraform302 Bootstrap303 Helm/Values GitOps 의 3-레포 분리 + ArgoCD Root App → Infra Apps / Application Apps 의 App-of-Apps 패턴으로 클러스터 내부 리소스를 관리합니다.

내부 구성

문서 이미지를 큰 화면으로 확인합니다.


레포 역할 분리

301 Terraform

AWS 인프라 리소스를 코드로 관리합니다. EKS 클러스터, VPC, RDS, ElastiCache, IAM 역할, IRSA, Karpenter SQS 등 클러스터 외부 리소스를 담당합니다.

301-terraform/
├── environments/
│   ├── dev/          # On-Prem Dev (변수만)
│   ├── staging/      # AWS EKS Staging
│   └── prod/         # AWS EKS Prod
├── modules/          # 재사용 모듈
│   ├── eks/
│   ├── vpc/
│   ├── rds/
│   ├── elasticache/
│   ├── karpenter/
│   ├── dns/
│   ├── cdn/
│   ├── waf/
│   ├── bastion/
│   ├── audit-events/
│   ├── security-events/
│   └── ...
├── stacks/
│   ├── root/         # 공통 리소스 (ECR, IAM Bots, SSO)
│   │   ├── ecr/
│   │   ├── iam-bots/
│   │   └── sso/
│   ├── staging/
│   │   └── cdn-set/
│   └── prod/
│       └── cdn-set/
└── tf-backend/       # S3 + DynamoDB 백엔드 초기화

302 Bootstrap

클러스터 초기 상태(ArgoCD 없음)에서 최초 1회 실행합니다. Dev(On-Prem)와 EKS는 인프라 구조가 달라 부트스트랩 내용이 다릅니다.

302-bootstrap/
└── environments/
    ├── ca-staging/         # EKS Staging
    │   ├── scripts/
    │   │   └── install-all.sh
    │   └── argo-init/
    │       ├── root-application.yaml
    │       ├── external-secret-github.yaml
    │       └── external-secret-rbac.yaml
    ├── dev/                # On-Prem kubeadm
    │   └── scripts/
    │       ├── cert-manager/   # Let's Encrypt TLS
    │       ├── ddns/           # DuckDNS 갱신
    │       ├── eso/            # ESO (IAM User 기반)
    │       ├── sealed-secrets/ # Sealed Secrets
    │       ├── argocd/
    │       └── ...
    ├── ca-prod/
    └── prod/

EKS 부트스트랩 순서 (install-all.sh)

단계작업비고
1External Secrets Operator (ESO) 설치Helm, IRSA 설정 포함
2ClusterSecretStore 생성AWS Secrets Manager 연결
3Karpenter 설치Public ECR OCI 차트
4ArgoCD 설치Helm, values-argocd-install.yaml 적용
5GitHub SSH Key ExternalSecret 적용303 레포 접근용
6ArgoCD RBAC ConfigMap 설정Google OAuth 권한 매핑
7Root Application 등록ArgoCD가 303 레포 동기화 시작

Dev(On-Prem) 부트스트랩 순서

On-Prem은 AWS IRSA를 쓸 수 없고 공인 IP도 고정이 아니라 별도 처리가 필요합니다. 컴포넌트별 스크립트를 순서대로 실행합니다.

단계작업비고
1cert-manager 설치Let's Encrypt ClusterIssuer — ACM 대신
2DDNS 설정DuckDNS CronJob — 공유기 공인 IP 변경 대응
3ESO 설치 + ClusterSecretStore 생성IAM User(bot-kubeadm) 자격증명 기반 (IRSA 불가)
4ArgoCD 설치Helm
5Root Application 등록ArgoCD가 303 dev/ 경로 동기화 시작

이후부터는 303 레포의 변경이 ArgoCD를 통해 자동 배포됩니다.

303 Helm/Values GitOps

ArgoCD가 지속적으로 동기화하는 레포입니다. 환경별 values와 공통 차트 템플릿을 분리하여 관리합니다.

303-helm/
├── common-charts/         # 환경 공통 차트 템플릿
│   ├── apps/
│   │   ├── java-service/  # Java 백엔드 공통 차트
│   │   └── ai-service/    # AI 서비스 공통 차트
│   └── infra/
│       ├── namespaces/
│       ├── rbac/
│       ├── network-policies/
│       ├── istio/
│       ├── istio-security/
│       ├── kafka/
│       ├── kyverno-policies/
│       ├── monitoring/
│       └── ...
├── ca-staging/            # Staging 환경별 리소스 (AWS EKS)
│   ├── root/
│   │   ├── Chart.yaml
│   │   ├── templates/     # App-of-Apps 템플릿
│   │   └── values.yaml    # 전체 앱 목록 + Sync Wave 정의
│   ├── charts/            # Staging 전용 차트
│   │   ├── alb-ingress/
│   │   ├── karpenter/
│   │   ├── istio/
│   │   └── ...
│   └── values/            # 환경별 values 파일
│       ├── core/
│       ├── apps/
│       ├── infra/
│       ├── istio/
│       ├── monitoring/
│       ├── security/
│       └── messaging/
└── dev/                   # Dev 환경별 리소스 (On-Prem kubeadm)
    ├── root/              # App-of-Apps 진입점
    ├── charts/            # Dev 전용 차트
    │   ├── core/
    │   │   ├── ddns/      # DuckDNS 갱신 CronJob
    │   │   └── ecr-creds/ # ECR imagePullSecret 갱신
    │   ├── data/
    │   │   ├── postgresql/
    │   │   ├── redis/
    │   │   ├── redis-ai/
    │   │   ├── kafka-ui/
    │   │   └── cloudbeaver/
    │   ├── istio/
    │   │   └── swagger-oauth/
    │   └── security/
    │       ├── cert-manager/
    │       ├── oauth2-proxy/
    │       ├── service-secrets/
    │       └── ai-service-secrets/
    └── values/            # 환경별 values 파일

흐름 요약

  1. 301 Terraform → AWS 리소스(VPC/EKS/RDS 등) 프로비저닝
  2. 302 Bootstrap → 클러스터 최초 설치 (ArgoCD + Root App 등록, 1회성)
  3. 303 Helm/Values Git 레포 → ArgoCD가 지속 동기화
  4. Root App → Infra Apps · Application Apps로 App-of-Apps 확산
    • Infra Apps: Istio, ESO, Karpenter, Kyverno, 관측성 스택
    • Application Apps: 백엔드 / AI 서비스 (ApplicationSet으로 배포)

App-of-Apps 구조 및 Sync Wave 상세 → ArgoCD App-of-Apps