最近、ちょくちょくテストも書いてないツールを作ってばかりです。今回も最近作ったコマンドツールを紹介します。
これは何?
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のスターをつけて使ってみてください。