Deploymet는 Replicaset의 상위 개념이다. 핵심은 레플리카와 동일하게 포드의 개수를 유지시켜준다는 것이다.
같은 개념인데도 불구하고 Deployment를 사용하는 이유은 컨테이너 애플리케이션의 배포 및 관리와 밀접한 관련이 있다.
애플리케이션을 운영하다보면 반드시 업데이트를 해야하는 상황이 온다. docker 이미지에서도 태그에 버전을 남기듯 deployment는 변경 사항을 저장하는 revision을 남겨 롤백을 가능하게 해준다.
Yaml파일 생성
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx-label
template:
metadata:
name: example-deployment-pod
labels:
app: nginx-label
spec:
containers:
- name: nginx
image: nginx:1.10
ports:
- containerPort: 80
Deployment 생성
kubectl apply -f example-deployment.yaml # deployment 생성
kubectl annotate deployments example-deployment kubernetes.io/change-cause="kubectl apply -f example-deployment.yaml" # 변경사항 기록
annotate 옵션을 사용하여 deployment의 comment를 입력하는 것이다.
Deployment 히스토리 조회
kubectl rollout history deployment example-deployment
# 결과
REVISION CHANGE-CAUSE
1 kubectl apply -f example-deployment.yaml
Deployment pods 이미지 변경
kubectl set image deployment example-deployment nginx-pod=nginx:1.11
# annotation
kubectl annotate deployments example-deployment kubernetes.io/change-cause="kubectl apply -f example-deployment.yaml v2"
# 결과
REVISION CHANGE-CAUSE
1 kubectl apply -f example-deployment.yaml
2 kubectl apply -f example-deployment.yaml v2
- 이미지는 바로 바꿀수는 있지만 yaml파일의 내용까지 같이 바뀌지는 않는다 따라서 사용하지 않는것을 권고(yaml 파일 수정 후 재 생성 권고)
Deployment 롤백
kubectl rollout undo deployment example-deployment --to-revision=1
Deployment 버전 확인
kubectl describe deploy example-deployment
'Kubernetes' 카테고리의 다른 글
6. Kubernetes Secret (0) | 2024.08.13 |
---|---|
5. Kubernetes Configmap (0) | 2024.08.13 |
4. Kubernetes Service (0) | 2024.08.07 |
2. Kubernetes ReplicaSet (0) | 2024.08.06 |
1. Kubernetes Pod (0) | 2024.08.01 |