こんにちは、こえじまです。
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イメージをビルドしていきます。
前回のラボは以下の記事で解説しています。
[kanren2 postid=”2210″]
前回同様、プロジェクト名のバケットの中に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のイメージがあることを確認しておきましょう。
[aside]補足
v1のイメージはGCRにありませんでしたが、きっとそういう仕様なのでしょう。
[/aside]
Task3. 更新したアプリケーションをKubernetesクラスタにデプロイする
Task1でやっていなかった、クラスタへのecho-app:v2
デプロイを実施します。
GUIでやる方法とDeploymentを書き換える方法の2つがあります。
GUIでやる方法
ナビゲーションメニューのKubernetes Engine > Workloadsをクリックし、echo-webを開きます。
画面上部のACTIONSをクリックし、Rolling updateを選択します。
Image部分の末尾にあるv1をv2に書き換えてUPDATEをすれば完了です。
Active revisionsがRevision2になっていることを確認しておきましょう。
echo-web画面の上部でEDITをクリックし、YAMLのimage部分をv2に書き換えてSaveしてもデプロイ出来ます。
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を選択します。
Replicas部分に2を入力してSCALEをクリックすれば完了です。
Managed Podsが2つに増えていることを確認しましょう。
こちらもコンソールの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のクエスト解説は次の記事でまとめています。
良かったらそちらもご覧ください。
[kanren2 postid=”2317″]
コメント