LabHub

CGOA — GitOps 인증 어소시에이트 · 진짜 Argo CD 에서 확인하기 · 실습

git 을 고치면 클러스터가 따라온다

LabHub 에서 이어서 보기

이 실습은 진짜 Argo CD 에서 돕니다

VM 안에 k3s + Argo CD + git 서버가 실제로 떠 있습니다. git 에 커밋하면
Argo CD 가 그것을 읽어 정말로 배포하고, 누가 손으로 고치면 **정말로
되돌립니다.**

CGOA 과정의 다른 실습이 도는 가짜 클러스터에는 Argo CD 가 없습니다. 그래서
드리프트도 자가 치유도 일어날 수 없었습니다 — GitOps 에서 배울 것의
전부가 빠져 있던 셈입니다.

처음 뜨는 데 4~5분 걸립니다.

준비된 것

작업 사본   /srv/gitops              여기서 고치고 커밋·푸시합니다원격        git://gitd.gitsrv.svc.cluster.local:9418/app.gitArgo CD     argocd 네임스페이스

git 서버는 클러스터 안의 파드입니다. /srv/bare 를 hostPath 로 마운트하고
있어서, VM 에서 푸시하면 Argo CD 가 곧바로 봅니다.

목표

GitOps 의 네 가지 동작을 직접 일으켜 확인합니다. 배포, 변경 추적,
드리프트 감지, 자가 치유입니다.

왜 중요한가

GitOps 의 핵심 주장은 하나입니다. **git 이 유일한 진실의 원천이고, 클러스터는
그 사본이다.**

그 주장이 성립하려면 두 가지가 필요합니다.

두 번째가 특히 중요합니다. 자가 치유가 없으면 kubectl 로 직접 고친 것이
그대로 남고, git 과 클러스터가 조용히 갈라집니다. 그러면 git 은 더 이상
진실이 아니고, 다음 배포 때 그 차이가 한꺼번에 터집니다.

단계

1. /srv/gitopsapp/deploy.yaml(네임스페이스 shop, 디플로이먼트 web, 레플리카 2)을 만들고 푸시한 뒤, git 서버가 그것을 내주는지 /root/cgo/repo.txt 에 담으세요.
2. shop Application 을 만들어(automated·prune·selfHeal) 실제로 배포되는 것을 /root/cgo/app.txt 에 담으세요.
3. git 에서 레플리카를 3 으로 고치고 푸시해, 클러스터가 따라오는 것을 /root/cgo/gitchange.txt 에 담으세요. kubectl 로 직접 고치지 마세요.
4. selfHeal끄고 kubectl 로 레플리카를 바꿔 OutOfSync 가 되는 것을 /root/cgo/drift.txt 에 담으세요.
5. selfHeal다시 켜서 되돌아오는 것을 /root/cgo/selfheal.txt 에 담으세요.
6. git 에 ConfigMap extra 를 넣어 배포한 뒤 git 에서 지워 prune 이 클러스터에서도 지우는 것을 /root/cgo/prune.txt 에 담으세요.
7. 배포 이력을 확인해 /root/cgo/history.txt 에 담고, GitOps 에서 되돌리기가 무엇인지 적으세요.
8. /root/cgo/report.mdselfheal=yes, prune=yes, replicas= 세 줄과 설명을 쓰세요.

참고

단계 8개

  1. git 이 진실의 원천이 되려면
  2. Argo 가 git 을 읽어 배포한다
  3. git 을 고치면 따라온다
  4. 손으로 고치면 갈라진다
  5. 다시 켜면 되돌아온다
  6. git 에서 지우면 클러스터에서도 지운다
  7. 되돌리기는 git 을 되돌리는 것이다
  8. 무엇을 배웠나