Kubernetes Tools/ArgoCD

[Ep.12] [Argo CD ์šด์˜ #7] Argo CD์˜ ๋กค๋ฐฑ(Rollback) ๋ฐ ๋ฐฐํฌ ์ด๋ ฅ ๊ด€๋ฆฌ

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

๐Ÿ”น Argo CD์—์„œ ๋กค๋ฐฑ(Rollback)์ด๋ž€?

Argo CD๋Š” GitOps ๊ธฐ๋ฐ˜์˜ ๋ฐฐํฌ ์ž๋™ํ™” ๋„๊ตฌ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์ถ”์ ํ•˜๊ณ  ํŠน์ • ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ(Rollback)ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ,
Argo CD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†์‰ฝ๊ฒŒ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ… Argo CD์˜ ๋กค๋ฐฑ ์ฃผ์š” ๊ฐœ๋…
โœ” ๋ฐฐํฌ ์ด๋ ฅ(Deployment History)์„ ์ž๋™์œผ๋กœ ์ €์žฅ
โœ” ์ด์ „ ๋ฐฐํฌ ๋ฒ„์ „์œผ๋กœ ์‰ฝ๊ฒŒ ๋กค๋ฐฑ ๊ฐ€๋Šฅ
โœ” Git ์ €์žฅ์†Œ ๊ธฐ๋ฐ˜์˜ ๋กค๋ฐฑ ๋ฐ Kubernetes ์ƒํƒœ ๋กค๋ฐฑ ์ง€์›
โœ” CLI ๋ฐ UI์—์„œ ๋กค๋ฐฑ ์‹คํ–‰ ๊ฐ€๋Šฅ


๐Ÿ”น Argo CD ๋ฐฐํฌ ์ด๋ ฅ(Deployment History) ๊ด€๋ฆฌ

Argo CD๋Š” ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ ์ด๋ ฅ์„ ์ž๋™์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ,
์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ • ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… ๋ฐฐํฌ ์ด๋ ฅ ์กฐํšŒ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ ์ด๋ ฅ์„ ํ™•์ธํ•˜๋ ค๋ฉด CLI ๋˜๋Š” UI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

argocd app history example-app

 

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

ID  REVISION        STATUS      SOURCE
1   8f7c2d1        Deployed    https://github.com/example/repo.git
2   a1b4e5f        Deployed    https://github.com/example/repo.git
3   c9d3f9a        Degraded    https://github.com/example/repo.git

 

โœ” ID → ๋ฐฐํฌ ๋ฒ„์ „ ๋ฒˆํ˜ธ
โœ” REVISION → Git ์ปค๋ฐ‹ ํ•ด์‹œ ๊ฐ’
โœ” STATUS → ํ˜„์žฌ ๋ฐฐํฌ ์ƒํƒœ

 

๋ฐฐํฌ ์ด๋ ฅ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 10๊ฐœ๊นŒ์ง€ ์ €์žฅ๋˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น Argo CD ๋กค๋ฐฑ(Rollback) ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•

โœ… 1. ํŠน์ • ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•˜๊ธฐ

์ด์ „ ๋ฐฐํฌ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

argocd app rollback example-app 2

 

โœ… ์„ค๋ช…:

  • example-app → ๋กค๋ฐฑํ•  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„
  • 2 → ๋ฐฐํฌ ์ด๋ ฅ์—์„œ ์„ ํƒํ•œ ๋ฒ„์ „ ID

๋กค๋ฐฑ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ํ™•์ธ:

argocd app get example-app

โœ… 2. Argo CD UI๋ฅผ ์‚ฌ์šฉํ•œ ๋กค๋ฐฑ ๋ฐฉ๋ฒ•

1๏ธโƒฃ Argo CD ์›น UI์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ ํƒ
2๏ธโƒฃ "HISTORY & ROLLBACK" ๋ฒ„ํŠผ ํด๋ฆญ
3๏ธโƒฃ ํŠน์ • ๋ฒ„์ „์„ ์„ ํƒํ•œ ํ›„ "ROLLBACK" ๋ฒ„ํŠผ ํด๋ฆญ
4๏ธโƒฃ ๋กค๋ฐฑ์ด ์™„๋ฃŒ๋˜๋ฉด ์ƒํƒœ๋ฅผ ํ™•์ธ


๐Ÿ”น Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ vs Kubernetes ์ƒํƒœ ๋กค๋ฐฑ

Argo CD๋Š” Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ๊ณผ Kubernetes ์ƒํƒœ ๋กค๋ฐฑ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

 

๋กค๋ฐฑ ๋ฐฉ์‹ ์„ค๋ช…
Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ Git ์ €์žฅ์†Œ์—์„œ ์ด์ „ ์ปค๋ฐ‹์„ ์ฒดํฌ์•„์›ƒํ•˜์—ฌ ๋‹ค์‹œ ๋ฐฐํฌ
Kubernetes ์ƒํƒœ ๋กค๋ฐฑ ์ด์ „ ๋ฐฐํฌ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆผ (Git ๋ณ€๊ฒฝ ์—†์Œ)

 

โœ… Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ

git revert HEAD
git push origin main
argocd app sync example-app
  • Git์—์„œ ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ฆฐ ํ›„, Argo CD์—์„œ ๋™๊ธฐํ™” ์‹คํ–‰

โœ… Kubernetes ์ƒํƒœ ๋กค๋ฐฑ

argocd app rollback example-app 2
  • ํ˜„์žฌ Git ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ Kubernetes์˜ ๋ฐฐํฌ ์ด๋ ฅ๋งŒ ๋กค๋ฐฑ

๐Ÿš€ ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ์ด ๊ถŒ์žฅ๋˜๋ฉฐ, ๊ธด๊ธ‰ ๋ณต๊ตฌ ์‹œ Kubernetes ์ƒํƒœ ๋กค๋ฐฑ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ


๐Ÿ”น ๋กค๋ฐฑ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ

โœ… 1. ๋กค๋ฐฑ ํ›„์—๋„ Git ์ƒํƒœ ์œ ์ง€ ํ•„์š”

  • GitOps ๋ฐฉ์‹์—์„œ๋Š” Git ์ €์žฅ์†Œ๊ฐ€ ๋‹จ์ผ ์‹ ๋ขฐ ์›์ฒœ(Source of Truth)์ด๋ฏ€๋กœ,
    ๋กค๋ฐฑ ํ›„์—๋„ Git ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•จ.
  • Git์—์„œ revert ํ›„ ๋‹ค์‹œ push๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋จ.
git revert HEAD
git push origin main
argocd app sync example-app

โœ… 2. ๋กค๋ฐฑ ํ›„ ๋™๊ธฐํ™”(Sync) ์„ค์ •

  • ๋กค๋ฐฑ ํ›„ ์ž๋™ ๋™๊ธฐํ™”๋ฅผ ์›ํ•  ๊ฒฝ์šฐ selfHeal ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•จ.
syncPolicy:
  automated:
    selfHeal: true
  • Git ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด prune: true ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.
syncPolicy:
  automated:
    prune: true
    selfHeal: true

๐Ÿ”น Argo CD ๋กค๋ฐฑ ๋ฐ ๋ฐฐํฌ ์ด๋ ฅ CLI ๋ช…๋ น์–ด ์ •๋ฆฌ

๋ช…๋ น์–ด  ์„ค๋ช…
argocd app history <APP> ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์ด๋ ฅ ํ™•์ธ
argocd app rollback <APP> <VERSION> ํŠน์ • ๋ฐฐํฌ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ
argocd app get <APP> ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ํ™•์ธ
argocd app sync <APP> Git ์ €์žฅ์†Œ์™€ Kubernetes ์ƒํƒœ ๋™๊ธฐํ™”
git revert HEAD && git push Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ ์ˆ˜ํ–‰

 

โœ… ๋กค๋ฐฑ ํ›„ ๋™๊ธฐํ™”:

argocd app sync example-app

 

โœ… Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ:

git revert HEAD
git push origin main
argocd app sync example-app

 

โœ… Kubernetes ์ƒํƒœ ๋กค๋ฐฑ:

argocd app rollback example-app 2

๐Ÿ”น ๊ฒฐ๋ก : ์ด๋ฒˆ ๊ธ€์—์„œ ๋ฐฐ์šด ํ•ต์‹ฌ ๋‚ด์šฉ ์ •๋ฆฌ

๐ŸŸข Argo CD๋Š” ๋ฐฐํฌ ์ด๋ ฅ์„ ์ž๋™์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ, ํŠน์ • ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต
๐ŸŸข Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ๊ณผ Kubernetes ์ƒํƒœ ๋กค๋ฐฑ์„ ์ง€์›ํ•˜๋ฉฐ, ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” Git ๊ธฐ๋ฐ˜ ๋กค๋ฐฑ์ด ๊ถŒ์žฅ๋จ
๐ŸŸข CLI ๋ฐ UI์—์„œ ์†์‰ฝ๊ฒŒ ๋กค๋ฐฑ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋กค๋ฐฑ ํ›„ ๋™๊ธฐํ™”(Sync) ์ž‘์—… ํ•„์š”
๐ŸŸข ๋กค๋ฐฑ ํ›„์—๋„ Git ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด git revert ๋ฐ push ์ž‘์—…์ด ํ•„์š”

728x90