[CKA] Deployment 생성과 운영

Deployment 생성, scale, rolling update, 변경 이력과 rollback을 실습합니다.

생성과 scale

kubectl create deployment webserver --image=nginx:1.14 --replicas=2 \
  --dry-run=client -o yaml > webserver.yaml

Pod label을 바꾼다면 Deployment selector와 Pod template label이 일치해야 합니다.

spec:
  replicas: 2
  selector:
    matchLabels:
      app_env_stage: dev
  template:
    metadata:
      labels:
        app_env_stage: dev
kubectl apply -f webserver.yaml
kubectl scale deployment webserver --replicas=3
kubectl get pods --show-labels

rolling update와 rollback

kubectl set image deployment/nginx-app nginx=nginx:1.11.13-alpine
kubectl annotate deployment/nginx-app \
  kubernetes.io/change-cause='update nginx image to 1.11.13-alpine'
kubectl rollout status deployment/nginx-app
kubectl rollout history deployment/nginx-app

직전 revision이나 지정한 revision으로 되돌릴 수 있습니다.

kubectl rollout undo deployment/nginx-app
kubectl rollout undo deployment/nginx-app --to-revision=1

--record는 deprecated 되었으므로 변경 사유는 annotation으로 남깁니다. rollback 전에는 history에 되돌릴 revision이 실제로 있는지 확인합니다.