
![]
Deployment에 일어난 변화를 추적할 수 있다.$ kubectl rollout status deployment/<Deployment 이름>

$ kubetl rollout history deployment/<Deployment 이름>

Recreate : 실행중인 인스턴스를 모두 종료하고 새 버전으로 배포Rolling Update : 인스턴스 하나씩 다운 후 순차적으로 새 버전 배포
# deployment-definition.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
type: front-end
kubectl apply -f <definition_file_name.yaml> 명령으로 새로운 컨테이너가 배포됨kubectl set image deployment/<deployment_name> <container_name>=nginx:1.9.1 명령어로도 애플리케이션 이미지를 업데이트 할 수있다.kubectl describe deployment 명령어로 자세한 구성을 보면 배포전략(Strategy Type) 확인 가능
Recreate 방식은 replicas를 0으로 scale down 하고 다시 새 버전을 5개로 scale upRollingUpdate 방식은 하나씩 동시에 교체ReplicaSet를 생성하고 순차적으로 Pod를 하나씩 다운시키고 새버전으로 교체kubectl get replicasets 명령어로 실제 롤링 업데이트시 새 ReplicaSet이 생성됨을 확인할 수있다.
Deployment는 이전 버전으로 롤백이 가능하다.$ kubectl rollout undo deployment/<deployment_name>
ReplicaSet의 pod를 종료하고 예전 버전을 불러온다# Create
$ kubectl create -f <deployment-definition.yaml>
# Get
$ kubectl get deployments
# Update
$ kubectl apply -f deployment-definition.yaml
$ kubectl set image deployment/<deployment_name> <container_name>=nginx:1.9.1
# Status
$ kubectl rollout status deployment/<deployment_name>
# Rollback
$ kubectl rollout history deployment/<deployment_name>
$ kubectl rollout undo deployment/<deployment_name>