PSA を実行している既存の Cloud SQL インスタンスで Private Service Connect を有効にする(Terraform)

1. 概要

別のプロジェクトまたは VPC ネットワークからプライベート Cloud SQL インスタンスに接続する方法はいくつかあります。プライベート サービス アクセス(PSA)を使用すると、プライベート接続を介して Google サービスとサードパーティ サービスの内部 IP アドレスにアクセスできます。データベースへのアクセスを拡張するために、Private Service Connect(PSC)を有効にすることもできます。

Private Service Connect(PSC)を使用すると、サービス プロデューサーはサービス アタッチメントを介してサービスを公開できます。コンシューマは、環境で PSC エンドポイントや PSC バックエンドを作成するために、このサービス アタッチメントを使用できます。これらの PSC エンドポイントを介して、ユーザー指定のプライベート IP 経由でプロデューサー サービスに接続できます。

このラボでは、このオプションを構成してテストします。

このラボでは、CloudSQL で PSA エンドポイント アクセスと PSC エンドポイント アクセスを使用するシンプルなアーキテクチャを構築します。

図 1.

e0e0f83704cc9d62.png

このラボでは、2 つのプロジェクトまたは同じプロジェクト内の個別の VPC が必要です。

目標

このラボでは、次のタスクの実行方法について学びます。

  • サービス ネットワーキングを有効にする
  • PSA を設定する
  • PSA を使用して CloudSQL インスタンスを作成する
  • PSC サービス アタッチメントを有効にします。
  • コンシューマ VPC に PSC エンドポイントを作成して CloudSQL データベースに接続する
  • プロデューサー VPC とコンシューマ VPC の両方で、テスト VM から SQL データベースへのアクセスを確認する

2. 設定と要件

セルフペース型の環境設定

  1. Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
  • プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は PROJECT_ID と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。
  • なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
  1. 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。

Cloud Shell を起動する

Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。

Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。

55efc1aaa7a4d3ad.png

プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

7ffe5cbb04455448.png

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。

3. タスク 1. Terraform を使用してデータベース プロジェクトの環境を設定する

データベース プロジェクトで、サービス ネットワーキングを有効にし、VPC を作成し、PSA 範囲を作成し、サービス ネットワーキング ピアリングを作成し、ファイアウォール ルールを作成します。Cloud コンソールを開き、データベースに使用するプロジェクトを選択します。

  1. コンソールの右上にある Cloud Shell を開き、Cloud Shell にデータベース プロジェクトのデータベース プロジェクト ID が表示されていることを確認します。アクセスを許可するよう求めるプロンプトが表示されたら、そのプロンプトに沿って操作します。4261e776f64ea978.png
  2. terraform-db-psc というフォルダを作成し、そのフォルダに移動します。
mkdir terraform-db-psc  && cd terraform-db-psc
  1. main.tf、variable.tf、nat-vm.tfdatabase.tf ファイルを作成します。
touch main.tf variable.tf nat-vm.tf database.tf 
  1. Cloud Shell エディタ ビューに切り替えます。[editor] を選択し、インターフェースを読み込めるように必要なプロンプトを許可します。
  2. 読み込みが完了したら、[File] > [Open Folder] に移動し、/home/your-user-name/terraform-db-psc に移動して [OK] を選択して、エディタでフォルダを開きます。78f5eb9f2f82f1b0.png
  3. variable.tf ファイルを選択し、次のように追加します。your-database-project-id-here テキストは、実際のデータベース プロジェクト ID に置き換えます。your-consumer-project-id-here テキストを、実際のコンシューマ プロジェクト ID に置き換えます(引用符付き)。
variable "project_id" {
  type = string
  default = "your-database-project-id-here"
}

variable "project_id_consumer" {
  type = set(string)
  default = ["your-consumer-project-id-here"]
}

variable "network_id" {
  type = string
  default = "database-net"
}

variable "region_id" {
  type = string
  default = "us-east1"
}

variable "db_password" {
  type = string
  default = "cloudsql24"
}
  1. 次に、main.tf ファイルを開きます。以下で説明するように、さまざまなアクションを実行する Terraform コードを追加します。

