Search
๐Ÿ”„

[CKA] 27. Rolling Updates and Rollbacks

Date
2024/12/10
Category
Devops
Tag
Kubernetes
CKA
Management
๋ชฉ์ฐจ

ย Rollout and Versioning

์ƒˆ๋กœ์šด ๋ฐฐํฌ์˜ ์‹œ์ž‘์€ ๋กค์•„์›ƒ์˜ ํŠธ๋ฆฌ๊ฑฐ์ด๋‹ค. ์ฒ˜์Œ ๋ฐฐํฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋กค์•„์›ƒ์ด ์‹œ์ž‘๋˜๊ณ , ์ƒˆ๋กœ์šด ๋กค์•„์›ƒ์€ ์ƒˆ๋กœ์šด ๋ฐฐํฌ revision๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋ฒ„์ „์ด ์ƒˆ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋ฉด ์ƒˆ ๋กค์•„์›ƒ์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๊ณ , ์ƒˆ ๋ฐฐํฌ revision์ด ์ƒ์„ฑ๋œ๋‹ค.
์ด๋Š” ๋ฐฐํฌ์— ์ผ์–ด๋‚œ ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๊ณ , ํ•„์š” ์‹œ ์ด์ „ ๋ฒ„์ „์œผ๋กœ์˜ ๋กค๋ฐฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

ย Rollout Command

โ€ข
rollout์˜ ์ƒํƒœ ํ™•์ธ
kubectl rollout status deployment/myapp-deployment
Bash
๋ณต์‚ฌ
โ€ข
revision ๋ฐ deployment history ํ™•์ธ
kubectl rollout history deployment/myapp-deployment
Bash
๋ณต์‚ฌ

ย Deployment Strategy

๋ฐฐํฌ ์ „๋žต์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ๋‹ค

Recreate Strategy

๋ฐฐํฌ๋œ ์ธ์Šคํ„ด์Šค ๋ณต์ œ๋ณธ์„ ๋ชจ๋‘ ํŒŒ๊ดดํ•˜๊ณ  ์ธ์Šคํ„ด์Šค์˜ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์ด ์ „๋žต์˜ ๋ฌธ์ œ์ ์€ ๊ตฌ ๋ฒ„์ „์ด ๋‹ค์šด๋˜๊ณ  ์ƒˆ ๋ฒ„์ „์ด ๋ฐฐํฌ๋˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ์ ์œผ๋กœ ์ธํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋ณธ ๋ฐฐํฌ ์ „๋žต์€ ์•„๋‹ˆ๋‹ค.
kubectl describe ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์•˜์„ ๋•Œ StartegyType์ด Recreate์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , Replica๋ฅผ ํ•œ๋ฒˆ์— 0์œผ๋กœ ์ถ•์†Œ์‹œ์ผฐ๋‹ค๊ฐ€ 5๋กœ ๋Š˜๋ฆฐ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Rolling Update Strategy

ํ•œ๋ฒˆ์— ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ๊ตฌ ๋ฒ„์ „์„ ํ•˜๋‚˜์”ฉ ๋‹ค์šด์‹œํ‚ค๋ฉฐ ์ƒˆ ๋ฒ„์ „์„ ํ•จ๊ป˜ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์ด ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค์šด๋˜์ง€ ์•Š๊ณ  ์—…๊ทธ๋ ˆ์ด๋“œ๋„ ์›ํ™œํ•ด์ง„๋‹ค. ํ•ด๋‹น ์ „๋žต์€ ๊ธฐ๋ณธ ๋ฐฐํฌ ์ „๋žต์œผ๋กœ, ๋ฐฐํฌ ์ „๋žต์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋กค๋ง ์—…๋ฐ์ดํŠธ ์ „๋žต์ด ์‚ฌ์šฉ๋œ๋‹ค.
kubectl describe ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์•˜์„ ๋•Œ StartegyType์ด RollingUpdate์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , Replica๋ฅผ ํ•˜๋‚˜์”ฉ ์ค„์˜€๋‹ค ๋Š˜์˜€๋‹ค ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ย Upgrades

์ƒˆ ๋ฐฐํฌ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋จผ์ € ๋ ˆํ”Œ๋ฆฌ์นด ์…‹์„ ์ƒ์„ฑํ•ด ๋ ˆํ”Œ๋ฆฌ์นด ๊ฐœ์ˆ˜์— ๋งž๋Š” Pod๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—…๊ทธ๋ ˆ์ด๋“œ ๋  ๋•Œ, ๋ฐฐํฌ ๊ฐ์ฒด๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ ˆํ”Œ๋ฆฌ์นด ์…‹์„ ์ƒ์„ฑํ•˜๊ณ , ๊ฑฐ๊ธฐ์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ๋™์‹œ์— ์ด์ „ ๋ ˆํ”Œ๋ฆฌ์นด ์…‹์— ์žˆ๋Š” ํŒŒ๋“œ๋ฅผ ๋กค๋ง ์—…๋ฐ์ดํŠธ ์ „๋žต์— ๋”ฐ๋ผ ํ•˜๋‚˜์”ฉ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.

ย Rollback

์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ์ƒˆ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋กค๋ฐฑ์„ ์ง„ํ–‰ํ•ด์•ผํ•˜๋Š”๋ฐ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ด์ „ revision์œผ๋กœ ๋กค๋ฐฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. kubectl rollout undo ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋˜ ๋ฐฐํฌ์˜ Pod๋Š” ํŒŒ๊ดด๋˜๊ณ , ์ด์ „ ๋ฒ„์ „์˜ ๋ ˆํ”Œ๋ฆฌ์นด ์…‹์˜ Pod๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
kubectl rollout undo deployment/myapp-deployment
Bash
๋ณต์‚ฌ

ย Summarize Commands

# Create kubectl create -f deployment-definition.yml # Get kubectl get deployments # Update kubectl apply -f deployment-definition.yml # Update - Image (์ •์˜ ํŒŒ์ผ์€ ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ deployment์™€ ์ •์˜ ํŒŒ์ผ์˜ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒ) kubectl set image deployment/<deployment_name> <container_name>=<image> # Status kubectl rollout status deployment/myapp-deployment kubectl rollout history deployment/myapp-deployment # Rollback kubectl rollout undo deployment/myapp-deployment
Bash
๋ณต์‚ฌ