Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 안전하게 테이블 변경
- performance스키마
- 도커
- BastianHost
- mysql 구조
- 마운트
- 운용 시 유용한 쿼리
- ix is lock
- s3 sync
- 온라인 ddl
- nandtotetris
- 리눅스
- 밑바닥부터 구현하는 컴퓨팅 시스템
- MySQL
- InnoDB
- innodb구조
- mysql 엔진
- ec2
- s3
- SessionManager 터널링
- 필수 스크립트
- innodb 버퍼풀
- x lock s lock
- Terraform
- sessionManager
- 밑바닥부터 만드는 운영체제
- dff
- 어뎁티브 해시 인덱스
- S3 private통신
- mysql 아키텍쳐
Archives
- Today
- Total
이것이 점프 투 공작소
쿠버네티스 리소스 특정 Revision으로 롤백하기 본문
쿠버네티스에서 리비전을 지정하고 지정한 리비전으로 리소스를 롤백하는 방법을 정리하려합니다.
1. 배포할 리소스에 메세지 작성(yaml 파일)
nginx를 배포하는 yaml파일입니다.
metadata에 annotations의 kubernetes.io/change-cause값에 메세지를 작성 가능합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
labels:
app: app
annotations:
"kubernetes.io/change-cause": "initial deployment" # 배포사유 작성
spec:
replicas: 3
selector:
matchLabels:
app: app
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: app
env: prod
spec:
containers:
- name: app
image: nginx:1.14.2
ports:
- containerPort: 8080
resources:
limits:
memory: "64Mi"
cpu: "50m"
2. 배포 확인
port-forward 명령어로 포트 포워딩 후 요청하여 배포 결과를 확인합니다.
포트 포워딩 후 다른 터미널을 열어 curl요청을 보내 배포된 nginx이미지를 확인합니다.
2-1 포트 포워딩
kubectl port-forward deployment/app 8080:80
2-2 Http요청
curl 명령어로 요청합니다.
3. 이미지 변경 후 annotate 작성
3-1 이미지 변경
nginx에서 httpd로 컨테이너 이미지를 변경합니다.
베포 완료 후 요청을 보내 동일 deployment가 nginx에서 httpd이미지로 변경된것을 확인했습니다.
kubectl set image deployment/app app=httpd
3-2 변경된 리소스에 대한 annotate를 작성합니다.
annotate 명령어로 변경된 revision에 대한 코멘트를 작성합니다.
kubectl annotate deployment/app kubernetes.io/change-cause="image changed to httpd"
3-3 annotate 이력 확인
rollout history 명령어로 리소스의 annotate 를 확인합니다.
명령어에서 --revision 으로 특정 버전을 지정하여 annotate를 조회 가능합니다.
kubectl rollout history deployment/app
4. Rollback
4-1 이전 revision으로 rollback합니다.
rollout undo 명령어를 이용해 rollback하기를 원하는 revision을 지정하여 rollback 합니다.
--to-revision 옵션을 주지 않으면 바로 이전 revision으로 롤백합니다.
kubectl rollout undo deployment/app --to-revision=1
4-2 변경된 이미지 확인
port-forward 후 curl 요청을 보내 rollback되었는지 확인합니다.
'k8s' 카테고리의 다른 글
EKS node-subnet, pod-subnet 분리하는법 (0) | 2023.09.03 |
---|---|
쿠버네티스의 DNS 서버와 Pod의 LivenessProbe 을 통한 상태확인 (0) | 2023.05.19 |