티스토리 뷰
이미 배포된 pod에 오류가 발생하여 롤백하여야 할 경우가 있을텐데, EKS는 배포 history기능을 통해 특정 revision으로 롤백할 수 있습니다.
배포 히스토리 보기
배포 히스토리는 deployment 단위로 볼 수 있다.
]$ kubectl -n backend rollout history deploy backend-api-template-deployment
deployment.apps/backend-api-template-deployment
REVISION CHANGE-CAUSE
15 [2022-12-26 11:12:18] backend-api-template:dev-73
16 [2022-12-26 11:25:59] backend-api-template:dev-74
17 [2022-12-26 11:37:21] backend-api-template:dev-75
18 [2022-12-28 19:02:14] backend-api-template:dev-76
19 [2023-01-03 07:49:41] backend-api-template:dev-77
20 [2023-01-03 08:45:55] backend-api-template:dev-78
21 [2023-01-04 10:55:50] backend-api-template:dev-79
22 [2023-01-04 11:13:08] backend-api-template:dev-80
23 [2023-01-05 15:33:44] backend-api-template:dev-81
24 [2023-01-06 11:47:46] backend-api-template:dev-82
25 [2023-01-06 14:40:16] backend-api-template:dev-83
]$
명령어는 kubectl -n {namespace 이름} rollout history deploy {deployment 이름} 의 형식입니다.
kubectl -n remodeling-backend는 kb로 alias 되어 있습니다.
배포 히스토리의 내용
위의 배포 히스토리의 내용 형식은 kubernetes 가 자동으로 만들어 주는것이 아닙니다.
히스토리 내용은 아래의 명령어로 배포시에 적재가 가능합니다.
]$ kubectl --namespace=$NAMESPACE annotate deployment $IMAGE_REPO_NAME-deployment kubernetes.io/change-cause="[$DATE] $IMAGE_REPO_NAME:$SPRING_PROFILES_ACTIVE-$CODEBUILD_BUILD_NUMBER" --overwrite=true
위 내용은 AWS CodeBuild 할때 참조하여 실행하는 buildspec.yml의 맨 마지막 줄에 적용되어 있습니다.
배포 롤백
롤백시에는 위 히스토리 보기 기능을 이용하여 REVISION을 확인 후 원하는 REVISION 번호로 롤백 하면 됩니다.
롤백 명령어는 아래와 같습니다.
]$ kubectl -n backend rollout undo deploy backend-api-deployment --to-revision=24
명령어는 kubectl -n {namespace 이름} rolloute undo deploy {deployment 이름} --to-revision={revision 번호}의 형식 입니다.
현재 적용된 리비전 확인
배포 상세 정보와 배포 히스토리를 비교하여, 현재 적용된 버전을 확인할 수 있다.
]$ kubectl -n backend describe deployment.apps backend-api-template-deployment
[ec2-user@ip-10-204-*** ~]$ kubectl -n backend describe deployment.apps backend-api-template-deployment | grep -A 2 Environment
Environment:
DATE: 2023-02-24 16:46:05
DOCKER_TAG: dev-101
기타
ArgoCD와 같은 WebUI 툴을 사용하지 않는 이유는 무엇입니까?
관리상의 이슈 입니다. 현재 리모델링 프로젝트는 AWS의 리소스를 사용하고 있고, 가능한 AWS에서 제공하는 자원만으로 운영하고 있습니다. ArgoCD는 개별적으로 설치해서 써야 해서 아직 적용하고 있지 않습니다.
댓글
- Total
최근에 올라온 글