[k8s] ArgoCD
ArgoCD๋ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ฝ๋ ๋ฐฐํฌ(CD) ๋๊ตฌ๋ค.
์ด๊ฑด ์ผ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ฌ์ฉํ๋๊ฑด ์๋๊ณ , ์ฟ ๋ฒ๋คํฐ์ค์ yaml ๊ตฌ์ฑ๋ค์ git ๊ธฐ๋ฐ์ผ๋ก ์ด์ํ๊ณ ๋ฐฐํฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ ์์ด๋ค.
์ด๋ฐ ์์ด๋ค.
์ถ์ฒ: ๊ณต์ ๋ฌธ์
git ๊ธฐ๋ฐ์ผ๋ก ์ธํ๋ผ ์ด์์ ํ๋ค๋ ์ ์์ gitops๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
์ด์ ํ๋ฒ ๊ตฌ์ฑํ๊ณ ์จ๋ณด๋ฉด์ ์ตํ๋ณด๋๋ก ํ๊ฒ ๋ค.
Pod ๊ตฌ์ฑ
๋จผ์ ์ฟ ๋ฒ์ argocd ์ธํ
์ pod๋ค๋ก ๋ฐฐํฌํด์ผ ํ๋ค.
๊ทธ๋์ผ ์ค์์์ ํต์ ๋ ํ๊ณ , ์ ์ด ์ฝ์๋ ์ ๊ณต์ ํ ์ ์๋ค.
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

๊ทธ๋ผ ์ด๋ ๊ฒ ๋ฆฌ์์ค๋ฅผ ์กฐํํ ์๊ฐ ์๋ค.
kubectl get all -n argocd
๋ญ๊ฐ ์ฐธ ๋ง๋ค.
๋ค ๋๋ฉด ์๋น์ค์ ๋ก๋๋ฐธ๋ฐ์ ์ค์ ์ ๊ฑด๋๋ ค์ ์ธ๋ถ๋ก ๊ณต๊ฐ๊ฐ ๋๊ฒ ํด์ฃผ์.
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
์ด๋์ผ ์ ์ด ์ฝ์์ ์ ์์ ํ ์ ์๋ค.

ํจ์ค์๋ ์ด๊ธฐํ
argocd ์ฝ์์ ๋ก๊ทธ์ธํ ์ ์๋ ๊ณ์ ๊ณผ ํจ์ค์๋๋ฅผ ๋ง๋ค์ด์ค์ผ ํ๋ค.
์ฐ์ argocd-cli๋ฅผ ์ค์นํ๊ณ
sudo curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64

ํจ์ค์๋ ์ด๊ธฐํ๋ฅผ ํ๋ฒ ๋๋ ค์ค๋ค.
argocd admin initial-password -n argocd
๊ทธ๋ผ ์ต์ด ํจ์ค์๋๊ฐ ๋จ์ด์ง๋๋ฐ
๋ก๊ทธ์ธํ๊ณ

update-password๋ก ํจ์ค์๋๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค.

์ถ๊ฐ: ๋ณด์ ์ค์
์๊น ๋ก๋๋ฐธ๋ฐ์ ๋ฌ์์ ์ธ๋ถ IP๋ฅผ ๊ณต๊ฐํ์๋๋ฐ, ์ ๋ฐ๊ฑด ํน์ IP๋ง ์ ์ํ ์ ์๋๋ก ์ธ๋ฐ์ด๋๋ฅผ ๊ฑธ์ด์ฃผ๋๊ฒ ์ข๋ค.
๋ฐฉ๋ฒ์ ๋ณ๋ ํฌ์คํธ๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค.
https://blog.naver.com/sssang97/223101386886
์ฝ์ ์ ์
์๋ฌดํผ ์๊น ์ด์ด๋จ๋ ์ธ๋ถ IP๋ก ์ ์์ ํ๋ฉด ์๋์ ๊ฐ์ ์ฝ์์ด ๋ฐ ๊ฒ์ด๋ค.

๋ก๊ทธ์ธํ๋ฉด ๋์๋ณด๋๋ก ์ง์ ํ๋ค.
์ฌ๊ธฐ์ ์ด์ ์ด๊ฒ์ ๊ฒ ์ถ๊ฐํ๋ฉด ๋๋ค.
Git ๋ ํฌ์งํ ๋ฆฌ ๊ตฌ์ฑ
์ด์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ฑ๋กํด๋ณด์.
์ฐ์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํ๋ ํ๊ณ

์๋ธ๋๋ ํฐ๋ฆฌ์ ๋ฐฐํฌํ yaml์ ์ ์ ํ ๋ฐฐ์นํ๋ค.

Git ์ฐ๊ฒฐ
private repository๋ฅผ argocd์์ ์ ๊ทผํ๋ ค๋ฉด, ๋น์ฐํ ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ๋ค.
์ธํ
์์ ๋ ํฌ์งํ ๋ฆฌ๋ก ์ด๋ํ๊ณ

Connect Repo,
๋ ํฌ์งํ ๋ฆฌ ๊ฒฝ๋ก์ ๋ก๊ทธ์ธ์ ํ์ํ username์ ํจ์ค์๋๋ฅผ ๋ฃ์ด์ค๋ค.
Github์ ๊ฒฝ์ฐ ํจ์ค์๋๋ ๊ทธ๋ฅ ํจ์ค์๋๊ฐ ์๋๋ผ personal access tokens์ด์ด์ผ ํ๋ค.
๊ทธ๋์ ์ด๋ ๊ฒ ์ฐ๊ฒฐ์ด ์ฑ๊ณตํ๋ฉด ๋ ๊ฒ์ด๋ค.
Repository ๋ฑ๋ก
์ด์ ๋ง์ง๋ง์ด๋ค.
์ด๋ฆ๊ณผ ํ๋ก์ ํธ๋ช
์ ๊ณ ๋ฅด๊ณ
๋ ํฌ์งํ ๋ฆฌ ์ ๋ณด ๋ฃ๊ณ , ๋ฐฉ๊ธ ๋ง๋ ์๋ธ๋๋ ํฐ๋ฆฌ "test"๋ฅผ Path๋ก ๋ฃ์ด์คฌ๋ค.
์ค์ ๋ก Pod๊ฐ ๊ตฌ์ฑ๋ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ๋ค.
๋๊ฐ ์ด๋ ๊ฒ ์ฒดํฌํด์ฃผ๊ณ ์์ฑํด์ฃผ๋ฉด
์ด๋ฐ์์ผ๋ก ์์ฑ์ด ๋๋ค.

์ฌ๊ธฐ์ Sync๋ฅผ ๋๋ฅด๋ฉด


์ค์ ๋ก ๋ฐ์์ด ๋ ๊ฒ์ด๋ค.

์ ๋ด๋ค.

๋ณ๊ฒฝ
Pod ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด, git์ผ๋ก commit์ ์น ๋ค์์

Refresh๋ฅผ ๋๋ฅด๋ฉด ๊ฐฑ์ ์ด ๋๋ค.
์ฌ๊ธฐ์ ๋ Sync๋ฅผ ํ๋ฉด ์ด์ ๊ณผ ๋์ผํ๊ฒ ๋ฐ์์ด ๋๋ค.
๊ทธ๋ ๋ค.