[CKA] Deployment 롤아웃과 롤백
Deployment가 ReplicaSet을 관리하며 애플리케이션을 업데이트하고 이전 리비전으로 되돌리는 과정을 정리합니다.
Deployment는 ReplicaSet보다 한 단계 위에서 파드의 배포와 업데이트를 관리합니다. 파드 템플릿이 바뀌면 새 ReplicaSet을 만들고 새 파드를 늘리는 동안 기존 파드를 줄입니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: nginx
image: nginx:1.18
기본 전략인 RollingUpdate는 새 ReplicaSet을 늘리면서 기존 ReplicaSet을 줄입니다. Recreate는 기존 파드를 모두 내린 뒤 새 파드를 만들기 때문에 전환 중 서비스 중단이 생길 수 있습니다.
kubectl apply -f deployment-definition.yaml
kubectl get deployments
kubectl rollout status deployment/myapp-deployment
kubectl rollout history deployment/myapp-deployment
kubectl set image deployment/myapp-deployment nginx=nginx:1.19
kubectl rollout undo deployment/myapp-deployment
kubectl set image처럼 명령으로 바꾼 상태는 로컬 매니페스트와 달라질 수 있습니다. 파일을 배포 상태의 기준으로 쓴다면 같은 변경을 매니페스트에도 반영해야 합니다.