本記事は ZOZO Advent Calendar 2022 カレンダー Vol.1 の 13 日目の記事です。昨日の投稿は @tippy さんの「PagerDuty CLIでscheduleをoverrideする方法」でした。
今回作成したロードバランサー
今回はGoogle Compute Engine(GCE)で構築したSFTPサーバの前段に置くロードバランサーのため、L7(http/https)ロードバランサではなく、L4(TCP/UDP)ロードバランサを選択しました。
なお、GCPにおける実現可能なロードバランサーは以下にまとまっているため、実際に構築を行う際は要件を満たすものを選択してください。
https://cloud.google.com/load-balancing/docs/choosing-load-balancer?hl=ja#lb-summary
事前準備
事前準備としてTerraformとgcloud CLIをインストールしておきます。
Terraformに関しては業務などで複数のversionのTerraformを使用するのであればtfenvを使うのがおすすめです。
Terraformによる作成
Terraformのコードが以下になります。
resource "google_compute_address" "test-nlb-ip" {
name = "test-nlb-ip"
project = local.project
region = local.region
address = local.sftp_server_nlb_ip
}
resource "google_compute_region_backend_service" "test-nlb-backend-service" {
provider = google-beta
name = "test-nlb-backend-service"
project = local.project
region = local.region
load_balancing_scheme = "EXTERNAL"
protocol = "TCP"
backend {
group = google_compute_region_instance_group_manager.test-sftp-instance-group-manager.instance_group
}
health_checks = [google_compute_region_health_check.test-nlb-health-check.id]
}
resource "google_compute_region_health_check" "test-nlb-health-check" {
provider = google-beta
name = "test-nlb-health-check"
project = local.project
region = local.region
tcp_health_check {
port = "80"
}
}
resource "google_compute_forwarding_rule" "test-nlb-forwarding-rule" {
provider = google-beta
name = "test-forward-rule"
project = local.project
region = local.region
load_balancing_scheme = "EXTERNAL"
backend_service = google_compute_region_backend_service.test-nlb-backend-service.id
ip_address = google_compute_address.test-nlb-ip.id
ip_protocol = "TCP"
ports = ["22"]
}
TerraformのGoogle Providerにはロードバランサーというリソースは存在しておらず、複数のリソースを組み合わせてロードバランサーの機能を実現しています。
google_compute_addressに関してはロードバランサーに紐付けるIPアドレスを固定するために使用しています。
また、google_compute_region_backend_serviceで指定しているbackendについてはGCEで構築しているSFTPサーバのinstance-managerを指定しています。
おわりに
GCPのL7ロードバランサーをTerraformで作成してみた記事は見かけるのですが、L4ロードバランサーの記事はあまり無かったので書いてみました。