本日も乙

ただの自己満足な備忘録。

GCP マネージドインスタンスグループのインスタンスサイズを簡単に変更するコマンドラインツールを作った

最近、ちょくちょくテストも書いてないツールを作ってばかりです。今回も最近作ったコマンドツールを紹介します。

これは何?

github.com

GCP マネージドインスタンスグループのインスタンスサイズ(最小、最大)だけを変更するコマンドラインツールです。

なんで作った?

GCP Auto Scalerでスケジュールベースでインスタンスサイズを変更したいためです。
例えば、ある決まった時間帯に多くのユーザがアクセスするとか、予測可能な範囲でインスタンスの台数を予め変更したい場合があります。

AWSのAuto Scalingは昔からスケジュールベースでインスタンスサイズを変更する機能が提供されているのですが、GCP Auto Scalerはまだ提供されていません。

参考: Amazon EC2 Auto Scaling のスケジュールに基づくスケーリング - Amazon EC2 Auto Scaling (日本語)

簡易的でいいので同じような仕組みがほしいと思ったので、ツールを作りました。

どうやって使うの?

go get で持ってきて、make build するとバイナリ生成してくれます。生成したバイナリ manual-gcp-autoscaler をパスが通るところに置いてください。

$ go get -u github.com/ohsawa0515/manual_gcp_autoscaler
$ cd manual_gcp_autoscaler
$ make dep
$ make build
$ ls  ./bin/*/manual-gcp-autoscaler
bin/darwin_amd64/manual-gcp-autoscaler bin/linux_amd64/manual-gcp-autoscaler

GCPのクレデンシャルを設定する必要があります。
サービスアカウントキーを発行できる場合は、ダウンロードして配置したJSONファイルのパスに対して 環境変数 GOOGLE_APPLICATION_CREDENTIALS をセットします。

$ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/<SERVICE_ACCOUNT>.json

リージョナルなインスタンスグループの場合は -region オプションでリージョン指定してください。
以下のコマンドを実行するとインスタンスグループ sample-instance-group の最小台数が5、最大台数が10に設定されます。

$ manual_gcp_autoscaler --project sample-project -region asia-east1 -mig sample-instance-group -min 5 -max 10

特定のゾーンに属しているインスタンスグループの場合は -zone オプションで指定してください。
以下のコマンドを実行するとインスタンスグループ sample-instance-group-zone-a の最小台数が3に設定されます(最大台数は変更されません)。

$ manual_gcp_autoscaler --project sample-project -zone asia-east1-a -mig sample-instance-group-zone-a -min 3

システムに組み込む

今のところはcronで仕込んで動かすことを想定していますが、Cloud Scheduler がベータリリースされたり、GAEに入れてScheduler で動かせるといいかなと思っています。

最後に

きっと同じことをしたいと思っている人がいるはず!そんな人はぜひGitHubのスターをつけて使ってみてください。