KubernetesでDeploymentのRollback

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは、サイオステクノロジー技術部 武井です。KubernetesでDeploymentのRollbackを試してみました。

Kubernetesには、いつでも旧バージョンのデプロイに戻せるようにDeploymentのRollback機能があります。試したのはAzure Kubernetes Serviceですが、他のクラウドサービス上のKubernetesでも同じだと思います。

以下のようにhogeと表示する単純なPHPをVer1.0とします。

<?php
echo "hoge";
?>

こちらの記事の方法に従って、Azure Container Registryにpushして、以下のkubectlコマンドでデプロイします。–recordオプションをtrueにしたのは、変更履歴に残したいためです。

# kubectl apply --filename=deployment.yml --record=true

 

以下のコマンドで変更履歴を確認してみます。先程デプロイした履歴がREVISION 1として記録されています。

$ kubectl rollout history deployment deployment-example
deployment.extensions/deployment-example 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=deployment.yml --record=true

 

portfowardでコンテナの動作を確認してみます。

$ kubectl get pods
NAME                                  READY   STATUS    RESTARTS   AGE
deployment-example-66fcc4b9f7-5f8sh   1/1     Running   0          40m
deployment-example-66fcc4b9f7-j4pdc   1/1     Running   0          40m
deployment-example-66fcc4b9f7-jtp9z   1/1     Running   0          40m
$ kubectl port-forward deployment-example-66fcc4b9f7-5f8sh 8080:80
$ curl https://localhost:8088/test.php
hoge

hogeと表示されました。期待どおりです。

 

次に先程のPHPを以下のように変更してみます。

<?php
echo "fuga";
?>

 

同じようにこちらの記事の方法に従って、Azure Container Registryにpushして、以下のkubectlコマンドでデプロイします。

# kubectl apply --filename=deployment.yml --record=true

 

同じように以下のコマンドで変更履歴を確認してみます。先程デプロイした履歴がREVISION 2として記録されています。

$ kubectl rollout history deployment deployment-example
deployment.extensions/deployment-example 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=deployment.yml --record=true
2         kubectl apply --filename=deployment.yml --record=true

 

portfowardでコンテナの動作を確認してみます。

$ kubectl get pods
NAME                                  READY   STATUS    RESTARTS   AGE
deployment-example-5f796c7988-5klnz   1/1     Running   0          19s
deployment-example-5f796c7988-dgsnh   1/1     Running   0          22s
deployment-example-5f796c7988-v64g2   1/1     Running   0          16s
$ kubectl port-forward deployment-example-5f796c7988-5klnz 8080:80
$ curl https://localhost:8088/test.php
fuga

fugaと表示されました。期待どおりです。

 

では、前のバージョンにRollbackしてみます。kubectl rollout undo deploymentコマンドで以下のように行います。Revisionを1に戻したいので、–to-revisionで1を指定します。

$ kubectl rollout undo deployment deployment-example --to-revision=1

portfowardでコンテナの動作を確認してみます。

$ kubectl get pods
NAME                                  READY   STATUS    RESTARTS   AGE
deployment-example-66fcc4b9f7-ct4g6   1/1     Running   0          3m41s
deployment-example-66fcc4b9f7-nm97m   1/1     Running   0          3m38s
deployment-example-66fcc4b9f7-qmjp6   1/1     Running   0          3m44s
$ kubectl port-forward deployment-example-66fcc4b9f7-ct4g6 8080:80
$ curl https://localhost:8088/test.php
hoge

hogeと表示されました。一つ前のRevisionに戻せました。

Kubernetesではこんなに簡単に前のバージョンに戻せるので、とっても便利ですね。万が一のステップバックも簡単です。

アバター画像
About 武井 宜行 269 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる