TerraformでGoogle Cloud Platformのオートスケーリングを実装する方法

この記事では、Terraformを使用してGoogle Cloud Platform(GCP)でオートスケーリングを実装する方法を説明します。オートスケーリングを使用することで、アプリケーションの負荷に応じて自動的にリソースを増減させることができ、コストを最適化し、サービスの可用性を向上させることができます。
概要
この記事では、Terraformを使用してGoogle Cloud Platform(GCP)でオートスケーリングを実装する方法を説明します。オートスケーリングを使用することで、アプリケーションの負荷に応じて自動的にリソースを増減させることができ、コストを最適化し、サービスの可用性を向上させることができます。
参考記事
オートスケーリングについて
オートスケーリングは、アプリケーションの負荷が変動に応じて、自動的にリソースを増減させる機能です。Google Cloud Platformでは、Compute Engineのインスタンスグループとオートスケーラーを組み合わせて、オートスケーリングを実現することができます。
Terraformでのオートスケーリングの実装
まず、Terraformを使用してVMインスタンスのテンプレートを作成します。このテンプレートは、VMの設定を定義し、後で使用するインスタンスグループによって参照されます。
// main.tf
terraform {
required_providers {
google = {
source = "hashicorp/google"
version = "3.72.0"
}
}
}
provider "google" {
credentials = file(".terraform/providers/registry.terraform.io/hashicorp/google/3.72.0/darwin_arm64/gcp.json")
project = "your-project-id"
region = "your-region"
}
resource "google_compute_instance_template" "example" {
name = "example-template"
machine_type = "e2-medium"
can_ip_forward = false
disk {
source_image = "debian-cloud/debian-10"
}
network_interface {
network = "default"
}
}
次に、インスタンスグループマネージャーを作成します。これは、インスタンステンプレートを基にしてVMインスタンスを作成し、それらを管理するためのリソースです。
// main.tf (続き)
resource "google_compute_target_pool" "example" {
name = "example-target-pool"
}
resource "google_compute_instance_group_manager" "example" {
name = "example-instance-group"
zone = "your-zone"
version {
instance_template = google_compute_instance_template.example.self_link
name = "primary"
}
target_pools = [google_compute_target_pool.example.self_link]
base_instance_name = "example-instance"
}
最後に、オートスケーリングポリシーを定義します。これにより、インスタンスグループのインスタンス数が自動的に調整されます。
// main.tf (続き)
resource "google_compute_autoscaler" "example" {
name = "example-autoscaler"
zone = "your-zone"
target = google_compute_instance_group_manager.example.self_link
autoscaling_policy {
max_replicas = 5 #最大インスタンス数
min_replicas = 1 #最小インスタンス数
cooldown_period_sec = 60
cpu_utilization {
target = 0.5
}
}
}
以上で、Terraformを使用してGoogle Cloud Platformでオートスケーリングを実装する手順が完了しました。これにより、アプリケーションの負荷に応じて自動的にリソースが増減されるようになります。
まとめ
今回は、Terraformを使用してGoogle Cloud Platformでオートスケーリングを実装する方法について説明しました。
また注意点として、オートスケーリングは、手動でインスタンスを停止させても、次のインスタンスがコールドスタンバイとして待機しているため、次のインスタンスが自動的に稼働してしまいます。そのため、インスタンスを停止させたい場合には手動でオートスケーリングポリシーを一時的に停止するか、インスタンスグループごと停止させる必要があります。
私自身、稼働中のインスタンスを停止させるだけで、オートスケーリングは止まると思っていたので、止まらずに少し焦りました(汗)
Terraformを使用すれば、一つのコマンドで、インフラを準備することが可能ですが、クラウド側の挙動がイメージ出来ていなければこういったトラブルも起きてしまいます。
皆さんも今回の事例を参考に、TerraformでのIac(Infrastructure-as-code)にチャレンジしてみてください!