6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GAEのデプロイ時のトラフィック移行について

Last updated at Posted at 2019-11-21

1. はじめに

現在Associate Cloud Engineer試験の資格取得に向けて勉強をしています。
模擬試験でGAEのデプロイ時のトラフィックについての問題があり、気になったので調査しました。

1-1. 気になったこと

GAEでは、以下のコマンドでデプロイした場合、新バージョンへ自動的にトラフィックが移行します。
では、逆に移行させない方法はあるのでしょうか…?

$ gcloud app deploy

1-2. 結論

デプロイ時に以下のオプションを指定する事で、トラフィックを移行させない事が可能です。

$ gcloud app deploy --no-promote

--promoteオプションについては、リファレンスに記載がありました。
https://cloud.google.com/sdk/gcloud/reference/app/deploy

--promote
Promote the deployed version to receive all traffic. Overrides the
default app/promote_by_default property value for this command
invocation. Use --no-promote to disable.

デフォルトは--promoteになっており自動で新バージョンにトラフィックが移行します。

トラフィックを移行させたくない場合は、--no-promoteを指定することで制御可能なようです。
その後、トラフィックを手動で移行させる場合は、以下のコマンドを実行します。

gcloud app services set-traffic [MY_SERVICE] --splits [MY_VERSION]=1

2. トラフィックの分割機能を利用している場合はどうなるか?

GAEのコンポーネントは以下のように構成されており、一つのサービスに複数のバージョンを構成できます。

GAEにはトラフィックをバージョン毎に分割する機能がありA/Bテストなどで利用されます。
Untitled Diagram (1).png

トラフィックの分割機能が有効な状態で、デプロイした場合はどのようにトラフィックが移行されるのでしょうか?

2-1. 結論

こちらも単純に--no-promoteであれば、既存の分割設定が有効なまま、トラフィックは新バージョンに移行されませんでした。

--promoteもしくは指定なしの場合は、新バージョンにトラフィックが100%で移行されます。

2-2. 確認内容

実際に、アプリデプロイ〜トラフィック分割〜トラフィック移行までを実施してみました。

アプリのデプロイ(v1,v2)

アプリのバージョン1と2をデプロイします。

$ gcloud app deploy -v 1
$ gcloud app deploy -v 2

トラフィックの分割設定

トラフィックの分割設定をv1=50%,v2=50%で設定します。

gcloud app services set-traffic default --splits 1=50,2=50

GCP Consoleでは以下のようになります。
スクリーンショット 2019-11-21 11.25.28.png

アプリのデプロイ(v3)

アプリのバージョン3をデプロイします。--no-promoteを指定するのでトラフィックは移行しません。

$ gcloud app deploy -v 3 --no-promote

GCP Consoleでは以下のようになりました。トラフィックはv1=50%,v2=50%のままです。スクリーンショット 2019-11-21 11.35.38.png

アプリのデプロイ(v4)

アプリのバージョン4をデプロイします。--promoteを指定するのでトラフィックが移行します。

$ gcloud app deploy -v 4 --promote

GCP Consoleでは以下のようになりました。トラフィックが新バージョンに移行しました。
スクリーンショット 2019-11-21 11.41.13.png

3.おわりに

--no-promoteを実際に使うケースがあるか分からないですが、オプション一つで制御できるのは便利だと思いました。
また、トラフィックの分割機能もコマンド/GUIで簡単に制御できるのは素敵ですね。
(コマンドベースでトラフィックの分割設定情報を取得する方法はあるのでしょうか…?)

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?