k8s のロールバック
0時に寝て7時に起きた。
k8s のロールバック⌗
Rolling Back to a Previous Revision をみながらすぐできた。ロールバックもこれまでと同様、github actions の workflow dispatch で管理できるようにした。基本的にはこれだけでロールバックできる。
$ kubectl rollout undo deployment/my-app-deploy
ちょっと工夫したこととして、デプロイ時に kubernetes.io/change-cause というアノテーションに git のリビジョンもセットしておくと確認するときにちょっと楽ができる。apply した後の deployment リソースに docker イメージのタグ情報 (= git のリビジョン) を書き込んでおく。
$ kubectl apply -k ${{ env.DEPLOYMENT_ENV }}
$ kubectl annotate deployment my-app-deploy kubernetes.io/change-cause=${{ env.IMAGE_TAG }} --overwrite=true
kubectl から履歴をみたときに k8s のリビジョンがどの git のリビジョンを使っているかがわかりやすい。デフォルトでは何も設定されていないかもしれない。
$ kubectl rollout history deployment/my-app-deploy
deployment.apps/my-app-deploy
REVISION CHANGE-CAUSE
15 <none>
16 <none>
17 <none>
18 <none>
19 <none>
20 <none>
21 <none>
22 <none>
24 1f17a22a6659ea0714a21fca034645cd191e189b
27 a84e113d8b7c124178b58e2f40f57b00aae65485
28 dcf3552db0668d416ed880f6e896455d7bab194c
Read other posts