API を有効にする

resource "google_project_service" "default"

VPC を作成する

resource "google_compute_network" "default"

ファイアウォール ルールを追加する

resource "google_compute_firewall" "allow_icmp"

PSA 範囲を作成する

resource "google_compute_global_address" "psa_range"

ピアリングを作成する

resource "google_service_networking_connection" "private_connection"

  1. 次の内容をコピーして main.tf ファイルに貼り付けます。
resource "google_project_service" "default" {
 for_each = toset([
   "compute.googleapis.com",
   "servicenetworking.googleapis.com", 
   "sqladmin.googleapis.com",
   "cloudresourcemanager.googleapis.com"
 ])

 service            = each.value
 disable_on_destroy = false
}

resource "google_compute_network" "default" {
 project                = var.project_id
 name                    = var.network_id
 auto_create_subnetworks = true
 mtu                     = 1460
 routing_mode            = "GLOBAL"
}

resource "google_compute_global_address" "psa_range" {
  name                  = "psa-range-${google_compute_network.default.name}"
  project               = var.project_id
  purpose               = "VPC_PEERING"
  address_type          = "INTERNAL"
  prefix_length         = 20
  address               = "172.18.0.0"
  network               = google_compute_network.default.id

}

resource "google_service_networking_connection" "private_connection" {
  network = google_compute_network.default.self_link
  service = "servicenetworking.googleapis.com"

  reserved_peering_ranges = [
    google_compute_global_address.psa_range.name,
  ]
}

resource "google_compute_firewall" "allow_icmp" {
 name    = "allow-icmp-${google_compute_network.default.name}"
 network = google_compute_network.default.id
 project = var.project_id

 allow {
   protocol = "icmp"
 }

 source_ranges = ["0.0.0.0/0"]
 target_tags   = ["allow-icmp"]
}

resource "google_compute_firewall" "allow_ssh" {
 name    = "allow-ssh-${google_compute_network.default.name}"
 network = google_compute_network.default.id
 project = var.project_id

 allow {
   protocol = "tcp"
   ports    = ["22"]
 }

 source_ranges = ["0.0.0.0/0"]
 target_tags   = ["allow-ssh"]
}

resource "google_compute_firewall" "allow_sql" {
 name    = "allow-sql-${google_compute_network.default.name}"
 network = google_compute_network.default.id
 project = var.project_id

 allow {
   protocol = "tcp"
   ports    = ["3306"]
 }

 source_ranges = ["0.0.0.0/0"]
}

resource "google_compute_firewall" "allow_internal" {
 name    = "allow-internal-${google_compute_network.default.name}"
 network = google_compute_network.default.id
 project = var.project_id

 allow {
   protocol = "icmp"
 }

 allow {
   protocol = "tcp"
   ports    = ["0-65535"]
 }
 allow {
   protocol = "udp"
   ports    = ["0-65535"]
 }

 source_ranges = ["10.128.0.0/9", "172.18.0.0/20"] # Include PSA range
}
  1. Cloud Shell ターミナルに戻り、terraform-db-psc ディレクトリ cd terraform-db-psc にいることを確認して、次のコマンドを実行します。

terraform init

作業ディレクトリを初期化します。このステップでは、指定した構成に必要なプロバイダがダウンロードされます。

terraform plan

実行プランを生成します。このプランには、Terraform がインフラストラクチャのデプロイに行う操作が示されます。

  1. リソースを作成するには、terraform apply コマンドを実行し、yes と入力して実行します。

4. タスク 2. PSA(Terraform)を使用して CloudSQL インスタンスを作成する

Terraform を使用して CloudSQL インスタンスを作成し、接続を許可する PSA オプションを指定します。この構成は、データベース プロジェクトで完了します。

  1. Cloud Shell エディタ ビューに切り替えます。terraform-db-psc フォルダ内にいることを確認します。database.tf ファイルを選択し、次のように追加します。
