Kubernetes(k8s)を学ぼう! Blue-Greenデプロイ編

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

今回は、Kubernetesを使ってBlue-Greenデプロイを勉強しましょう。

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

Blue-Greenデプロイ

Blue-Greenデプロイは、新しいバージョンのアプリケーション/サービスを新しいインスタンスにデプロイする方法です。

アプリケーション/サービストラフィックは、検証後に新しいインスタンス(緑色)にルーティングされます。以前のバージョン(青)は、ロールバック用に保持することも、削除することもできます。

アプリケーションの準備

Goを使って簡単なアプリケーションを実装します。

フォルダ/ファイルの準備

Dockerfile

Blue/GreenのDockerfileを用意します。中身は同じです。

blue/main.go

green/main.go

blue/blue.yml

Deploymentのymlファイルです。roleのblueが大切です。

green/green.yml

Deploymentのymlファイルです。roleのgreenが大切です。

service.yml

Serviceのymlファイルです。roleはblue(以前のバージョン)を指定しています。つまり、初期表示時にはBlueのPodが呼び出されます。roleで制御するわけですね。

検証

準備が整ったので、検証していきましょう。

Docker Imageのbuild

先ほど作成したGoアプリをDocker Imageにします。

Docker HubへPush

Docker HubへDocker ImageをPushします。

最初に、repositoryを作成しましょう。

先ほど作成したDocker Imageをコンテナ化します。

Deploymentの作成

以下のコマンドで、Deploymentを作成しましょう。

Serviceの作成

以下のコマンドで、Serviceを作成しましょう。

画面表示

ブラウザから上記のURLにアクセスします。

狙い通り、Blue Podが起動していますね。実際にはGreen Podも起動してますが、トラフィックはBlue Podに割り当てられています。

Green Podへの切り替え

Serviceを一旦消します。

また、service.ymlのroleをgreenに切り替えます。

serviceを作ります。

「http://192.168.99.101:32302」にアクセスします。

OKですね。

本当は以下のコマンドで切り替えられるはずなのですが、私の環境だと不可でした^^;

おわりに

微妙なBlue-Greenデプロイメント記事になってしまいましたが、やりたいことは伝わったと思います!(前向き)

現場で早くkubernetsを入れたいです。

市場価値を上げるために!

それでは、また!

記事まとめ

参考

コメントを残す