TL;DR
- インスタンスリソース (CPU, Memory size, etc...) がどれぐらい必要か確認して十分なサイズを設定する
- エラーが出た時はStackdriver Loggingのログをよく確認すること
gcloud app deploy
でデプロイした後ブラウザからアクセスすると以下のような502
エラーとテキストが出ました。
Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.
Stackdriver Loggingを見るとVMのヘルスチェックに失敗してプロキシであるNginxからサービスにルーティングできていないようでした。
私はここで勘違いして自分のコードかデプロイに使用したDockerfileに問題があると思っていました。
その後Stackdriverでログを確認して、最終的にVMのディスクスペースが足りずにヘルスチェックに失敗していることがわかりました。
残りのエラーはメモリー不足でした。App Engineのデフォルト値 (600MB) を使用していました。
app.yamlにディスクサイズとメモリサイズの設定を追加してデプロイし直しました。設定についてはapp.yaml Configuration Fileを参照してください。
変更前
runtime: custom
env: flex
service: my-service
health_check:
enable_health_check: False
変更後
runtime: custom
env: flex
service: my-service
health_check:
enable_health_check: False
resources:
cpu: 2
memory_gb: 5
disk_size_gb: 25
設定を変更した後、正しく動作しました!
ポイントとしてはStackdriver loggingのログをよく見ましょうと言うことです。このエラーに2日間ほど悩まされました😭