๐น Argo CD ์ค์น ๊ฐ์
Argo CD๋ฅผ Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- kubectl์ ์ด์ฉํ ์๋ ์ค์น
- YAML ๋งค๋ํ์คํธ๋ฅผ ์ง์ ์ ์ฉ
- Helm Chart๋ฅผ ํ์ฉํ ๋ฐฐํฌ (์ถ์ฒ ๋ฐฉ๋ฒ)
์ด๋ฒ ๊ธ์์๋ Helm Chart๋ฅผ ํ์ฉํ์ฌ Argo CD๋ฅผ Kubernetes์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
Helm์ ์ฌ์ฉํ๋ฉด ์ค์น๊ฐ ๊ฐํธํ๊ณ , ๊ตฌ์ฑ์ ์ปค์คํฐ๋ง์ด์งํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์
๋๋ค.
๐น Argo CD ์ค์น๋ฅผ ์ํ ์ฌ์ ์ค๋น ์ฌํญ
โ 1. Kubernetes ํด๋ฌ์คํฐ ์ค๋น
Argo CD๋ Kubernetes ํ๊ฒฝ์์ ์คํ๋๋ฏ๋ก, ์ฌ์ ์ ํด๋ฌ์คํฐ๊ฐ ์ค๋น๋์ด ์์ด์ผ ํฉ๋๋ค.
# ํด๋ฌ์คํฐ ์ํ ํ์ธ
kubectl cluster-info
kubectl get nodes
โ 2. Helm ์ค์น ํ์ธ
Helm์ Kubernetes์ ํจํค์ง ๋งค๋์ ๋ก, Helm Chart๋ฅผ ์ด์ฉํด Argo CD๋ฅผ ์์ฝ๊ฒ ์ค์นํ ์ ์์ต๋๋ค.
# Helm์ด ์ค์น๋์ด ์๋์ง ํ์ธ
helm version
Helm์ด ์ค์น๋์ง ์์๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด ์ค์นํ ์ ์์ต๋๋ค.
# Helm ์ค์น (Linux/Mac)
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
๐น Helm์ ์ฌ์ฉํ Argo CD ์ค์น
โ 1. Argo CD Helm Chart ์ ์ฅ์ ์ถ๊ฐ
๋จผ์ , Argo CD์ Helm Chart ์ ์ฅ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
โ 2. Argo CD ๋ค์์คํ์ด์ค ์์ฑ
Argo CD๋ฅผ ๋ฐฐํฌํ ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
kubectl create namespace argocd
โ 3. Helm Chart๋ฅผ ์ด์ฉํ Argo CD ์ค์น
์ด์ Helm์ ์ฌ์ฉํ์ฌ Argo CD๋ฅผ ์ค์นํฉ๋๋ค.
helm install argocd argo/argo-cd --namespace argocd
์ด ๋ช ๋ น์ ์คํํ๋ฉด Argo CD์ ์ฃผ์ ๊ตฌ์ฑ ์์(API ์๋ฒ, ์ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ, ๋ฆฌํฌ์งํฐ๋ฆฌ ์๋ฒ ๋ฑ)๊ฐ ์๋์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
์ค์น ํ, ๋ชจ๋ ๋ฆฌ์์ค๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
kubectl get pods -n argocd
์ถ๋ ฅ ์์:
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 2m
argocd-dex-server-769c9db6bd-wzcq6 1/1 Running 0 2m
argocd-redis-6cf9dbd7bc-5nxx8 1/1 Running 0 2m
argocd-repo-server-848fc7fd64-pvbj8 1/1 Running 0 2m
argocd-server-6cf9dbd7bc-lwqz8 1/1 Running 0 2m
๐น Argo CD ์ด๊ธฐ ์ค์ ๋ฐ ์ ๊ทผ ๋ฐฉ๋ฒ
โ 1. Argo CD ์๋ฒ ํฌํธ ํฌ์๋ฉ (๋ก์ปฌ์์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฐฉ๋ฒ)
๊ธฐ๋ณธ์ ์ผ๋ก Argo CD๋ argocd-server๋ผ๋ ์๋น์ค๋ก ๋ฐฐํฌ๋๋ฉฐ, ์ธ๋ถ์์ ์ ๊ทผํ๋ ค๋ฉด ํฌํธ ํฌ์๋ฉ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
kubectl port-forward svc/argocd-server -n argocd 8080:443
์ด์ ์น ๋ธ๋ผ์ฐ์ ์์ https://localhost:8080์ผ๋ก ์ ์ํ๋ฉด Argo CD UI์ ์ ๊ทผํ ์ ์์ต๋๋ค.
โ 2. ์ด๊ธฐ ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ ํ์ธ
Argo CD์ ๊ธฐ๋ณธ ๊ด๋ฆฌ์ ๊ณ์ ์ admin์ด๋ฉฐ, ์ด๊ธฐ ๋น๋ฐ๋ฒํธ๋ argocd-initial-admin-secret์์ ํ์ธํ ์ ์์ต๋๋ค.
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 --decode
์ถ๋ ฅ ์์:
s3cr3tPa$$w0rd
์ด์ Argo CD UI์ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
- URL: https://localhost:8080
- Username: admin
- Password: ์์์ ํ์ธํ ์ด๊ธฐ ๋น๋ฐ๋ฒํธ
๋ก๊ทธ์ธ ํ์๋ ๋ณด์์ ์ํด ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
argocd login localhost:8080
argocd account update-password
๐น Argo CD Ingress ์ค์ (๋๋ฉ์ธ์ผ๋ก ์ ๊ทผํ๊ธฐ)
๊ธฐ๋ณธ์ ์ผ๋ก Argo CD๋ LoadBalancer ๋๋ Ingress๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ์์ ์ ๊ทผํ ์๋ ์์ต๋๋ค.
Helm Chart์์ values.yaml์ ์์ ํ๋ฉด Ingress ์ค์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
server:
ingress:
enabled: true
hosts:
- argocd.example.com
paths:
- /
tls:
- secretName: argocd-tls
hosts:
- argocd.example.com
์ด์ Helm์ ์ฌ์ฉํด Ingress๋ฅผ ์ ์ฉํฉ๋๋ค.
helm upgrade argocd argo/argo-cd --namespace argocd -f values.yaml
์ดํ argocd.example.com์ผ๋ก ์ ์ํ๋ฉด Argo CD UI์ ์ ๊ทผํ ์ ์์ต๋๋ค.
๐น Helm ์ค์น ํ ์ฃผ์ ๋ช ๋ น์ด ์ ๋ฆฌ
๋ช ๋ น์ด ์ค๋ช
helm install argocd argo/argo-cd --namespace argocd | Argo CD ์ค์น |
helm list -n argocd | Argo CD ์ค์น ํ์ธ |
helm upgrade argocd argo/argo-cd --namespace argocd | Argo CD ์ค์ ๋ณ๊ฒฝ ํ ์ ๊ทธ๋ ์ด๋ |
helm uninstall argocd -n argocd | Argo CD ์ญ์ |
๐น ๊ฒฐ๋ก : ์ด๋ฒ ๊ธ์์ ๋ฐฐ์ด ํต์ฌ ๋ด์ฉ ์ ๋ฆฌ
๐ข Helm Chart๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes ํด๋ฌ์คํฐ์ Argo CD๋ฅผ ์์ฝ๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅ
๐ข ํฌํธ ํฌ์๋ฉ, LoadBalancer, Ingress๋ฅผ ํ์ฉํ์ฌ Argo CD UI์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ ํ์ต
๐ข ์ด๊ธฐ ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ ํ์ธ ๋ฐ ๋ณด์ ๊ฐํ๋ฅผ ์ํด ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ํ์
๐ข Helm์ ์ฌ์ฉํ Argo CD ์ค์น ๋ฐ ์
๊ทธ๋ ์ด๋ ๋ช
๋ น์ด ์ ๋ฆฌ