クラウド バックエンドのセットアップには、5 つの Cloud SQL for Postgres インスタンスが含まれています。Terraform を使用してインフラストラクチャを管理します。パブリック IP とCloud SQL コンテナを使用して GKE から接続しています。
セットアップを簡素化するために、プライベート IP に移動してプロキシ コンテナーを取り除きたいと考えています。Terraformガイドに従ってみました。単一のインスタンスの作成は正常に機能しますが、5 つのインスタンスを同時に作成しようとすると、4 つのインスタンスが失敗し、1 つのインスタンスが成功します。
失敗したインスタンスの Google Clod Console に表示されるエラーは、「不明なエラーが発生しました」です。
以下は、それを再現するコードです。count = 5
次の行に注意してください。
resource "google_compute_network" "private_network" {
provider = "google-beta"
name = "private-network"
}
resource "google_compute_global_address" "private_ip_address" {
provider = "google-beta"
name = "private-ip-address"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = "${google_compute_network.private_network.self_link}"
}
resource "google_service_networking_connection" "private_vpc_connection" {
provider = "google-beta"
network = "${google_compute_network.private_network.self_link}"
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = ["${google_compute_global_address.private_ip_address.name}"]
}
resource "google_sql_database_instance" "instance" {
provider = "google-beta"
count = 5
name = "private-instance-${count.index}"
database_version = "POSTGRES_9_6"
depends_on = [
"google_service_networking_connection.private_vpc_connection"
]
settings {
tier = "db-custom-1-3840"
availability_type = "REGIONAL"
ip_configuration {
ipv4_enabled = "false"
private_network = "${google_compute_network.private_network.self_link}"
}
}
}
provider "google-beta" {
version = "~> 2.5"
credentials = "credentials.json"
project = "PROJECT_ID"
region = "us-central1"
zone = "us-central1-a"
}
私はいくつかの選択肢を試しました:
- を作成してから 1 分待ってから、
google_service_networking_connection
すべてのインスタンスを同時に作成しましたが、同じエラーが発生しました。 - アドレス範囲と
google_service_networking_connection
インスタンスごとを作成しましたが、google_service_networking_connection
同時に作成できないというエラーが発生しました。 - インスタンスごとにアドレス範囲を作成し、
google_service_networking_connection
それらすべてにリンクする単一のアドレス範囲を作成しましたが、同じエラーが発生しました。