4

クラウド バックエンドのセットアップには、5 つの Cloud SQL for Postgres インスタンスが含まれています。Terraform を使用してインフラストラクチャを管理します。パブリック IP とCloud SQL コンテナを使用して GKE から接続しています。

セットアップを簡素化するために、プライベート IP に移動してプロキシ コンテナーを取り除きたいと考えています。Terraformガイドに従ってみました。単一のインスタンスの作成は正常に機能しますが、5 つのインスタンスを同時に作成しようとすると、4 つのインスタンスが失敗し、1 つのインスタンスが成功します。 GCP コンソールの失敗したインスタンスのリスト

失敗したインスタンスの Google Clod Console に表示されるエラーは、「不明なエラーが発生しました」です。 インスタンスが失敗し、GCP コンソールにエラー メッセージが表示される

以下は、それを再現するコードです。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それらすべてにリンクする単一のアドレス範囲を作成しましたが、同じエラーが発生しました。
4

3 に答える 3

1

少し異なるケースで誰かがここに到達した場合 (プライベート ネットワークでgoogle_sql_database_instanceを作成すると、「不明なエラー」が発生します):

  1. 1 つの Cloud SQL インスタンスを手動で起動します (これにより、servicenetworking.googleapis.comと、プロジェクトの他の API が有効になります)
  2. マニフェストを実行する
  3. 手順 1 で作成したインスタンスを終了します。

その後、私のために働きます

¯_(ツ)_/¯

于 2020-09-30T19:26:10.913 に答える