Argo
Argo CD๋ ์ฟ ๋ฒ๋คํฐ์ค(Kubernetes) ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ์๋ํํ๋ ์คํ์์ค ๋๊ตฌ์ ๋๋ค. GitOps ์์น์ ๋ฐ๋ฅด๋ฉฐ, Git ์ ์ฅ์์ ์ ์ฅ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ ๋ฐฐํฌ ์๋ํ๋ฅผ ์ํ ์ค์ ์ ๊ด๋ฆฌํฉ๋๋ค.
Argo CD์ ์ฃผ์ ๊ธฐ๋ฅ
1. ์ง์์ ์ธ ๋ฐฐํฌ
Argo CD๋ ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐฐํฌํ ๋๋ง๋ค, Git ์ ์ฅ์์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ๋ฐฐํฌํฉ๋๋ค.
2. ์ ์ธ์ ์ธ ๋ฐฐํฌ
Argo CD๋ ์ ์ธ์ ์ธ ๋ฐฐํฌ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฐฐํฌ ์์ ์ ์ํํด์ผ ํ๋์ง ๋ช ์ํ๋ ๋์ , ์ด๋ค ์ํ๊ฐ ๋์ด์ผ ํ๋์ง ์ค๋ช ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์์คํ ์ ์ํ๋ฅผ ๋ ์ ์ดํดํ๊ณ , ๋ ์ฝ๊ฒ ๋ฐฐํฌ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
3. ๋ค์ํ ๋ฐฐํฌ ๋ฐฉ์
Argo CD๋ ๋ค์ํ ๋ฐฐํฌ ๋ฐฉ์์ ์ง์ํฉ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ์์, ํฌ๋ฆ(Helm) ์ฐจํธ, Kustomize ๋ฑ ๋ค์ํ ๋ฐฐํฌ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ, ์ฌ์ฉ์ ์ ์ ๋ฐฐํฌ ๋๊ตฌ๋ฅผ ํตํฉํ ์ ์์ต๋๋ค.
4. ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น
Argo CD๋ ๋ฐฐํฌ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ์ถ์ ํ๊ณ , ๋ฐฐํฌ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. ๋ํ, ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ๋ถ์ํ ์ ์์ผ๋ฏ๋ก, ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์์ต๋๋ค.
Argo CD์ ์ฅ์
1. ์์ ์ ์ธ ๋ฐฐํฌ
Argo CD๋ GitOps ์์น์ ๋ฐ๋ฅด๋ฏ๋ก, ์์ ์ ์ธ ๋ฐฐํฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค. Git ์ ์ฅ์์ ์ ์ฅ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ๋ฐฐํฌํ๊ธฐ ๋๋ฌธ์, ์ค์๋ ์ธ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
2. ์ฌ์ฉ์ ์นํ์ ์ธ UI
Argo CD๋ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ UI๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ ์ํ๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์์ผ๋ฉฐ, ๋ฐฐํฌ ์ด๋ ฅ์ ์ถ์ ํ ์ ์์ต๋๋ค.
3. ์ ์ฐํ ์ค์
Argo CD๋ ๋ค์ํ ๋ฐฐํฌ ๋ฐฉ์์ ์ง์ํ๋ฏ๋ก, ์ฌ์ฉ์๋ ๋ค์ํ ํ๊ฒฝ์์ ์ ์ฐํ๊ฒ ๋ฐฐํฌ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ํ, ์ฌ์ฉ์ ์ ์ ๋ฐฐํฌ ๋๊ตฌ๋ฅผ ํตํฉํ ์ ์๊ธฐ ๋๋ฌธ์, ๋์ฑ ์ ์ฐํ ๋ฐฐํฌ ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
argo ์ค์น
> echo "Install Argo CD"
> kubectl create namespace argocd
> kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/ha/install.yaml
> echo "Install Argo CLi"
> mkdir ~/bin
> curl -sSL -o ~/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
> chmod +x ~/bin/argocd
> echo "External application"
> kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
> echo "Get password"
> $ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
{{password}}
> kubectl get svc argocd-server -n argocd
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server LoadBalancer 10.96.176.107 <pending> 80:32038/TCP,443:31129/TCP 8m24s
{{Master IP}} :31129 ๋ก ์ ์ํ ์ ์๋ค.
๋ง๋ฌด๋ฆฌ
Argo CD๋ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์ ์์ ์ ์ด๊ณ ์ ์ฐํ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ์ํ ์คํ์์ค ๋๊ตฌ์ ๋๋ค. GitOps ์์น์ ๋ฐ๋ฅด๋ฉฐ, ์ฌ์ฉ์ ์นํ์ ์ธ UI์ ๋ค์ํ ๋ฐฐํฌ ๋ฐฉ์์ ์ง์ํฉ๋๋ค.
Last updated