LabHub
배우기 러닝패스 코스

GitOps 와 ArgoCD · Argo CD 설정을 배포 전에 읽어 본다 · 실습

옵션을 넣었는데 안 먹는다 — 설정을 배포 전에 읽어 본다

LabHub 에서 이어서 보기

목표

argocd-cm 을 한 항목씩 늘려 가며 argocd admin settings validateArgo CD 가 읽어 낸 값을 확인하고, 오타 난 키가 어떻게 조용히 사라지는지 본다. 저장소 Secret 과 소유 표시 방식은 kwok 클러스터에 직접 올린다.

왜 중요한가

Argo CD 를 선언으로 관리하면 argocd-cm 한 장이 플랫폼 전체의 동작을 정한다. 그런데 이 파일은 평범한 ConfigMap 이라 스키마가 없다 — 키 이름을 틀려도 거절되지 않고, 그냥 그 설정이 없는 것이 된다. 이 조용함이 문제를 오래 살아남게 한다. argocd admin settings validate 는 파일을 검사하는 도구가 아니라 도구가 그 파일에서 무엇을 읽어 냈는지 절별로 돌려주는 도구다. 그래서 쓰는 법이 중요하다 — '✅ 가 떴으니 괜찮다' 가 아니라 내가 넣은 값이 되돌아 나오는가를 본다. 설정 변경에 이 출력의 전후 diff 를 붙이는 습관 하나가 '왜 이 옵션이 안 먹지' 라는 질문을 없앤다.

단계

1. /root/ga-settings/argocd-cm.yamldata: {} 인 argocd-cm ConfigMap 으로 만들고, argocd admin settings validate --argocd-cm-path /root/ga-settings/argocd-cm.yaml 의 출력을 /root/ga-settings/baseline.txt 에 저장하세요. 다섯 개 절(accounts·general·kustomize·repositories·resource-overrides)이 모두 보여야 합니다.
2. /root/ga-settings/argocd-cm-accounts.yaml 에 계정 두 개를 선언하세요 — accounts.ciapiKey, login, accounts.readonlyapiKey 입니다. --group accounts 만 검사한 출력을 /root/ga-settings/accounts.txt 에 저장하세요. 계정 수가 몇으로 나오는지 보세요.
3. /root/ga-settings/argocd-cm-kustomize.yaml 은 2단계 계정에 더해 kustomize.buildOptions--enable-helm 으로 둡니다. --group kustomize 출력을 /root/ga-settings/kustomize.txt 에 저장하세요.
4. /root/ga-settings/argocd-cm-typo.yaml 을 3단계 파일과 똑같이 만들되 키 이름만 kustomize.buildOption (끝의 s 를 뺀 단수)으로 쓰세요. --group kustomize 출력을 /root/ga-settings/typo.txt 에 저장하고, 3단계 출력과 견줘 보세요.
5. /root/ga-settings/argocd-cm-scope.yaml 은 3단계 내용에 resource.exclusions 를 더합니다. 항목 두 개를 두세요 — 하나는 apiGroups cilium.ioCiliumIdentity, 다른 하나는 코어 그룹(빈 문자열)의 Event 이고, 둘 다 clusters"*" 입니다. /root/ga-settings/scope.txt--group kustomize--group resource-overrides 를 함께 검사한 출력을 저장하세요.
6. /root/ga-settings/argocd-cm-track.yaml 은 5단계 내용에 application.resourceTrackingMethod: annotationapplication.instanceLabelKey: labhub.io/instance 를 더합니다. 그다음 kwok 클러스터에 네임스페이스 ga-settings/root/ga-settings/deploy.yaml(Deployment web, 이미지 nginx:1.25)을 올리고, gitops-argocd-platform-team-a-production-cluster-seoul-web-frontend-app 라는 긴 이름을 라벨 값으로 붙여 보세요 — 실패한 명령의 출력을 표준오류까지 합쳐 /root/ga-settings/label-limit.txt 에 저장합니다. 같은 값을 주석 argocd.argoproj.io/tracking-id 로는 붙일 수 있습니다. 그렇게 하세요.
7. /root/ga-settings/argocd-cm-repo.yaml 은 6단계 내용에 repositories 목록(url https://example.com/ga-manifests.git, name ga-manifests, type git)을 더합니다. --group repositories 출력을 /root/ga-settings/repo.txt 에 저장하세요. 그다음 지금 권장되는 방식으로 같은 저장소를 /root/ga-settings/repo-secret.yaml 에 Secret ga-settings-repo(네임스페이스 argocd)로 쓰고 kwok 클러스터에 적용하세요 — 라벨 argocd.argoproj.io/secret-type: repository 가 반드시 있어야 하고, stringDatatype·name·url 을 둡니다.
8. /root/ga-settings/argocd-cm-final.yaml 은 7단계 내용에 url(https://argocd.example.com)과 dex.config(github 커넥터 하나)를 더합니다. 전체 절을 검사한 출력을 /root/ga-settings/final.txt 에 저장하고, diff /root/ga-settings/baseline.txt /root/ga-settings/final.txt 의 출력을 /root/ga-settings/settings-diff.txt 에 저장하세요. diff 는 종료 코드가 0 이 아니므로 정답지에서 멈추지 않게 조심하세요.

참고

단계 8개

  1. 빈 설정이 무엇을 돌려주는지부터 본다
  2. 계정을 선언으로 늘린다
  3. 읽어 낸 값을 그대로 돌려주는 절
  4. 키 이름을 틀리면 아무도 알려 주지 않는다
  5. 아예 보지 않을 것을 정한다
  6. 소유 표시를 라벨에서 주석으로 옮기는 이유
  7. 저장소는 ConfigMap 이 아니라 Secret 으로 선언한다
  8. 바꾸기 전과 후를 나란히 놓는다