Kubernetes Tools/ArgoCD

[Ep.6] [Argo CD ์šด์˜ #1] Argo CD CLI ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•

ygtoken 2025. 3. 17. 13:05
728x90

 

๐Ÿ”น Argo CD CLI๋ž€?

 

Argo CD๋Š” ์›น UI, CLI(Command Line Interface), API๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ์ค‘ CLI๋Š” ์ž๋™ํ™” ๋ฐ ์šด์˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ๋กœ, GitOps ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ… CLI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:

โœ” Argo CD ์„œ๋ฒ„์— ๋กœ๊ทธ์ธํ•˜๊ณ  ์ธ์ฆ ๊ด€๋ฆฌ

โœ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ, ์‚ญ์ œ ๋ฐ ๋™๊ธฐํ™”(Sync)

โœ” ๋ฐฐํฌ ์ƒํƒœ ํ™•์ธ ๋ฐ ๋กค๋ฐฑ ์ˆ˜ํ–‰

โœ” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋ชฉ๋ก ์กฐํšŒ ๋ฐ ๊ด€๋ฆฌ

 


๐Ÿ”น Argo CD CLI ์„ค์น˜ ๋ฐฉ๋ฒ•

 

โœ… 1. macOS์—์„œ ์„ค์น˜

Homebrew๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

brew install argocd

 

โœ… 2. Linux์—์„œ ์„ค์น˜

๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")')
curl -sLO https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64
chmod +x argocd-linux-amd64
sudo mv argocd-linux-amd64 /usr/local/bin/argocd

 

โœ… 3. Windows์—์„œ ์„ค์น˜

Windows ์‚ฌ์šฉ์ž๋Š” choco๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

choco install argocd-cli

 

โœ… ์„ค์น˜ ํ›„, ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ

argocd version

 

๐Ÿ’ก ์˜ˆ์ƒ ์ถœ๋ ฅ ๊ฐ’

argocd: v2.6.5
BuildDate: 2023-10-11T12:00:00Z
GitCommit: a1b2c3d
GoVersion: go1.19

 

 


๐Ÿ”น Argo CD CLI ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•

 

โœ… 1. Argo CD ์„œ๋ฒ„ ๋กœ๊ทธ์ธ

 

Argo CD CLI๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € ์„œ๋ฒ„์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

argocd login <ARGOCD_SERVER>

 

๐Ÿ’ก ์˜ˆ์ œ:

argocd login argocd.example.com --username admin --password <๋น„๋ฐ€๋ฒˆํ˜ธ>

๐Ÿ”น <ARGOCD_SERVER>๋Š” Argo CD ์„œ๋ฒ„ ์ฃผ์†Œ์ด๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ localhost:8080์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ”น ์ฒซ ๋กœ๊ทธ์ธ ํ›„์—๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

argocd account update-password

 

 


โœ… 2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชฉ๋ก ์กฐํšŒ

 

Argo CD์— ๋“ฑ๋ก๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

argocd app list

 

๐Ÿ’ก ์˜ˆ์ƒ ์ถœ๋ ฅ ๊ฐ’

NAME        CLUSTER      STATUS      HEALTH   SYNC STATUS
frontend    in-cluster   Deployed    Healthy  Synced
backend     in-cluster   Degraded    OutOfSync

 

 


โœ… 3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ

 

Argo CD์—์„œ ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ CLI๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

argocd app create my-app \
  --repo https://github.com/example/repo.git \
  --path manifests \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default

 

โœ… ์ฃผ์š” ์˜ต์…˜ ์„ค๋ช…

--repo → Git ์ €์žฅ์†Œ URL

--path → ๋งค๋‹ˆํŽ˜์ŠคํŠธ๊ฐ€ ์œ„์น˜ํ•œ ๊ฒฝ๋กœ

--dest-server → Kubernetes ํด๋Ÿฌ์Šคํ„ฐ API ์„œ๋ฒ„ ์ฃผ์†Œ

--dest-namespace → ๋ฐฐํฌ๋  ๋„ค์ž„์ŠคํŽ˜์ด์Šค

 


โœ… 4. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™๊ธฐํ™”(Sync) ๋ฐ ์ƒํƒœ ํ™•์ธ

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Git ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

argocd app sync my-app

 

๐Ÿ’ก ์˜ˆ์ƒ ์ถœ๋ ฅ ๊ฐ’

Application 'my-app' is now synced

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

argocd app get my-app

 

๐Ÿ’ก ์˜ˆ์ƒ ์ถœ๋ ฅ ๊ฐ’

Name:               my-app
Project:            default
Sync Status:        Synced
Health Status:      Healthy

 

 


โœ… 5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กค๋ฐฑ

 

Git์˜ ํŠน์ • ์ปค๋ฐ‹ ๋˜๋Š” ๋ฐฐํฌ ์ด๋ ฅ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

argocd app rollback my-app 2

๐Ÿ”น 2๋Š” ์ด์ „ ๋ฐฐํฌ ๋ฒ„์ „์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ตœ์‹  ๋ฒ„์ „๋ถ€ํ„ฐ ์ˆซ์ž๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 


๐Ÿ”น Argo CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ญ์ œ ๋ฐ Cascade ์˜ต์…˜ ์ดํ•ด

 

โœ… 6. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ญ์ œ

argocd app delete my-app

 

๐Ÿ’ก ์˜ˆ์ƒ ์ถœ๋ ฅ ๊ฐ’

Application 'my-app' deleted

 

 


โœ… Cascade ์˜ต์…˜์˜ ์ข…๋ฅ˜ ๋ฐ ๋™์ž‘ ๋ฐฉ์‹

 

์˜ต์…˜ ์„ค๋ช…
--cascade=true ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ํ•จ๊ป˜ ์‚ญ์ œ (๊ธฐ๋ณธ๊ฐ’)
--cascade=false ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ์‚ญ์ œํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๋Š” ์œ ์ง€

 

โœ… Cascade ์˜ต์…˜ ์‚ฌ์šฉ ์˜ˆ์‹œ

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œ (๊ธฐ๋ณธ๊ฐ’)
argocd app delete my-app --cascade=true

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ์‚ญ์ œํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ์œ ์ง€
argocd app delete my-app --cascade=false

 

 


๐Ÿ”น Argo CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ญ์ œ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

 

1๏ธโƒฃ Finalizer ๋ฌธ์ œ (์‚ญ์ œ ๋Œ€๊ธฐ ์ƒํƒœ)

kubectl patch application my-app -n argocd --type=json -p='[{"op": "remove", "path": "/metadata/finalizers"}]'
kubectl delete application my-app -n argocd

 


2๏ธโƒฃ Argo CD ์ž๋™ ๋ณต์› (Git ์ €์žฅ์†Œ์—์„œ ๋‹ค์‹œ ์ƒ์„ฑ๋จ)

argocd app delete my-app --cascade=true --grpc-web

๐Ÿ”น Git ์ €์žฅ์†Œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋„ ํ•จ๊ป˜ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 


3๏ธโƒฃ OwnerReferences ๋ฌธ์ œ (์ƒ์œ„ ๋ฆฌ์†Œ์Šค์— ์˜ํ•ด ๋ณดํ˜ธ๋จ)

kubectl patch application my-app -n argocd --type=json -p='[{"op": "remove", "path": "/metadata/ownerReferences"}]'
kubectl delete application my-app -n argocd

 

 


4๏ธโƒฃ Argo CD ์ปจํŠธ๋กค๋Ÿฌ ๋ฌธ์ œ

kubectl rollout restart deployment argocd-application-controller -n argocd
argocd app delete my-app --cascade=true

 

728x90