寝ても覚めてもこんぴうた

プログラム書いたり、ネットワーク設計したり、サーバ構築したり、車いじったり、ゲームしたり。そんなひとにわたしはなりたい。 投げ銭は kyash_id : chidakiyo マデ

Cloud Run で最新のリリースバージョンにトラフィックを流す

f:id:chidakiyo:20200824092244j:plain

Cloud Run を利用する際、defaultではデプロイした新しいリビジョンに対してトラフィックが移行されるような振る舞いになっていると思います。GAE の gcloud app deploy コマンドで言う --promote オプション相当です。

ただ、Web の UI などから過去のリビジョンにトラフィックを切り替えたりすると、次回からその appendine の --promote オプション相当の振る舞い(新しいバージョンにトラフィックが流れる)が無効になり、前回トラフィック切り替えをした状態が維持されます。

そのため、 gcloud run deploy コマンドで新しいバージョンをどんどんデプロイし、新しいリビジョンでリクエストを処理したい場合には新しいバージョンへのトラフィック切り替えが必要になります。

今回はそれをもとに戻しましょうという記事になります。

必要なコマンド

早速ですが、必要なコマンドは

gcloud run services update-traffic

になります。

GAE に慣れている人の感覚だと gcloud run deploy のオプションにありそうな気もしますが、 Run の場合には Traffic をコントロールするための別のコマンドで操作します。

必要なオプションは

--to-latest
True to assign 100 percent of traffic to the 'latest' revision of this service. Note that when a new revision is created, it will become the 'latest' and traffic will be directed to it. Defaults to False. Synonymous with '--to-revisions=LATEST=100'.

これですね。
マニュアルには default で false になっていると書いてあります。(が、振る舞い的に true な気もするが・・・)

コマンド

以下のようなコマンドで実行します。

gcloud run --project=${PROJECT_ID} services update-traffic --to-latest

最低限上記のオプションぐらいで実行できますが、
--region , --platform あたりの引数を渡すとコマンド一発で実行できるようになるでしょう。

以上です。

参考

https://cloud.google.com/sdk/gcloud/reference/run/services/update-traffic#--to-latest https://cloud.google.com/sdk/gcloud/reference/run/deploy