gcpug / nouhau

Google Cloud Platformのノウハウを共有するRepository
https://gcpug.jp
MIT License
653 stars 23 forks source link

GAE Admin API を使って動的にスケーリングオプションを変更する #56

Open apstndb opened 6 years ago

apstndb commented 6 years ago

あまり知られていないが App Engine Admin API の中には gcloud appappcfg.py が内部的に呼ぶような API が含まれているだけでなく、コマンドラインから行うことができない機能も提供されている。 例えば下記のように apps.services.versions.patch を呼ぶと automatic scaling の min_instances を再デプロイなしで変更できる。

$ curl -X PATCH "https://appengine.googleapis.com/v1/apps/${GAE_PROJECT}/services/${GAE_SERVICE}/versions/${GAE_VERSION}?updateMask=automaticScaling.standardSchedulerSettings.minInstances" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{"automaticScaling": {"standardSchedulerSettings":{"minInstances": 2}}}'

よく見ると専用コマンドを使わずに GAE/SE にデプロイする方法なども説明されているのでやってみると面白いかも。 https://cloud.google.com/appengine/docs/admin-api/deploying-overview?hl=en

apstndb commented 6 years ago

poem として残すほど完成度を上げるかは知らないけどとりあえず書いておいた

sinmetal commented 6 years ago

Automatic ScalingのminInstancesを止める?みたいなことはできないから、こいつでせっせとトラフィックがないVersionminInstancesを0にしたりする必要があるのか

apstndb commented 6 years ago

GAE の Version は Kubernetes でいうと pod template の更新はできないし単体の Pod を削除しても元の個数に戻るけど replicas の更新はできる ReplicaSet みたいなものってわけですね