[Qwiklabs]Kubernetesクラスタでのコンテナ化されたアプリケーションのスケールアウトと更新

PR

こんにちは、こえじまです。

GCPのProfessional Cloud Architect受験に向け、Qwiklabsのハンズオンを勉強中です。

今回はKubernetesクラスタでのコンテナ化されたアプリケーションのスケールアウトと更新(GSP305)の解説をします。

シナリオ(抜粋)

あなたはデプロイ対象のコンテナ化されたテストアプリケーションの最新版を提供されました。

あなたは、このコンテナ化されたテスト用ウェブアプリケーションを管理する責任があります。

まず、echo-appと呼ばれるテスト アプリケーションの初期バージョンを、echo-webと呼ばれるデプロイメントでecho-clusterと呼ばれるKubernetesクラスタにデプロイします。

とのことですが要するに、前回のKubernetesクラスタへのDockerイメージのビルドとデプロイの続きで、v1をv2にアップデートしたり、Podsの数を増やすというラボでした。

では、やっていきましょう。

事前準備

問題文にも指定がありますが、ログインしたらCloud Shellを開いて、以下のコマンドを実行しましょう。

# echo-clusterを扱うよう設定
gcloud container clusters get-credentials echo-cluster --zone=us-central1-a

# echo-webをクラスタにデプロイ
kubectl create deployment echo-web --image=gcr.io/qwiklabs-resources/echo-app:v1

# echo-webを外部に公開
kubectl expose deployment echo-web --type=LoadBalancer --port 80 --target-port 8000

更新前のアプリケーションは自分でデプロイする仕様のようなので忘れずに実施しましょう。

Task1. 新しいタグ付きの更新版アプリケーションをビルドしデプロイする

前回のKubernetesクラスタへのDockerイメージのビルドとデプロイと同様、GCSに保存されているDockerイメージをビルドしていきます。

前回のラボは以下の記事で解説しています。

[Qwiklabs]KubernetesクラスタへのDockerイメージのビルドとデプロイ

2020年6月12日

前回同様、プロジェクト名のバケットの中にecho-web-v2.tar.gzがあることを確認しましょう。

echo-web-v2.tar.gzを確認

Cloud Shellを開き、以下のコマンドでビルドします。

# PROJECT名を変数に登録
export PROJECT=$(gcloud info --format='value(config.project)')

# GCSからecho-web-v2.tar.gzをコピー
gsutil cp gs://${PROJECT}/echo-web-v2.tar.gz .

# echo-web.tar.gzを解凍
tar -xvzf echo-web-v2.tar.gz

# -tオプションでタグを付けてビルド
docker build -t echo-app:v2 .

これでビルドは完了です。デプロイはGCRのイメージを使うので、Task3で行います。

Task2. イメージをGoogle Container Registryにpushする

引き続きCloud Shellで実施していきます。こちらも詳細は前回の記事を参照してください。

# Dockerイメージにタグを付ける
docker tag echo-app:v2 gcr.io/$PROJECT/echo-app:v2

# タグを付けたDockerイメージをGCRにpush
docker push gcr.io/$PROJECT/echo-app:v2

ナビゲーションメニューのContainer Repository > Imagesにpushしたv2のイメージがあることを確認しておきましょう。

GCRの確認
補足
v1のイメージはGCRにありませんでしたが、きっとそういう仕様なのでしょう。

Task3. 更新したアプリケーションをKubernetesクラスタにデプロイする

Task1でやっていなかった、クラスタへのecho-app:v2デプロイを実施します。

GUIでやる方法とDeploymentを書き換える方法の2つがあります。

GUIでやる方法

ナビゲーションメニューのKubernetes Engine > Workloadsをクリックし、echo-webを開きます。

画面上部のACTIONSをクリックし、Rolling updateを選択します。

Rolling Updateをクリック

Image部分の末尾にあるv1をv2に書き換えてUPDATEをすれば完了です。

imageの末尾を書き換え

Active revisionsがRevision2になっていることを確認しておきましょう。

v2になっていることを確認

echo-web画面の上部でEDITをクリックし、YAMLのimage部分をv2に書き換えてSaveしてもデプロイ出来ます。

YAMLを編集

Deploymentを書き換える方法

参考:
Kubernetes Engineによるデプロイの管理
GKEでkubernetesを理解する – Qiita

# echo-webのDeploymentを開く
kubectl edit deployment echo-web

# imageのv1をv2に書き換えて保存

進行状況は以下のコマンドで確認することが出来ます。

DISIREDが理想数なので、DESIREDとCURRENTが一致すればRolling Update完了です。

kubectl get replicaset

# 出力例
NAME                  DESIRED   CURRENT   READY   AGE
echo-web-764d9d869f   0         0         0       5m36s
echo-web-d7dcd97c6    2         2         2       2m47s

Task4. 2つのレプリカを実行できるように、アプリケーションをスケールアウトする

スケールアウトもGUIでやる方法とDeploymentを書き換える方法の2つがあります。

GUIでやる方法

ナビゲーションメニューのKubernetes Engine > Workloadsをクリックし、echo-webを開きます。

画面上部のACTIONSをクリックし、Scaleを選択します。

Scaleを選択

Replicas部分に2を入力してSCALEをクリックすれば完了です。

replicasに2を入力

Managed Podsが2つに増えていることを確認しましょう。

Podsが増えていることを確認

こちらもコンソールのYAMLを書き換えることでも出来ます。

Deploymentを書き換える方法

# echo-webのDeploymentを開く
kubectl edit deployment echo-web

# replicasを2に書き換えて保存

# 下記コマンドでecho-webが2つ並んでたらOK
kubectl get pods

これで全タスク完了です。

完了!

お疲れさまでした!

このラボが含まれる、Cloud Architecture: Design, Implement, and Manageのクエスト解説は次の記事でまとめています。

良かったらそちらもご覧ください。

[Qwiklabs]Cloud Architecture: Design, Implement, and Manageの解説

2020年6月17日

PR

コメントを残す

メールアドレスが公開されることはありません。