resource "google_sql_database_instance" "default" {
  name             = "psc-psa-sql-db"
  region           = var.region_id
  database_version = "MYSQL_8_0"  
  settings {
    tier              = "db-f1-micro"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled            = true
      binary_log_enabled = true
    }
    ip_configuration {      
      ipv4_enabled    = "false"
      private_network = google_compute_network.default.id
      
    }
  }
  deletion_protection = false 
}

resource "google_sql_user" "users" {
  name     = "testsql"
  instance = google_sql_database_instance.default.name
  password = var.db_password 
}

  1. Cloud Shell ターミナルに戻り、terraform-db-psc ディレクトリにいることを確認します。リソースを作成するには、terraform apply コマンドを実行し、yes と入力して実行します。PSA を使用して CloudSQL インスタンスを作成する場合、最大で 15 分以上かかることがあります。

データベースを確認する

  1. 完了したら、コンソールの [SQL] に移動し、新しく作成された psc-psa-sql-db データベース インスタンスを選択します。
  2. 左側の SQL オプションのスライドアウトを開き、[接続] を選択します。
  3. [概要] タブには、接続に関する情報が表示されます。
  4. [内部 IP アドレス] をコピーして、システムの任意の場所に保存します。ご覧のとおり、予約した範囲から割り当てられています。
  5. この IP は、タスク 3 のステップ 5 を完了するために必要になります。

5c00f08b0f44c957.png

  1. 左側の SQL オプションのスライドアウトを開き、[ユーザー] を選択します。
  2. testsql というユーザーがパスワード cloudsql24 で表示されます。(これは後で DB へのアクセスに使用されます)

5. タスク 3. テスト用 VM を作成し、DB プロジェクト内から SQL インスタンスに接続する(Terraform)

Terraform を使用して、テスト用 VM と NAT ゲートウェイを作成しましょう。この構成は、データベース プロジェクトで完了します。

  1. Cloud Shell エディタ ビューに切り替えます。terraform-db-psc フォルダ内にいることを確認します。nat-vm.tf ファイルを選択し、次のように追加します。
resource "google_compute_router" "default" {
  name    = "outbound-nat"
  region  = var.region_id
  network = google_compute_network.default.id

 bgp {
  asn = 64514
  }
}

resource "google_compute_router_nat" "default" {
  name = "outbound-nat-gw"
  router = google_compute_router.default.name
  region = google_compute_router.default.region
  nat_ip_allocate_option = "AUTO_ONLY"
  source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"

  log_config {
    enable = true
    filter = "ERRORS_ONLY"
  }
}


resource "google_compute_instance" "sql_net_vm" {
  name         = "db-vm-test"
  machine_type = "e2-medium"
  zone         = "${var.region_id}-b"
  project      = var.project_id

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = google_compute_network.default.self_link
  }

  # No external IP address
  network_performance_config {
    total_egress_bandwidth_tier = "DEFAULT"
  }

  tags = ["allow-icmp", "allow-ssh", "allow-internal", "allow-health-check"]

  # Install MariaDB at startup
  metadata_startup_script = <<EOF
#!/bin/bash
apt-get update
apt-get install -y mariadb-server
systemctl enable mariadb
EOF
}
  1. Cloud Shell ターミナルに戻り、terraform-db-psc ディレクトリにいることを確認します。リソースを作成するには、terraform plan, then terraform apply コマンドを実行し、yes と入力して実行します。これにより、MariaDB がインストールされた NAT ゲートウェイと VM が作成されます。

データベースを確認する

コンシューマ プロジェクトで完了する

  1. [VM インスタンス] に移動します。db-vm-test を選択します。
  2. [SSH] オプションを選択して VM に接続します。
  3. 前にコピーしたローカル IP 経由で DB に接続します。
mysql --host=172.18.0.2 --user=testsql --password=cloudsql24

追伸: 接続するには、IP アドレスを実際の IP アドレスに変更してください。

  1. 接続が確立されたら、次の localvpcsqldb を使用してデータベースを作成します。
CREATE DATABASE localvpcsqldb;
  1. 完了したら、exit と入力して接続を終了します。もう一度 exit と入力して VM を終了します。

6. タスク 4. CloudSQL インスタンスで PSC を有効にする

