😺
Private Service ConnectとPrivate Google Accessそれぞれを利用したCloudSQLの作り方
記事の内容
- Private Service Connect
- Private Google Access
それぞれを利用して、TerraformでCloudSQLを作成します。
記事の長さ
3分で読めます
Networkの作成
VPCとSubnetを作成します。
network.tf
resource "google_compute_network" "main_network" {
project = var.project_id
name = "main-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "main_subnetwork" {
project = var.project_id
name = "main-subnetwork"
ip_cidr_range = "10.2.0.0/16"
region = "asia-northeast1"
network = google_compute_network.main_network.id
}
resource "google_project_service" "service_networking" {
project = var.project_id
service = "servicenetworking.googleapis.com"
disable_on_destroy = false
}
resource "google_compute_global_address" "private_ip_address" {
project = var.project_id
name = "private-ip"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = google_compute_network.main_network.id
}
resource "google_service_networking_connection" "default" {
network = google_compute_network.main_network.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}
上記Terraformファイルをapplyすることで、VPCとサブネットワーク、Private Service Connect・Private Google Access用のIPアドレスレンジとコネクターが作成されます。
※このIP Rangeとコネクションを作っていない場合、PrivateIPを持つCloudSQLを作成しようとすると以下のエラーが発生します。
│ Error: Error, failed to create instance because the network doesn't have at least 1 private services connection. Please see https://cloud.google.com/sql/docs/mysql/private-ip#network_requirements for how to create this connection.
CloudSQLの作成
Private Google AccessとPrivate Service Connectを使った場合、それぞれ以下のようにTerraformを構成することが可能です。
Private Google Accessを使った場合
resource "google_sql_database_instance" "pga-db" {
project = var.project_id
name = "pga-db"
region = "asia-northeast1"
database_version = "MYSQL_8_0"
settings {
tier = "db-f1-micro"
ip_configuration {
ipv4_enabled = false
private_network = google_compute_network.main_network.id
}
}
}
Private Google Accessを利用すると resource "google_compute_global_address" "private_ip_address"
で指定したIPレンジの中から、ランダムでPrivate IPアドレスが付与されます。
Private Service Connectを使った場合
resource "google_sql_database_instance" "psc-db" {
project = var.project_id
name = "psc-db"
region = "asia-northeast1"
database_version = "MYSQL_8_0"
settings {
tier = "db-f1-micro"
ip_configuration {
psc_config {
psc_enabled = true
allowed_consumer_projects = [var.project_id]
}
ipv4_enabled = false
}
}
}
※Private Service Connectの場合、接続可能なGCP Projectを指定できます。
Private Service Connectを利用すると、許可リストに登録されたVPCネットワークごとに間接的に割り当てられたプライベートIPアドレス
が与えられます。
ソース
サンプルソースはこちらに!
note
勉強法やキャリア構築法など、エンジニアに役立つ記事をnoteで配信しています。
Discussion