Kubernetes(k8s)を学ぼう! Microservices編~Deployment~

こんにちは。KOUKIです。k8s学習中のWebエンジニアです。

KubernetesでMicroservicesのデプロイ方法を学びましょう。

本記事では、Deploymentについて解説します。

尚、今回もMinikubeを使いますので、以下の記事でインストール&起動してください。
※ MacおよびChromeで検証します。

参考

Udemyの「Kubernetes Hands-On – Deploy Microservices to the AWS Cloud」コースを参考にしています。

解釈は私が勝手に付けているので、本物をみたい場合は受講してみてください。

API OVERVIEWも参考になります。

前回

現在の状況は、以下のようになってます。

Deploymentについて

Deploymentは、Podのローリングアップデートやロールバックといったデプロイ管理の仕組みを提供します。

前回、ReplicaSetを実装しましたが、それをDeploymentで管理する方法が一般的なようです。

ReplicaSetの削除

前回構築したReplicaSetを削除します。

Deploymentの作成

公式を参考に、Deploymentを作成しましょう。

queue Podは以前作成した設定なので、無視してください。

変更した点は、「kind: Deployment」とベースのイメージの「release:0-5」-> 「release:0」です。

下記のコマンドで、Deploymentを作成します。

問題なくDeploymentが作成されていますね。

アプリケーションを起動しましょう。

問題なさそうですね。

ローリングアップデート

Deploymentは、ローリングアップデートの仕組みを提供しています。

現在、「release:0」のアプリケーションを稼働させていますが、「release:0-5」のアプリケーションを稼働させたい場合、アプリケーションの瞬断なしに更新できるというめちゃくちゃ便利な機能です。

DeploymentがReplicasetを制御できるからこの仕組みが使えるのだと思います。

pods.ymlmファイルのイメージを更新します。

必要なことはこれだけです。

minReadySeconds」は必須ではありません。デフォルトは0sです。

今回デモとして瞬断なしで新しいアプリケーションに切り替わるか確認したいため、指定しています。

Podを更新し、ブラウザを更新し続けましょう。

結構時間がかかりますが、最後の方でアプリケーションが更新されたことがわかります。

ロールバック

kubectlのrolloutコマンドで、ロールバックが簡単に実現できます。

アプリケーションのバージョンを「release:0」に戻します。

アプリケーションを表示します。

「release:0」に戻ってますね。

では、rolloutコマンドを使ってロールバックの確認をしましょう。

30s経過したら「release:0-5」のアプリケーションに切り替わることが確認できます。

便利すぎますね。

次回

次回は、Networkingについて学びましょう。

記事まとめ

参考

コメントを残す