gcloud コマンドを使用して PSC オプションを有効にして接続を許可しましょう。この構成は、データベース プロジェクトで完了します。

  1. [Cloud Shell] ビューに切り替えます。
  2. Cloud Shell で次のコマンドを実行します。
  • YOUR_DB_PROJECT_HERE は、データベース プロジェクト ID に置き換えます。
  • YOUR_CONSUMER_PROJECT_HERE は、コンシューマ プロジェクト ID に置き換えます。
project_id=YOUR_DB_PROJECT_HERE
allowed_project=YOUR_CONSUMER_PROJECT_HERE

gcloud beta sql instances patch psc-psa-sql-db \
--project=$project_id \
--enable-private-service-connect \
--allowed-psc-projects=$allowed_project
  1. これにより、PSC アタッチメントを使用して既存のデータベースが更新されます。この処理には 10 分以上かかります。

タイムアウト待機エラーが発生した場合は、進行状況を確認するためのコマンドも表示されます。次のようなメッセージが表示されます。「オペレーションの待機を続行するには、gcloud beta sql operations wait –project を実行してください。

新しいデータベースは、最初からPSA と PSC を有効にして デプロイできます。

データベースを確認する

  1. 完了したら、コンソールの [SQL] に移動し、psc-psa-sql-db データベース インスタンスを選択します。
  2. 左側の SQL オプションのスライドアウトを開き、[接続] を選択します。
  3. [概要] タブには、接続に関する情報が表示されます。
  4. Service アタッチメントのアドレスをコピーして、システムの任意の場所に保存します。
  5. これは、次のタスク 5 のステップ 8 を完了するために必要になります。

2cf5ce71eceea326.png

7. タスク 5. コンシューマ プロジェクトの環境を設定する(Terraform)

コンシューマ プロジェクトで、ファイアウォール ルールとサブネットを含むカスタム VPC を作成します。Cloud コンソールを開き、使用するプロジェクトを選択します。

  1. コンソールの上部にある Google Cloud アイコンの横にあるプルダウンをクリックし、[すべて] タブを選択します。

プロジェクトバーproject bar 2

  1. 表示されたプロジェクトから、コンシューマ プロジェクト ID を選択して続行します。
  2. コンソールの右上にある Cloud Shell を開き、Cloud Shell にコンシューマ プロジェクト ID が表示されていることを確認します。アクセスを許可するよう求められたら、プロンプトに沿って操作します。
  3. terraform-consumer-psc というフォルダを作成して、そのフォルダに移動します。
mkdir terraform-consumer-psc  && cd terraform-consumer-psc
  1. main.tf、variable.tfpsc.tf ファイルを作成します。
touch main.tf variable.tf psc.tf 
  1. コンシューマ プロジェクト IDCloud Shell エディタ ビューに切り替えます。[editor] を選択し、インターフェースを読み込めるように必要なプロンプトを許可します。
  2. 読み込みが完了したら、[File] > [Open Folder] に移動し、/home/your-user-name/terraform-consumer-psc に移動して [OK] を選択して、エディタでフォルダを開きます。78f5eb9f2f82f1b0.png
  3. variable.tf ファイルを選択し、次のように追加します。your-consumer-project-id-here テキストは、実際のコンシューマ プロジェクト ID に置き換えます。your-psc-attachment-id-here テキストは、PSC アタッチメント アドレスに置き換えます。これは、タスク 4 セクション 5 ~ 7 でコピーした ID です。d7ac9629a59abfc6.png
variable "project_id" {
  type = string
  default = "your-consumer-project-id-here"
}

variable "psc_attachment_id" {
  type = string
  default = "your-psc-attachment-id-here"
}

variable "network_id" {
  type = string
  default = "psc-endpoint-vpc"
}

variable "region_id" {
  type = string
  default = "us-east1"
}

  1. 次に、main.tf ファイルを開きます。以下で説明するように、さまざまなアクションを実行する Terraform コードを追加します。

API を有効にする

resource "google_project_service"

VPC を作成する

resource "google_compute_network"

NAT ゲートウェイを作成する

resource "google_compute_router"
resource "google_compute_router_nat"

