Kubernetes Tools/ArgoCD

ArgoCD ์„ค์น˜ ๋ฐ GitOps ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

ygtoken 2025. 3. 4. 13:03
728x90

 

๐ŸŽฏ ๊ฐœ์š”

 

์ด ๊ธ€์—์„œ๋Š” ArgoCD๋ฅผ ํ™œ์šฉํ•˜์—ฌ Kubernetes ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ GitOps ๋ฐฉ์‹์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Git์„ ๋‹จ์ผ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•˜๊ณ , ArgoCD๊ฐ€ Git ์ €์žฅ์†Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•˜์—ฌ ์ž๋™์œผ๋กœ Kubernetes์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

โœ… ๋ชฉํ‘œ

Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ArgoCD ์„ค์น˜

ArgoCD UI ๋ฐ CLI๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ ๊ด€๋ฆฌ

GitHub ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ GitOps ๋ฐฉ์‹์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž๋™ ๋ฐฐํฌ

Helm values.yaml์„ ํ™œ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ๋ณ„ ์„ค์ • ๊ด€๋ฆฌ

 


 

๐Ÿ›  1๏ธโƒฃ ArgoCD ์„ค์น˜ (Helm ์‚ฌ์šฉ)

 

ArgoCD๋Š” Kubernetes์— ๋ฐฐํฌ๋˜๋ฉฐ, Helm์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

โœ… 1-1. Helm Chart๋ฅผ ์ด์šฉํ•œ ArgoCD ์„ค์น˜

helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
helm install argocd argo/argo-cd -n argocd --create-namespace

 

โœ… ์„ค์น˜๋œ ArgoCD ํ™•์ธ

kubectl get pods -n argocd

 

์ถœ๋ ฅ ์˜ˆ์‹œ:

NAME                                    READY   STATUS    RESTARTS   AGE
argocd-application-controller-0         1/1     Running   0          30s
argocd-redis-xxxxxxxxxx-xxxxx           1/1     Running   0          30s
argocd-repo-server-xxxxxxxxxx-xxxxx     1/1     Running   0          30s
argocd-server-xxxxxxxxxx-xxxxx          1/1     Running   0          30s

๐Ÿ”น ๋ชจ๋“  Pod๊ฐ€ Running ์ƒํƒœ์ด๋ฉด ์„ค์น˜๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋จ!

 


 

โœ… 1-2. ArgoCD ์›น UI ์ ‘์†

 

ArgoCD์˜ ๊ธฐ๋ณธ argocd-server ์„œ๋น„์Šค๋Š” ClusterIP๋กœ ๋ฐฐํฌ๋˜๋ฏ€๋กœ,

์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•˜๋ ค๋ฉด ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

 

โœ… ๋ณ€๊ฒฝ ํ›„, EXTERNAL-IP ํ™•์ธ

kubectl get svc -n argocd

 

์ถœ๋ ฅ ์˜ˆ์‹œ:

NAME                    TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)
argocd-server           LoadBalancer   10.43.150.132    192.168.1.100   8070:30343/TCP

๐Ÿ”น ๋ธŒ๋ผ์šฐ์ €์—์„œ http://192.168.1.100:8070์— ์ ‘์† ๊ฐ€๋Šฅ!

 


 

โœ… 1-3. ArgoCD ๋กœ๊ทธ์ธ

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 --decode

 

โœ… ์ดˆ๊ธฐ ๊ณ„์ • ์ •๋ณด

ID: admin

PW: (์œ„์—์„œ ์กฐํšŒํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ)

 

CLI์—์„œ ๋กœ๊ทธ์ธํ•˜๋ ค๋ฉด:

argocd login http://192.168.1.100:8070 --username admin --password <PASSWORD> --insecure

 


 

๐Ÿ›  2๏ธโƒฃ ArgoCD Application ๊ตฌ์„ฑ ๋ฐ ๋ฐฐํฌ

 

์ด์ œ ArgoCD์—์„œ Git ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐํ•˜๊ณ , Kubernetes ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” Application์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 


 

โœ… 2-1. GitHub ์ €์žฅ์†Œ ๋“ฑ๋ก

 

