[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๋ฅผ ํ•˜๋ฉด ์ด์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ฐ˜์˜์ด ๋œ๋‹ค.


๊ทธ๋ ‡๋‹ค.



์ฐธ์กฐ
https://nayoungs.tistory.com/entry/ArgoCD%EB%9E%80-ArgoCD-%EA%B0%9C%EC%9A%94-%EB%B0%8F-%EC%84%A4%EC%B9%98