- 公開日
Google App EngineのGo runtimeを1.11から1.12にアップグレードした
Google App Engineで設定しているGoアプリケーションのruntimeを過渡期世代(?)のGo 1.11からGo 1.12にアップグレードしたのでその備忘録。
前回までのあらすじ
GAEを第一世代から第二世代に上げたときの備忘録としてblogged. | Google App Engineを第一世代から第二世代に乗り換えた - Hack Your Design! https://t.co/L1sLTXo4VE
— toshimaru (@toshimaru_e) May 20, 2019
きっかけ
「2019年10月1日までにGo1.11かそれ以上に上げろ」というメールがGoogleさんから届いたのでした。
What do I need to do?
To avoid service disruption in your applications, please re-deploy your App Engine Standard applications using Go 1.11 or above before October 1, 2019.
If your application uses the App Engine Go SDK APIs, please upgrade to Go 1.11.
If you are not using these APIs, please upgrade to Go 1.12.
以前、Go 1.11までは上げていたので正直そのままでもよかったのだけど、せっかくなので1.12まで上げてみることにした。
過渡期世代とは?
ちなみにGo 1.11は第一世代から第二世代への過渡期世代と言える。Go 1.12にすることで完全なる第二世代へと移行されることとなる。
第二世代にはApp Engine API対応の過渡期の世代とApp Engine API非対応の完璧な第二世代があります。
ここで言うとJava 8、Go 1.11が過渡期の世代にあたるようです。Go 1.12やPHP 7.2のバージョンの世代は完璧な第二世代にあたるので、App Engine APIは利用不可となります。
ref. Google App Engineを第一世代から第二世代に乗り換えた
アップグレード手順
基本的に下記の公式ドキュメントを参考に進めていけばよい。
app.yml
app.yml
にてruntimeをGo 1.11から1.12へ変更。一番重要な点。
runtime: go112
cron.yml
cron.yml
はそのままの書式で変更なしで大丈夫。このcronジョブの機能はGAEのConsole上にメニューとして残り続けるようだ。
参考: Scheduling Jobs with cron.yaml
タスクキュー
Cloud Tasks でのキュー管理方式に置き換わった。必要なら乗り換えよう。
Cloud Tasks の使い方に関してはGoogle App Engineとはまた別の公式ドキュメントを読もう。
Cloud Tasks Service for Asynchronous Execution | Cloud Tasks | Google Cloud
ローカル開発環境
dev_appserver.py は使えない
今までどおりの dev_appserver.py
を使うと下記のようにエラーが発生して起動できない。
$ dev_appserver.py app.yaml
...(snip)...
RuntimeError: Unknown runtime 'go112'; supported runtimes are 'custom', 'go', 'go111', 'java', 'java7', 'java8', 'php55', 'php72', 'python', 'python-compat', 'python27', 'python37'.
Go 1.11 に乗り換えているならば app.go
は素直な実装になっているはずなので、下記のようにgo run
でローカルにサーバーを起動することができる。
$ go run app.go
カナリアリリースっぽいやつ
下記のようにno-promote
オプションを付けることで、本番環境へのトラフィックを振らない形でデプロイができる。これを使った場合、本番URLとは別に確認陽のURLが発行されているので、それを使って動作確認を行った後に本番へと昇格させるかたちとなる。
$ gcloud app deploy --no-promote
参考: Testing and Deploying your Application