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