개념

ArgoCD?

Config 레포를 계속 감시하다가
매니페스트가 바뀌면 클러스터에 자동 반영해주는 도구

"클러스터 실제 상태 = Config 레포 상태"
이걸 유지해주는 게 ArgoCD의 역할

Synced   = 클러스터 상태가 Config 레포와 일치
OutOfSync = 클러스터 상태가 Config 레포와 다름
Healthy  = Pod가 정상 동작 중

설치 전 확인

kubectl get nodes 로 클러스터 연결됐는지 먼저 확인
연결 안 된 상태로 설치 시도하면 아무것도 안됨

aws eks update-kubeconfig 실행했는지 체크!

ArgoCD 설치

설치 방법은 두 가지

방법 1: kubectl apply (빠르고 간단)
  공식 설치 매니페스트를 apply
  찾아볼 것: "argocd install kubectl"
  argocd 네임스페이스에 설치됨

방법 2: Helm (권장)
  찾아볼 것: "argocd helm chart install"
  values.yaml로 설정 커스터마이즈 가능

설치 후 확인

설치하면 argocd 네임스페이스에
여러 Pod가 뜨는데 전부 Running이어야 함

확인 방법:
kubectl get pods -n argocd

주요 컴포넌트:
- argocd-server       → UI + API
- argocd-repo-server  → Git 레포 감시
- argocd-application-controller → 클러스터 상태 관리

ArgoCD UI 접근

argocd-server는 기본적으로 클러스터 내부에서만 접근 가능
로컬에서 접근하려면 포트포워딩이 필요

kubectl port-forward svc/argocd-server -n argocd 8080:443

브라우저에서 https://localhost:8080 접속

초기 비밀번호 확인 방법:
kubectl -n argocd get secret argocd-initial-admin-secret \
  -o jsonpath="{.data.password}" | base64 -d

ID: admin
PW: 위에서 가져온 값

⚠️ 첫 로그인 후 비밀번호 꼭 변경할 것

Config 레포 연결

ArgoCD가 Private 레포를 읽으려면
인증 정보를 등록해야 함

방법:
ArgoCD UI → Settings → Repositories → Connect Repo

연결 방식:
HTTPS + GitHub PAT 사용
(CI에서 쓰는 PAT와 같은 거 써도 되고
별도로 발급해도 상관무)

연결 성공하면 초록 체크 표시가 뜸

Application 등록

ArgoCD에게 "이 레포의 이 경로를 감시해" 라고 알려주는 것

등록 방법 2가지:
1. UI에서 직접 클릭
2. 매니페스트 파일로 등록 (권장)

매니페스트 파일 위치:
team3-config/argocd/application.yaml

파일에 들어가야 하는 내용:
- 어떤 레포를 감시할지 (repoURL)
- 어떤 브랜치를 볼지 (targetRevision: main)
- 어떤 경로를 볼지
  dev:  path: overlays/dev/
  prod: path: overlays/prod/
- 어느 클러스터에 배포할지
- 어느 네임스페이스에 배포할지 (app)
- Sync 정책 설정

dev / prod Application을 각각 따로 등록
  dev:  name: foldy-dev  → overlays/dev/ 감시
  prod: name: foldy-prod → overlays/prod/ 감시
  
⚠️ 현재 단계로서는 automated sync 비활성화
   manual sync로 흐름 먼저 이해 필요
   실수로 namespace 전체 삭제될 수 있음...