ロールアウト・ロールバック
ロールアウト機能
ロールアウトとは、アプリケーションコンテナの更新
サービスが止まらないよう、古いPodと新しいPodを入れ替えることが可能
例)nginxの設定を変更する
手順
- nginxの設定を変更
- 新しいコンテナイメージとしてビルド
- コンテナイメージをリポジトリへ登録する
- マニフェストで指定されているコンテナイメージ新しいコンテナイメージに変更する
- ロールアウト
マニフェストファイルの作成
変更前のマニフェストをnginx-deployment2.yml、変更後のマニフェストをnignx-deployment3.ymlとする
1 | $ cat nginx-deployment2.yml |
nginxのバージョンは1.16
変更後
1 | $ cat nginx-deployment3.yml |
違いは
1 | $ diff -u nginx-deployment2.yml nginx-deployment3.yml |
のようにバージョンのみ
マニフェストの適用
まずはnginx-deployment2.ymlから
1 | $ kubectl apply -f nginx-deployment2.yml |
起動したことがわかる
詳細に見る場合はkubectl describeを利用する
1 | $ kubectl describe deployment web-deploy |
nginxのimageは1.16
次にnginx-deployment3.ymlを適用する
1 | $ kubectl apply -f nginx-deployment3.yml |
数十秒で入れ替わったことがわかる
1 | $ kubectl describe deployment web-deploy |
nginxのimageが1.17になっているのがわかる。またEventsにロールアウトの履歴が残っていることがわかる
ロールバック機能
Kubernetesにおけるロールバック機能は「ロールアウト前の古いコンテナへ戻すためにPodを入れ替えること」をさす
ロールバックコマンド
以下の1行で実行できる
1 | kubectl rollout undo deployment デプロイメント名 |
実際に実行してみる
1 | $ kubectl rollout undo deployment web-deploy |
実際に動いているバージョンを確認する
1 | $ kubectl describe deployment web-deploy |
1.16に戻っていることがわかる
ロールアウト、ロールバック機能はサービスを停止することなくリリースを行うことができる
実際にアクセスできるサービスを立ち上げないと実感がわかないので、次はServiceについて調べてみる