ファイアウォール ルールを追加する

resource "google_compute_firewall"

  1. 次の内容をコピーして main.tf ファイルに貼り付けます。
resource "google_project_service" "default" {
  for_each = toset([
    "compute.googleapis.com",
    "cloudresourcemanager.googleapis.com"
  ])

  service            = each.value
  disable_on_destroy = false
}

resource "google_compute_network" "default" {
  project                 = var.project_id
  name                    = var.network_id
  auto_create_subnetworks = false
  mtu                     = 1460
  routing_mode            = "GLOBAL"
}

resource "google_compute_subnetwork" "vm_subnet_pc" {
  name          = "vm-net"
  ip_cidr_range = "192.168.80.0/24"
  region        = var.region_id
  network       = google_compute_network.default.name
  project       = var.project_id
}

resource "google_compute_subnetwork" "psc_subnet_ip" {
  name          = "psc-subnet"
  ip_cidr_range = "192.168.100.0/24"
  region        = var.region_id
  network       = google_compute_network.default.name
  project       = var.project_id
}

resource "google_compute_router" "default" {
  name    = "outbound-nat"
  region  = var.region_id
  network = google_compute_network.default.id

 bgp {
  asn = 64514
  }
}

resource "google_compute_router_nat" "default" {
  name = "outbound-nat-gw"
  router = google_compute_router.default.name
  region = google_compute_router.default.region
  nat_ip_allocate_option = "AUTO_ONLY"
  source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"

  log_config {
    enable = true
    filter = "ERRORS_ONLY"
  }
}

resource "google_compute_firewall" "allow_icmp" {
  name    = "allow-icmp-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
  }

  source_ranges = ["0.0.0.0/0"]
  
}

resource "google_compute_firewall" "allow_ssh" {
  name    = "allow-ssh-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "tcp"
    ports    = ["22"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-ssh"]
}


resource "google_compute_firewall" "allow_internal" {
  name    = "allow-internal-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
    }


  allow {
    protocol = "tcp"
    ports    = ["0-65535"]
  }
  allow {
    protocol = "udp"
    ports    = ["0-65535"]
  }

  source_ranges = ["192.168.0.0/16"]
 }
  1. Cloud Shell ターミナルに戻り、コンシューマ プロジェクトの terraform-consumer-psc ディレクトリ cd terraform-consumer-psc にいることを確認して、次のコマンドを実行します。

terraform init

作業ディレクトリを初期化します。このステップでは、指定した構成に必要なプロバイダがダウンロードされます。

terraform plan

実行プランを生成します。このプランには、Terraform がインフラストラクチャのデプロイに行う操作が示されます。

  1. リソースを作成するには、terraform apply コマンドを実行し、yes と入力して実行します。

8. タスク 6. コンシューマ プロジェクトとテスト用 VM に PSC エンドポイントから SQL DB アタッチメントを作成します(Terraform)

この構成は、コンシューマ プロジェクトで完了します。

  1. Cloud Shell エディタに戻り、terraform-consumer-psc ディレクトリを開くと、psc.tf ファイルが選択されます。ファイルに次の Terraform コードを追加します。これにより、静的内部 IP、PSC エンドポイント、Maria DB がインストールされたテスト VM が作成されます。
resource "google_compute_address" "default" {
  name = "psc-ip-1"
  region = var.region_id
  address_type = "INTERNAL"
  subnetwork = google_compute_subnetwork.psc_subnet_ip.name
  address = "192.168.100.100" 
}

resource "google_compute_forwarding_rule" "default" {
  name = "psc-sql-endpoint"
  region = var.region_id
  network = google_compute_network.default.name
  ip_address = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target = var.psc_attachment_id
}


resource "google_compute_instance" "sql_test_vm" {
  name         = "remote-sql-test-vm"
  machine_type = "e2-medium"
  zone         = "${var.region_id}-b"
  project      = var.project_id

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    subnetwork = google_compute_subnetwork.vm_subnet_pc.name
  }

  # No external IP address
  network_performance_config {
    total_egress_bandwidth_tier = "DEFAULT"
  }

  tags = ["allow-icmp", "allow-ssh", "allow-internal", "allow-health-check"]

  # Install MariaDB at startup
  metadata_startup_script = <<EOF
