このページでは、Private Service Connect を使用して AlloyDB for PostgreSQL インスタンスに接続する方法について説明します。
Private Service Connect を使用すると、異なるグループ、チーム、プロジェクト、組織に属する複数の Virtual Private Cloud(VPC)ネットワークから、プライマリ AlloyDB インスタンスまたはそのリードレプリカ、またはセカンダリ AlloyDB インスタンスのいずれかに接続できます。
必要なロール
AlloyDB インスタンスに接続するには、VPC ネットワーク内のユーザーに次のロールをすべて付与する必要があります。
ロール | 説明 |
---|---|
compute.networkAdmin |
AlloyDB インスタンスへの接続を開始する VPC ネットワークに対する完全な制御権を付与します。Private Service Connect を使用して複数の VPC ネットワークから AlloyDB インスタンスに接続する場合、各ネットワークには独自の管理者が存在します。 |
dns.admin |
DNS ゾーンやレコードなど、Cloud DNS リソースに対する完全な制御権を付与します。 |
alloydb.admin |
AlloyDB インスタンスを完全に制御し、インスタンスのライフサイクルを制御します。 |
alloydb.databaseUser (省略可) |
AlloyDB インスタンスへのアクセスを提供します。AlloyDB Auth Proxy クライアントを介して接続する場合は、AlloyDB クライアントのロールが必要です。直接接続する場合、Identity and Access Management(IAM)のロールと権限は必要ありません。 |
Custom AlloyDB role (省略可) |
カスタムロールを使用している場合は、compute.networkAdmin ロールと dns.admin ロールに加えて、次の権限を付与します。
|
Private Service Connect エンドポイントを作成する
Private Service Connect エンドポイントは、コンシューマー VPC ネットワーク内の内部 IP アドレスであり、そのネットワーク内のクライアントが直接アクセスできます。クライアントはこれらのエンドポイントを使用して AlloyDB インスタンスに接続できます。
AlloyDB に Private Service Connect エンドポイントを自動作成させるには、次の操作を行います。
- 既存のサービス接続ポリシーを再利用するか、VPC ネットワークにサービス接続ポリシーを作成します。このポリシーを使用して、Private Service Connect エンドポイントを自動的にプロビジョニングできます。
- AlloyDB クラスタとインスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にしてから、Private Service Connect エンドポイントを自動的に作成するようにインスタンスを構成します。
- インスタンスのエンドポイントを取得します。これにより、そのエンドポイントを使用してインスタンスに接続できます。
- (省略可)Private Service Connect が有効になっている既存の AlloyDB クラスタとインスタンスを更新して、エンドポイントを自動的に生成します。
Private Service Connect エンドポイントを手動で作成することもできます。詳細については、エンドポイントを手動で作成するをご覧ください。
エンドポイントを自動的に作成する
以降のセクションでは、AlloyDB に Private Service Connect エンドポイントを自動作成させるようにインスタンスを構成する方法について説明します。
サービス接続ポリシーを作成する
既存のサービス接続ポリシーを再利用するか、 Google Cloud コンソールまたは Google Cloud CLI を使用してサービス接続ポリシーを作成できます。
サービス接続ポリシーを使用すると、指定したサービスクラスに、コンシューマー VPC ネットワークに Private Service Connect エンドポイントの作成を許可できます。サービス接続ポリシーを使用して、AlloyDB に Private Service Connect エンドポイントを自動作成させることができます。
コンソール
Google Cloud コンソールで、[Private Service Connect] ページに移動します。
[CONNECTION POLICIES] タブをクリックします。
[Create connection policy] をクリックします。
接続ポリシーの名前を入力します。
次の手順でサービスクラスを指定します。
- [Source service class] で [Google サービス] を選択します。
- 接続ポリシーのマネージド サービスは AlloyDB であるため、[サービスクラス] メニューから
google-cloud-alloydb
を選択します。
[ターゲット エンドポイントのスコープ] セクションで、このポリシーを適用する [ネットワーク] と [リージョン] を選択します。
[ポリシー] セクションの [サブネットワーク] メニューから 1 つ以上のサブネットを選択します。サブネットは、エンドポイントの IP アドレスを割り振るために使用されます。
省略可: ポリシーの接続上限を指定します。上限により、AlloyDB がこの接続ポリシーに対して作成できるエンドポイントの数が決まります。接続上限を指定しない場合は、無制限になります。
[ポリシーを作成] をクリックします。
gcloud
サービス接続ポリシーを作成するには、service-connection-policies create
コマンドを使用します。
gcloud network-connectivity service-connection-policies create POLICY_NAME \ --network=NETWORK \ --project=PROJECT_ID \ --region=REGION \ --service-class=SERVICE_CLASS \ --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \ --psc-connection-limit=LIMIT \ --description="DESCRIPTION" \ --producer-instance-location=PRODUCER_INSTANCE_LOCATION \ --allowed-google-producers-resource-hierarchy-level=LIST_OF_NODES
次のように置き換えます。
POLICY_NAME
: サービス接続ポリシーの名前。NETWORK
: このポリシーが適用されるネットワークPROJECT_ID
: VPC ネットワークのプロジェクトのプロジェクト ID または番号。共有 VPC ネットワークの場合、サービス接続ポリシーはサービス プロジェクトではサポートされないため、ホスト プロジェクトにサービス接続ポリシーをデプロイする必要があります。REGION
: このポリシーが適用されるリージョン。サービスの接続を自動化するすべてのリージョンに同じポリシーが必要です。SERVICE_CLASS
: プロデューサーが提供するサービスクラスのリソース識別子。AlloyDB の場合、サービスクラスはgoogle-cloud-alloydb
です。SUBNETS
: Private Service Connect エンドポイントの IP アドレスを割り振るために使用される 1 つ以上の通常のコンシューマー サブネット。これらの IP アドレスは自動的に割り振られ、マネージド サービス インスタンスの作成と削除に応じてサブネットのプールに返されます。サブネットは、サービス接続ポリシーと同じリージョンに存在する必要があります。複数の接続ポリシーが同じリージョンを共有している場合は、これらのポリシーで同じサブネットワークを再利用できます。複数のサブネットを入力する場合は、カンマ区切りリストで指定します。LIMIT
: このポリシーを使用して作成できるエンドポイントの最大数。上限を指定しない場合は、無制限になります。DESCRIPTION
: サービス接続ポリシーの説明(省略可)。PRODUCER_INSTANCE_LOCATION
: ポリシーが AlloyDB インスタンスへの接続を自動化するかどうかを指定します。この値は次のいずれかに設定できます。none
(デフォルト): AlloyDB インスタンスは、サービス接続ポリシーと同じプロジェクト(共有 VPC の場合は接続されたプロジェクト)にあります。custom-resource-hierarchy-levels
:allowed-google-producers-resource-hierarchy-level
パラメータを使用して、接続を自動化するプロジェクトの Resource Manager ロケーション パスを設定する必要があります。
LIST_OF_NODES
: プロデューサー インスタンスのロケーションがcustom-resource-hierarchy-levels
に設定されている場合は、このパラメータを設定します。このパラメータは、接続を自動化するインスタンスが存在するプロジェクト、フォルダ、組織のリストです。このリストはprojects/PROJECT_ID
、folders/FOLDER_ID
、またはorganizations/ORGANIZATION_ID
の形式です。
たとえば、次のコマンドは、managed-services
サブネットから IP アドレスを割り振る
google-cloud-alloydb
サービスクラスのサービス接続ポリシーを作成します。このポリシーを使用して、最大 10 個の Private Service Connect エンドポイントを作成できます。エンドポイントは、マネージド サービス インスタンスと同じ組織のプロジェクト内に作成する必要があります。AlloyDB インスタンスは myproject
プロジェクトに配置されます。
gcloud network-connectivity service-connection-policies create alloydb-policy \ --network=default \ --project=my-project \ --region=us-central1 \ --service-class=google-cloud-alloydb \ --subnets=managed-service-subnet \ --psc-connection-limit=10 \ --producer-instance-location=custom-resource-hierarchy-levels \ --allowed-google-producers-resource-hierarchy-level=projects/myproject
AlloyDB インスタンスを作成する
インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にしてから、コンソール、gcloud CLI、または Terraform を使用してエンドポイントを自動的に作成するようにインスタンスを構成できます。
コンソール
Google Cloud コンソールで、[クラスタ] ページに移動します。
[クラスタを作成] をクリックします。
[クラスタ ID] に「
my-cluster
」と入力します。パスワードを入力します。このクイックスタートで使用するため、このパスワードはメモしておきます。
デフォルトのデータベース バージョンを保持します。
us-central1 (Iowa)
リージョンを選択します。デフォルトのインスタンス ID
my-cluster-primary
を保持します。[ゾーンの可用性] で、[シングルゾーン] が選択されたままにします。本番環境ではシングルゾーン インスタンスはおすすめしませんが、このクイックスタートではコストを最小限に抑えるため、シングルゾーンを使用します。詳細については、基本インスタンスを使用してコストを削減するをご覧ください。
2 vCPU, 16 GB
マシンタイプを選択します。プライベート IP 接続を維持します。
- [Private Service Connect(PSC)] を選択します。
- [エンドポイントを追加] をクリックします。
- エンドポイントを作成するプロジェクトを選択します。
- ネットワークを選択します。
- サービス接続ポリシーの情報については、[ポリシーを確認] をクリックします。
[ネットワーク セキュリティ] のデフォルト設定をそのまま使用します。
[詳細設定を表示] で変更は行わないでください。
[クラスタを作成] をクリックします。AlloyDB がクラスタを作成して、プライマリ クラスタの [概要] ページに表示されるまでに数分かかることがあります。
gcloud
クラスタを作成するには、gcloud alloydb clusters
create
コマンドを使用します。
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connect
次のように置き換えます。
CLUSTER_ID
: 作成するクラスタの ID。先頭は英小文字にします。英小文字、数字、ハイフンを使用できます。PASSWORD
: デフォルトのpostgres
ユーザーに使用するパスワード。REGION_ID
: クラスタを配置するリージョン。PROJECT_ID
: クラスタを配置するプロジェクトの ID。
このコマンドは、長時間実行オペレーションを開始し、オペレーション ID を返します。
Private Service Connect を使用する AlloyDB インスタンス(プライマリまたはリードプール)を作成するには、gcloud alloydb instances create コマンドを使用します。--allowed-psc-projects
パラメータを含めて、このインスタンスに接続するエンドポイントを作成できるコンシューマー プロジェクトを指定してください。
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST \
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI \
--psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECT
次のように置き換えます。
INSTANCE_ID
: 作成するインスタンスの ID。英小文字、数字、ハイフンを使用できますが、先頭は英小文字にする必要があります。CPU_COUNT
: インスタンスに必要な vCPU の数。有効な値には次のものがあります。2
: 2 vCPU、16 GB RAM4
: 4 vCPU、32 GB RAM8
: 8 vCPU、64 GB RAM16
: 16 vCPU、128 GB RAM32
: 32 vCPU、256 GB RAM64
: 64 vCPU、512 GB RAM96
: 96 vCPU、768 GB RAM128
: 128 vCPU、864 GB RAM
AVAILABILITY
: このインスタンスに高可用性(HA)を適用し、複数のゾーンにノードを配置するかどうかを示します。有効な値は次のとおりです。REGIONAL
: アクティブ ノードとスタンバイ ノードを別々に持つ HA インスタンスを作成し、それらの間の自動フェイルオーバーを構成します。これはデフォルト値で、本番環境に適しています。ZONAL
: 1 つのノードのみを含む基本インスタンスを作成し、自動フェイルオーバーは構成しません。
REGION_ID
: インスタンスを配置するリージョン。CLUSTER_ID
: 前に作成したクラスタの ID。ALLOWED_PROJECT_LIST
: インスタンスへのアクセスを許可するプロジェクト ID またはプロジェクト番号のカンマ区切りリスト(例:my-project-1
、12345
、my-project-n
)。NETWORK_ATTACHMENT_URI
(省略可): アウトバウンド接続用に作成するネットワーク アタッチメント URI の完全なリソース名。例:projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID
。CONSUMER_NETWORK
: Private Service Connect のエンドポイントを作成する必要がある VPC ネットワークへのパス。例:projects/my-host-project/global/networks/default
。このオプションは、エンドポイントを自動的に作成する場合に適用されます。サービス接続ポリシーが作成されていることを確認します。ポリシーは、インスタンスの作成前または作成後に作成できます。CONSUMER_PROJECT
: 作成する Private Service Connect エンドポイントを配置するプロジェクト。共有 VPC ネットワークを使用している場合は、ホスト プロジェクトまたはサービス プロジェクトのいずれかになります。自動接続パラメータで指定したプロジェクトは、許可されたプロジェクトに自動的に追加されます。必要に応じて、Private Service Connect エンドポイントを手動で作成して配置するプロジェクトを、許可されたプロジェクトのリストに追加できます。
Private Service Connect が有効になっているプライマリ クラスタ用に作成されたセカンダリ クラスタは、Private Service Connect 構成を自動的に継承します。詳細については、セカンダリ クラスタを作成するをご覧ください。
Terraform
データベース クラスタ内にインスタンスを作成するには、Terraform リソースを使用します。
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
psc_instance_config {
allowed_consumer_projects = ["123456789"]
psc_interface_configs {
network_attachment_resource = google_compute_network_attachment.default.id
}
}
}
resource "google_compute_network" "default" {
name = "alloydb-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "default" {
name = "alloydb-subnetwork"
region = "us-central1"
network = google_compute_network.default.id
ip_cidr_range = "10.0.0.0/16"
}
resource "google_compute_network_attachment" "default" {
name = "alloydb-network-attachment"
region = "us-central1"
connection_preference = "ACCEPT_AUTOMATIC"
subnetworks = [
google_compute_subnetwork.default.self_link
]
}
data "google_project" "project" {}
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
エンドポイントを取得する
インスタンスの Private Service Connect エンドポイントとしての内部 IP アドレスを取得することで、そのエンドポイントを使用してインスタンスに接続できます。
インスタンスの Private Service Connect エンドポイントとしての IP アドレスなど、インスタンスに関する情報を表示するには、gcloud alloydb instances describe
コマンドを使用します。
gcloud alloydb instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'
次のように置き換えます。
- INSTANCE_NAME: AlloyDB インスタンスの名前。このインスタンスで Private Service Connect が有効になっている場合、VPC ネットワーク内の Private Service Connect エンドポイントからの接続が可能です。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
レスポンス内の pscConfig:pscAutoConnections:ipAddress
フィールドの横にある値をメモします。この値は、インスタンスの Private Service Connect エンドポイントでもある内部 IP アドレスです。
エンドポイントを自動的に作成するようにインスタンスを更新する
インスタンスを更新してエンドポイントを自動的に作成するには、gcloud alloydb instances update コマンドに --psc-auto-connections
パラメータを渡します。
アウトバウンド接続を構成する
Private Service Connect が有効になっている AlloyDB インスタンスのアウトバウンド接続を有効にする場合は、インスタンスのネットワーク アタッチメント URI を設定する必要があります。詳細については、アウトバウンド接続を構成するをご覧ください。
エンドポイントを手動で作成する
以降のセクションでは、Private Service Connect エンドポイントを手動で作成する方法について説明します。
AlloyDB インスタンスを作成する
インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にしてから、コンソール、gcloud CLI、または Terraform を使用してエンドポイントを自動的に作成するようにインスタンスを構成できます。
コンソール
Google Cloud コンソールで、[クラスタ] ページに移動します。
[クラスタを作成] をクリックします。
[クラスタ ID] に「
my-cluster
」と入力します。パスワードを入力します。このクイックスタートで使用するため、このパスワードはメモしておきます。
デフォルトのデータベース バージョンを保持します。
us-central1 (Iowa)
リージョンを選択します。デフォルトのインスタンス ID
my-cluster-primary
を保持します。[ゾーンの可用性] で、[シングルゾーン] が選択されたままにします。本番環境ではシングルゾーン インスタンスはおすすめしませんが、このクイックスタートではコストを最小限に抑えるため、シングルゾーンを使用します。詳細については、基本インスタンスを使用してコストを削減するをご覧ください。
2 vCPU, 16 GB
マシンタイプを選択します。プライベート IP 接続を維持します。
- [Private Service Connect(PSC)] を選択します。
- [エンドポイントを追加] をクリックします。
- エンドポイントを作成するプロジェクトを選択します。
- ネットワークを選択します。
- サービス接続ポリシーの情報については、[ポリシーを確認] をクリックします。
[ネットワーク セキュリティ] のデフォルト設定をそのまま使用します。
[詳細設定を表示] で変更は行わないでください。
[クラスタを作成] をクリックします。AlloyDB がクラスタを作成して、プライマリ クラスタの [概要] ページに表示されるまでに数分かかることがあります。
gcloud
クラスタを作成するには、gcloud alloydb clusters
create
コマンドを使用します。
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connect
次のように置き換えます。
CLUSTER_ID
: 作成するクラスタの ID。先頭は英小文字にします。英小文字、数字、ハイフンを使用できます。PASSWORD
: デフォルトのpostgres
ユーザーに使用するパスワード。REGION_ID
: クラスタを配置するリージョン。PROJECT_ID
: クラスタを配置するプロジェクトの ID。
このコマンドは、長時間実行オペレーションを開始し、オペレーション ID を返します。
プライマリ インスタンスを作成するには、gcloud alloydb instances create コマンドを使用します。
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST \
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI \
次のように置き換えます。
INSTANCE_ID
: 作成するインスタンスの ID。英小文字、数字、ハイフンを使用できますが、先頭は英小文字にする必要があります。CPU_COUNT
: インスタンスに必要な vCPU の数。有効な値には次のものがあります。2
: 2 vCPU、16 GB RAM4
: 4 vCPU、32 GB RAM8
: 8 vCPU、64 GB RAM16
: 16 vCPU、128 GB RAM32
: 32 vCPU、256 GB RAM64
: 64 vCPU、512 GB RAM96
: 96 vCPU、768 GB RAM128
: 128 vCPU、864 GB RAM
AVAILABILITY
: このインスタンスに高可用性(HA)を適用し、複数のゾーンにノードを配置するかどうかを示します。有効な値は次のとおりです。REGIONAL
: アクティブ ノードとスタンバイ ノードを別々に持つ HA インスタンスを作成し、それらの間の自動フェイルオーバーを構成します。これはデフォルト値で、本番環境に適しています。ZONAL
: 1 つのノードのみを含む基本インスタンスを作成し、自動フェイルオーバーは構成しません。
REGION_ID
: インスタンスを配置するリージョン。CLUSTER_ID
: 前に作成したクラスタの ID。ALLOWED_PROJECT_LIST
: インスタンスへのアクセスを許可するプロジェクト ID またはプロジェクト番号のカンマ区切りリスト(例:my-project-1
、12345
、my-project-n
)。NETWORK_ATTACHMENT_URI
(省略可): アウトバウンド接続用に作成するネットワーク アタッチメント URI の完全なリソース名。例:projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID
。CONSUMER_NETWORK
: Private Service Connect エンドポイントを作成する場所とする VPC ネットワークのパス。例:projects/my-host-project/global/networks/default
。このオプションは、エンドポイントを自動的に作成する場合に適用されます。サービス接続ポリシーが作成されていることを確認します。ポリシーは、インスタンスの作成前または作成後に作成できます。CONSUMER_PROJECT
: 作成する Private Service Connect エンドポイントを配置するプロジェクト。共有 VPC ネットワークを使用している場合は、ホスト プロジェクトまたはサービス プロジェクトのいずれかになります。自動接続パラメータで指定したプロジェクトは、許可されたプロジェクトに自動的に追加されます。必要に応じて、Private Service Connect エンドポイントを手動で作成して配置するプロジェクトを、許可されたプロジェクトのリストに追加できます。
Private Service Connect が有効になっているプライマリ クラスタ用に作成されたセカンダリ クラスタは、Private Service Connect 構成を自動的に継承します。詳細については、セカンダリ クラスタを作成するをご覧ください。
Terraform
データベース クラスタ内にインスタンスを作成するには、Terraform リソースを使用します。
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
psc_instance_config {
allowed_consumer_projects = ["123456789"]
psc_interface_configs {
network_attachment_resource = google_compute_network_attachment.default.id
}
}
}
resource "google_compute_network" "default" {
name = "alloydb-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "default" {
name = "alloydb-subnetwork"
region = "us-central1"
network = google_compute_network.default.id
ip_cidr_range = "10.0.0.0/16"
}
resource "google_compute_network_attachment" "default" {
name = "alloydb-network-attachment"
region = "us-central1"
connection_preference = "ACCEPT_AUTOMATIC"
subnetworks = [
google_compute_subnetwork.default.self_link
]
}
data "google_project" "project" {}
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
サービス アタッチメントを取得する
Private Service Connect が有効になっている AlloyDB インスタンスを作成したら、サービス アタッチメント URL を取得し、その URL を使用して Private Service Connect エンドポイントを作成します。
gcloud alloydb instances describe
コマンドを使用して、インスタンスの詳細を表示します。
gcloud alloydb instances describe INSTANCE_ID \
--cluster=CLUSTER_ID \
--region=REGION_ID
次のように置き換えます。
INSTANCE_ID
: インスタンスの ID。CLUSTER_ID
: クラスタの ID。REGION_ID
: AlloyDB クラスタがデプロイされているリージョン。
このコマンドのレスポンスの例を次に示します。
"pscInstanceConfig": {
"serviceAttachmentLink:": "https://www.googleapis.com/compute/v1/projects/my-project/regions/my-region/serviceAttachments/my-service-attachment-id"
"allowedConsumerProjects": {
"45678",
"12345",
"67890",
},
"pscDnsName": "11111111-1111-1111-1111-111111111111.22222222-2222-2222-2222-222222222222.alloydb-psc.goog."
}
serviceAttachmentLink
パラメータには、サービス アタッチメント URL の値を保持します。
Private Service Connect エンドポイントを作成する
Private Service Connect エンドポイントを作成するには、一意のエンドポイント名とともにサービス アタッチメント URL を渡します。Private Service Connect エンドポイントの作成の詳細については、エンドポイントを作成するをご覧ください。
gcloud compute addresses create
コマンドを使用して Private Service Connect エンドポイントの内部 IP アドレスを予約し、予約した IP アドレスを使用してエンドポイントを作成することもできます。
アウトバウンド接続を構成する
アウトバウンド接続を有効にするには、AlloyDB インスタンスを作成または更新するときにネットワーク アタッチメント URI を設定します。この URI を使用すると、移行などのアウトバウンド オペレーション中に、プロジェクトと AlloyDB インスタンス間の安全な接続が可能になります。
ネットワーク アタッチメントを作成する
作成するネットワーク アタッチメントは、ACCEPT_AUTOMATIC
(接続を自動的に受け入れる)または ACCEPT_MANUAL
(接続を手動で受け入れる)に設定できます。ネットワーク アタッチメントの作成の詳細については、ネットワーク アタッチメントの作成と管理をご覧ください。
接続を自動的に受け入れるネットワーク アタッチメントを作成する場合は、承認されるプロジェクトのリストを明示的に設定する必要はありません。接続を手動で承認するには、AlloyDB インスタンスが配置されているプロジェクトのサービス所有のプロジェクト番号を、承認済みプロジェクトのリストに追加する必要があります。
サービス所有のプロジェクト番号を確認するには、次のコマンドを実行します。
gcloud alpha alloydb clusters describe CLUSTER_ID --region=REGION_ID
レスポンスの例を次に示します。
pscConfig:
pscEnabled: true
serviceOwnedProjectNumber: 123456789012
サービス所有のプロジェクト番号を特定したら、そのプロジェクトを承認済みプロジェクトのリストに追加し、ネットワーク アタッチメントを作成します。
ネットワーク アタッチメントのリージョンが AlloyDB インスタンスのリージョンと同じであることを確認します。また、ネットワーク アタッチメントの作成に使用するサブネットは、RFC 1918 IP 範囲(10.0.0.0/8
、172.16.0.0/12
、192.168.0.0/16
)に属している必要があります。
アウトバウンド接続用にインスタンスを更新する
Private Service Connect が有効になっている既存の AlloyDB インスタンスのアウトバウンド接続を有効にするには、--psc-network-attachment-uri
パラメータを gcloud alloydb instances update
コマンドに渡します。
2025 年 3 月 1 日より前に作成された AlloyDB インスタンスは、アウトバウンド接続を有効にするように更新できません。別の方法として、次のいずれかのオプションを使用することをおすすめします。
- アウトバウンド接続を有効にして、プライマリ インスタンスのリージョンのクロスリージョン レプリカ(CRR)レプリカを作成します。次に、切り替えを実行して、レプリカ インスタンスを新しいプライマリ インスタンスとして指定します。
- 既存の AlloyDB クラスタとプライマリ インスタンスのバックアップを実行します。次に、アウトバウンド接続を有効にして、新しい AlloyDB クラスタとプライマリ インスタンスを作成します。最後に、以前に作成したバックアップを新しいクラスタに復元します。
アウトバウンド接続を無効にする
既存の AlloyDB インスタンスのアウトバウンド接続を無効にするには、--clear-psc-network-attachment-uri
パラメータを gcloud alloydb instances update
コマンドに渡します。
AlloyDB インスタンスに接続する
Private Service Connect が有効になっている AlloyDB インスタンスに接続するには、次のいずれかのオプションを使用します。
- DNS レコードを使用して直接接続する
- DNS レコードで AlloyDB Auth Proxy を使用する
- DNS レコードで AlloyDB 言語コネクタを使用する
- 内部 IP アドレスを使用して直接接続する
DNS レコードを使用するメソッドの場合は、対応する VPC ネットワークのプライベート DNS ゾーンにレコードを作成する必要があります。DNS レコードを作成したら、このレコードを使用して Private Service Connect が有効になっているインスタンスに接続できます。
DNS マネージド ゾーンと DNS レコードを構成する
ネットワークで DNS マネージド ゾーンと DNS レコードを構成する手順は次のとおりです。
AlloyDB インスタンスの概要情報(インスタンスの DNS 名など)を表示するには、
gcloud alloydb instances describe
コマンドを使用します。gcloud alloydb instances describe INSTANCE_ID \ --cluster=CLUSTER_ID --region=REGION_ID
次のように置き換えます。
INSTANCE_ID
: インスタンスの ID。CLUSTER_ID
: クラスタの ID。
レスポンスに DNS 名が表示されていることを確認します。DNS 名は
INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
パターンです。プライベート DNS ゾーンを作成するには、
gcloud dns managed-zones create
コマンドを使用します。このゾーンは、Private Service Connect エンドポイントを介して AlloyDB インスタンスに接続するために使用される VPC ネットワークに関連付けられています。gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private
次のように置き換えます。
ZONE_NAME
: DNS ゾーンの名前PROJECT_ID
: ゾーンが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。DESCRIPTION
: ゾーンの説明(AlloyDB インスタンスの DNS ゾーンなど)。DNS_NAME
: ゾーンの DNS 名(例:INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
)。NETWORK_NAME
: VPC ネットワークの名前。共有 VPC ネットワークを使う場合は、その VPC ネットワークの完全修飾パスを指定してください。たとえばprojects/cymbal-project/global/networks/shared-vpc-network
のように指定します。
Private Service Connect エンドポイントを作成した後、ゾーンに DNS レコードを作成するには、gcloud dns record-sets create コマンドを使用します。
gcloud dns record-sets create DNS_NAME \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
次のように置き換えます。
DNS_NAME
: この手順で先ほど取得した DNS 名。RRSET_TYPE
: DNS レコードセットのリソース レコードタイプ(例: A)。RR_DATA
: Private Service Connect エンドポイントに割り振られた IP アドレス(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 など、複数の値を入力することもできます(例: 10.1.2.3 10.2.3.4 10.3.4.5)。
DNS レコードを使用して直接接続する
Private Service Connect エンドポイントを作成して DNS レコードを作成したら、DNS レコードを使用して直接接続できます。
Private Service Connect エンドポイントの DNS レコードを取得するには、
gcloud compute addresses describe
コマンドを使用します。gcloud compute addresses describe DNS_RECORD \ --project=PROJECT_ID \ --region=REGION_NAME
次のように置き換えます。
DNS_RECORD
: エンドポイントの DNS レコード。PROJECT_ID
: エンドポイントが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。REGION_NAME
: エンドポイントのリージョン名。
AlloyDB インスタンスに接続するには、DNS レコードを使用します。
psql -U USERNAME -h DNS_RECORD
次のように置き換えます。
USERNAME
: インスタンスに接続するユーザーの名前。DNS_RECORD
: エンドポイントの DNS レコード。
AlloyDB Auth Proxy を使用して接続する
AlloyDB Auth Proxy は、AlloyDB データベースに対して承認済みの暗号化された接続を確立できるコネクタです。AlloyDB Auth Proxy は、ローカル環境でローカル クライアントを実行することによって機能します。アプリケーションは、データベースで使用されている標準のデータベース プロトコルを介して AlloyDB Auth Proxy と通信します。
Auth Proxy クライアントの起動時に --psc
フラグを設定すると、AlloyDB Auth Proxy は作成した DNS レコードを使用して、Private Service Connect が有効になっているインスタンスに接続します。
gcloud alloydb instances list
コマンドを使用して取得したインスタンス URI を渡して Auth Proxy クライアントを起動し、--psc
フラグを設定します。
Auth Proxy を使用してインスタンスに接続する方法については、Auth Proxy を使用して接続するをご覧ください。
AlloyDB 言語コネクタを使用して接続する
AlloyDB 言語コネクタは、AlloyDB インスタンスへの接続時に TLS 1.3 と Identity and Access Management(IAM)認可による自動 mTLS を提供するライブラリです。
言語コネクタは、インスタンスが Private Service Connect をサポートしていることを判断すると、作成した DNS レコードを使用してインスタンスに接続します。
Java
Private Service Connect を使用して AlloyDB インスタンスに接続する場合は、次を含めます。
config.addDataSourceProperty("alloydbIpType", "PSC");
Java 言語コネクタで Private Service Connect エンドポイントを使用する方法については、GitHub リポジトリをご覧ください。
Python(pg8000)
Private Service Connect を使用して AlloyDB インスタンスに接続する場合は、次を含めます。
def getconn() -> pg8000.dbapi.Connection:
conn: pg8000.dbapi.Connection = connector.connect(
inst_uri,
"pg8000",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Python 言語コネクタで Private Service Connect エンドポイントを使用する方法については、GitHub リポジトリをご覧ください。
Python(asyncpg)
Private Service Connect を使用して AlloyDB インスタンスに接続する場合は、次を含めます。
async def getconn() -> asyncpg.Connection:
conn: asyncpg.Connection = await connector.connect(
inst_uri,
"asyncpg",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Python 言語コネクタで Private Service Connect エンドポイントを使用する方法については、GitHub リポジトリをご覧ください。
Go(pgx)
Private Service Connect を使用して AlloyDB インスタンスに接続する場合は、次を含めます。
d.Dial(ctx, instURI, alloydbconn.WithPSC())
Go 言語コネクタで Private Service Connect エンドポイントを使用する方法については、GitHub リポジトリをご覧ください。
Go(データベース / SQL)
Private Service Connect を使用して AlloyDB インスタンスに接続する場合は、次を含めます。
cleanup, err := pgxv5.RegisterDriver(
"alloydb",
alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC())
)
Go 言語コネクタで Private Service Connect エンドポイントを使用する方法については、GitHub リポジトリをご覧ください。
内部 IP アドレスを介して直接接続する
Private Service Connect エンドポイントを作成したら、構成した IP アドレスを使用して AlloyDB インスタンスに直接接続できます。
Private Service Connect エンドポイントの IP アドレスを取得するには、
gcloud compute addresses describe
コマンドを使用します。gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
次のように置き換えます。
ADDRESS_NAME
: エンドポイントの IP アドレスの名前。PROJECT_ID
: エンドポイントが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。REGION_NAME
: エンドポイントのリージョン名。
AlloyDB インスタンスに接続するには、内部 IP アドレスを使用します。
psql -U USERNAME -h IP_ADDRESS"
次のように置き換えます。
USERNAME
: インスタンスに接続するユーザーの名前。IP_ADDRESS
: エンドポイントの IP アドレス。
制限事項
- Private Service Connect が有効になっている AlloyDB インスタンスのサービス アタッチメントに接続する Private Service Connect エンドポイントは、20 個まで設定できます。
- Private Service Connect が有効なクラスタを作成するときに
--network
フラグを使用できません。これは、プライベート サービス アクセスに関連付けられているためです。 - 既存のインスタンスで Private Service Connect を有効または無効にすることはできません。
- Private Service Connect が有効になっているインスタンスを、プライベート サービス アクセスを使用するように構成することはできません。