๋จผ์ € GitHub ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ฐ Personal Access Token(PAT)์„ ์ง์ ‘ ์ž…๋ ฅํ•˜์ง€ ์•Š๋„๋ก ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

export GIT_USERNAME="your-username"
export GIT_PASSWORD="your-token"
export GIT_REPO_URL="https://github.com/your-org/your-repo.git"

 

โœ… ArgoCD์— Git ์ €์žฅ์†Œ ๋“ฑ๋ก

argocd repo add $GIT_REPO_URL --username $GIT_USERNAME --password $GIT_PASSWORD

 

โœ… ArgoCD์—์„œ ์ €์žฅ์†Œ ํ™•์ธ

argocd repo list

 

์ถœ๋ ฅ ์˜ˆ์‹œ:

TYPE  NAME      REPO                                        USERNAME
git   gitops    https://github.com/your-org/your-repo.git  your-username

 


 

โœ… 2-2. ArgoCD Application YAML ์ƒ์„ฑ

 

์•„๋ž˜ YAML์„ ์‚ฌ์šฉํ•˜์—ฌ Helm Chart๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“ argocd-application.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: rag-fastapi  # ArgoCD์—์„œ ๊ด€๋ฆฌํ•  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„
  namespace: argocd  # ArgoCD๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค
spec:
  project: default  # ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ (์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์šด์˜ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)
  source:
    repoURL: https://github.com/your-org/your-repo.git  # Git ์ €์žฅ์†Œ URL
    path: rag-fastapi-structured/helm  # Git ์ €์žฅ์†Œ ๋‚ด Helm Chart ๊ฒฝ๋กœ
    targetRevision: main  # Git์˜ ํŠน์ • ๋ธŒ๋žœ์น˜ ๋˜๋Š” ํƒœ๊ทธ (๋ณดํ†ต `main` ๋˜๋Š” `develop`)
    helm:
      valueFiles:
        - values.yaml  # Helm ๋ฐฐํฌ ์‹œ ์‚ฌ์šฉํ•  values ํŒŒ์ผ ์ง€์ •
  destination:
    namespace: fastapi  # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋  ๋„ค์ž„์ŠคํŽ˜์ด์Šค
    server: https://kubernetes.default.svc  # ๋ฐฐํฌํ•  Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์ฃผ์†Œ
  syncPolicy:
    automated:
      prune: true  # Git์—์„œ ์‚ญ์ œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œ
      selfHeal: true  # ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๊ฐ€ Git๊ณผ ๋‹ค๋ฅด๋ฉด ์ž๋™ ๋ณต๊ตฌ

 

โœ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ArgoCD์— ์ ์šฉ

kubectl apply -f argocd-application.yaml

 


 

โœ… 2-3. ArgoCD์—์„œ ๋ฐฐํฌ ์ƒํƒœ ํ™•์ธ

argocd app get rag-fastapi

 

โœ… ์ถœ๋ ฅ ์˜ˆ์‹œ

Name:               rag-fastapi
Repo:               https://github.com/your-org/your-repo.git
Target:             main
Path:               rag-fastapi-structured/helm
Sync Status:        Synced
Health Status:      Healthy

๐Ÿ‘‰ SYNCED ์ƒํƒœ์ด๋ฉด GitHub์™€ ๋™๊ธฐํ™” ์™„๋ฃŒ!

 

 


 

๐ŸŽฏ ์ตœ์ข… ์ •๋ฆฌ

1. Helm์„ ์‚ฌ์šฉํ•˜์—ฌ ArgoCD ์„ค์น˜ (helm install argocd argo/argo-cd -n argocd)

2. ArgoCD ์›น UI ๋ฐ CLI์—์„œ ๋กœ๊ทธ์ธ (argocd login)

3. GitHub ์ €์žฅ์†Œ๋ฅผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ArgoCD์— ๋“ฑ๋ก (argocd repo add $GIT_REPO_URL ...)

4. Helm Chart ๊ธฐ๋ฐ˜์˜ Application์„ ์ƒ์„ฑํ•˜์—ฌ ์ž๋™ ๋ฐฐํฌ (kubectl apply -f argocd-application.yaml)

5. argocd app get rag-fastapi๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐฐํฌ ์ƒํƒœ ํ™•์ธ

728x90