#!/bin/bash
apt-get update
apt-get install -y mariadb-server
systemctl enable mariadb
EOF
}
  1. Cloud Shell ターミナルに戻り、コンシューマ プロジェクトの terraform-consumer-psc ディレクトリ cd terraform-consumer-psc にいることを確認して、次のコマンドを実行します。

terraform plan

実行プランを生成します。このプランには、Terraform がインフラストラクチャのデプロイに行う操作が示されます。

  1. リソースを作成するには、terraform apply コマンドを実行し、yes と入力して実行します。

9. タスク 7. PSC IP アドレス経由で VM からエンドポイントへの接続を確認します。

コンシューマ プロジェクトで完了する

  1. [VM インスタンス] に移動します。remote-sql-test-vm を選択します。
  2. [SSH] オプションを選択して VM に接続します。
  3. 次のように、エンドポイント経由で DB に接続します。
mysql --host=192.168.100.100 --user=testsql --password=cloudsql24
  1. 接続が確立されたら、次の psc-sql-db を使用してデータベースを作成します。
CREATE DATABASE remotepscpsasqldb;
  1. 完了したら、exit と入力して接続を終了します。もう一度 exit と入力して VM を終了します。

10. タスク 8. データベースのエントリを確認する

この確認はデータベース プロジェクトで完了します。

  1. コンソールの上部にある Google Cloud アイコンの横にあるプルダウンをクリックし、[すべて] タブを選択します。

プロジェクトバーproject bar 2

  1. 表示されたプロジェクトからデータベース プロジェクト ID を選択して続行します。
  2. [SQL] に移動し、データベース psc-psa-sql-db を選択して SQL オプションを開き、[データベース] を選択します。コンシューマ プロジェクト VM の remotepscpsasqldb という名前のデータベースと、db プロジェクト VM の localvpcsqldb が表示されます。**.**

36f5c03124ca20f6.png

11. クリーンアップ

コンシューマ プロジェクトで完了する

  1. コンシューマ プロジェクト ID を選択する
  2. Cloud Shell に移動し、コンシューマ プロジェクト ID が表示されていることを確認します。
  3. terraform-consumer-psc ディレクトリ cd terraform-consumer-psc に移動し、次のコマンド terraform destroy を実行して yes と入力すると、Terraform を使用してコンシューマ プロジェクトで作成したすべてのリソースが削除されます。

データベース プロジェクトで完了する

  1. データベース プロジェクト ID を選択する
  2. Cloud Shell に移動し、データベース プロジェクト ID が表示されていることを確認します。
  3. terraform-db-psc ディレクトリ cd terraform-db-psc に移動し、次のコマンド terraform destroy を実行して yes と入力します。Terraform を使用して db プロジェクトで作成したリソースのほとんどが削除されます。サービス ネットワーキングが削除されず、エラーが発生することがあります。
  4. 次に、terraform-db-psc フォルダから次のファイルを削除します。
rm -r terraform.tfstate terraform.tfstate.backup
  1. 次に、コンソールで [VPC ネットワーク] に移動します。
  2. database-net VPC を選択し、[PRIVATE SERVICES ACCESS] を選択します。[Allocated IP Ranges for Services] で、psa-range-database-net を選択し、[Release] オプションを選択します。

e4dbfa8953c5b036.png

  1. 次に、[VPC ネットワーク ピアリング] を選択し、[servicenetworking-googleapis-com] を選択して [削除] オプションを選択します。

4deab14044461d2d.png

  1. 次に、[VPC ネットワークを削除 ] 2f4e96399b73d405.png を選択します。

12. 完了

これで、PSA と PSC アタッチメントを使用して Cloud SQL インスタンスを構成し、別の VPC に Private Service Connect エンドポイントを作成できました。

その他の情報

詳細については、Private Service Connect と Cloud SQL をご覧ください。

その他の関連 Codelab: https://codelabs.developers.google.com/codelabs/cloudsql-psc-terraform