エンドポイント アタッチメントを作成する
Integration Connectors のプライベート接続を構成するには、PSC(Private Service Connect)アタッチメントを作成する必要があります。ただし、PSC アタッチメントを直接使用できないため、PSC アタッチメントを使用するには、エンドポイント アタッチメントも作成する必要があります。エンドポイント アタッチメントは、PSC サービス アタッチメントのインターフェースと考えることができます。作成したら、プライベート接続用のコネクタを構成するときに、エンドポイント アタッチメントの詳細を使用できます。このページでは、エンドポイント アタッチメントを作成する方法について説明します。次のコンセプトを理解していることを前提としています。
エンドポイント アタッチメントは、IP アドレスまたはホスト名として作成できます。
エンドポイント アタッチメントを IP アドレスとして作成する
エンドポイント アタッチメントを IP アドレスとして作成するには、Cloud コンソールまたはコマンドライン(gcloud)を使用します。Console
Cloud コンソールからエンドポイント アタッチメントを作成するには、次の操作を行います。
- Integration Connectors の [エンドポイント アタッチメント] ページを開きます。
- [作成] をクリックします。[エンドポイント アタッチメントを作成] ページが開きます。
- 次のフィールドに値を入力します。
- 名前: エンドポイント アタッチメントの名前を入力します。名前は一意である必要があります。 同じ名前のエンドポイント アタッチメントは他に存在しないため、後で名前を変更することはできません。 名前は先頭を小文字にして、その後に 63 文字以下の小文字、数字、ハイフンで構成します。末尾をハイフンにすることはできません。最小の長さは 2 です。
- サービス アタッチメント ID: すでに作成した PSC サービス アタッチメントの名前。
- (省略可)説明: エンドポイント アタッチメントの説明を入力します。
- (省略可)ラベル: リソースラベルを Key-Value ペアとして入力します。ラベルの詳細については、ラベルとはをご覧ください。
- (省略可)エンドポイント グローバル アクセスを有効にする: 任意のリージョンに存在する接続からバックエンドにトラフィックを送信する場合は、このオプションを選択します。 Private Service Connect エンドポイントのグローバル アクセスも有効にする必要があります。
デフォルトでは、エンドポイント アタッチメントで、接続とバックエンドの両方が同じリージョンにある必要があります。したがって、エンドポイントのグローバル アクセスを有効にすると、任意のリージョンにある接続からバックエンドにトラフィックを送信できます。
- [作成] をクリックします。
[IP アドレス] 列には、エンドポイント アタッチメントの IP アドレスを指定します。プライベート接続用のコネクタを構成する場合は、この IP アドレスを使用する必要があります。
gcloud
コマンドラインからエンドポイント アタッチメントを作成するには、次の操作を行います。
- PSC サービス アタッチメント リソースを取得します。
gcloud compute service-attachments list
このコマンドは、サービス アタッチメントのリストを返します。次に例を示します。
NAME REGION TARGET_SERVICE CONNECTION_PREFERENCE demo-sa us-west1 k8s2-tcp-tgysilgj-apps-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
このサービス アタッチメント情報は、後続のステップで必要になります。
- CreateEndpointAttachment API を実行する前に、認証トークンを取得します。
TOKEN="$(gcloud auth print-access-token)"
- CreateEndpointAttachment API を使用してエンドポイント アタッチメントを作成します。次に例を示します。
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "projects/PROJECT_ID/locations/LOCATION/endpointAttachments/ENDPOINT_ATTACHMENT_NAME", "serviceAttachment": "projects/demo/serviceAttachments/?SERVICE_ATTACHMENT_NAME" }' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpointAttachments?endpointAttachmentId=ENDPOINT_ATTACHMENT_NAME
ここで
- LOCATION は、サービス アタッチメントのリージョンです。例:
us-west1
- PROJECT_ID は、PSC サービス アタッチメントを作成した Google Cloud プロジェクトです。
- ENDPOINT_ATTACHMENT_NAME は、エンドポイント アタッチメントの名前です。名前は一意である必要があります。 同じ名前のエンドポイント アタッチメントは他に存在しないため、後で名前を変更することはできません。名前は先頭を小文字にして、その後に 31 文字以下の小文字、数字、ハイフンで構成します。末尾をハイフンにすることはできません。最小の長さは 2 です。
- SERVICE_ATTACHMENT_NAME: サービス アタッチメントの名前。前に実行した
gcloud compute service-attachments list
コマンドで返された PSC サービス アカウント名を使用します。
API を呼び出すと、Integration Connectors は長時間実行オペレーションを開始します。オペレーションの完了には時間がかかることがあります。オペレーションが正常に完了すると、エンドポイント アタッチメントが作成されます。
- LOCATION は、サービス アタッチメントのリージョンです。例:
- Google Cloud プロジェクトに関連付けられたサービス ディレクトリのプロジェクト ID を取得してから、サービス アタッチメントでそのプロジェクト ID を許可リストに登録する必要があります。
- GetEndpointAttachment API を使用してエンドポイント アタッチメントが作成されたかどうかを確認します。次に例を示します。
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpointAttachments/ENDPOINT_ATTACHMENT_NAME
API により、次のようなレスポンスが返されます。
{ "name": "projects/demo-project/locations/us-central1/endpointAttachments/demo-ea", "createTime": "2023-04-17T04:34:59.569527046Z", "updateTime": "2023-04-17T04:37:25.189074195Z", "description": "demo endpoint attachment", "serviceAttachment": "projects/demo-project/regions/us-central1/serviceAttachments/demo-sa", "endpointIp": "10.0.0.0", "labels": {"team":"sre"}, }
エンドポイント アタッチメントの IP アドレスは
endpointIp
フィールドで確認できます。このサンプル レスポンスでは、IP アドレスは10.0.0.0
です。この IP アドレスは、プライベート接続用のコネクタを構成するときに使用します。
エンドポイント アタッチメントの作成が成功すると、次の図に示すように、新しく作成されたアタッチメントが [エンドポイント アタッチメント] ページに表示されます。
エンドポイント アタッチメントの接続状態を確認するには、エンドポイント アタッチメントの接続を確認するをご覧ください。
ここまでの手順では、エンドポイント アタッチメントを IP アドレスとして作成する方法について説明しました。ただし、エンドポイント アタッチメントをホスト名として作成し、そのホスト名を使用してプライベート接続のコネクタを構成することもできます。ホスト名を使用してエンドポイント アタッチメントを作成する方法については、エンドポイント アタッチメントをホスト名として作成するをご覧ください。
エンドポイント アタッチメントをホスト名として作成する
エンドポイント アタッチメントをホスト名として作成するには、次の操作を行います。
- エンドポイント アタッチメントを IP アドレスとして作成します。詳細については、エンドポイント アタッチメントを IP アドレスとして作成するをご覧ください。
- 任意の Google Cloud プロジェクトに Cloud DNS 限定公開マネージド ゾーンを作成します。
この DNS ゾーンに、コネクタ構成に使用するホスト名を追加し、ホスト名をステップ 1 で取得したエンドポイント アタッチメント IP アドレスにマッピングする必要があります。Cloud DNS 限定公開マネージド ゾーンの作成方法については、限定公開ゾーンを作成するとレコードを追加するをご覧ください。
- Integration Connectors に使用する Integration Connectors マネージド ゾーンを Google Cloud プロジェクトに作成します。Integration Connectors マネージド ゾーン(ピアリング ゾーン)は、名前解決のために Cloud DNS 限定公開マネージド ゾーン(手順 2 で作成)と通信します。
マネージド ゾーンを作成する前に、次のロールと権限を付与する必要があります。
- Integration Connectors マネージド ゾーンを作成するユーザーに
connectors.managedZones.create
権限を付与します。connectors.managedZones.create
権限は、roles/connectors.admin
IAM ロールまたはroles/connectors.managedZonesAdmin
IAM ロールで使用できます。Integration Connectors で使用可能なさまざまな IAM ロールとそれに対応する権限については、Integration Connectors の IAM ロールと権限をご覧ください。 - Integration Connectors
service-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.com
サービス アカウントにrole/dns.peer
ロールを付与します。Cloud DNS Google Cloud プロジェクトが Integration Connectors Google Cloud プロジェクトと異なる場合は、Cloud DNS Google Cloud プロジェクトの Integration Connectors サービス アカウントに
roles/dns.peer
ロールを付与します。たとえば、Google Cloud プロジェクト 12345 に Integration Connectors マネージド ゾーンを作成し、Cloud DNS が Google Cloud プロジェクト 67890 にあるとします。この場合、Google Cloud プロジェクト 67890 のservice-12345@gcp-sa-connectors.iam.gserviceaccount.com
サービス アカウントにroles/dns.peer
ロールを付与する必要があります。
Integration Connectors マネージド ゾーンを作成するには、Cloud コンソールまたはコマンドライン(gcloud)を使用します。
Console
Cloud コンソールから Integration Connectors マネージド ゾーンを作成するには、次の操作を行います。
- Integration Connectors の [マネージド ゾーン] ページに移動します。
- 次のフィールドに値を入力します。
- 名前: マネージド ゾーンの名前。
- ターゲット DNS 名: マネージド(ピアリング)ゾーンを作成する Cloud DNS の完全名。たとえば、
server8.stage.user.private
です。 - ターゲット プロジェクト: 限定公開 Cloud DNS ゾーンがある Google Cloud プロジェクトの名前。
- ターゲット ネットワーク: 限定公開 Cloud DNS ゾーンが維持されている VPC ネットワークの名前。
- (省略可)説明: エンドポイント アタッチメントの説明を入力します。
- (省略可)ラベル: リソースラベルを Key-Value ペアとして入力します。ラベルの詳細については、ラベルとはをご覧ください。
- [作成] をクリックします。
gcloud
コマンドラインから Integration Connectors マネージド ゾーンを作成するには、次の操作を行います。
- CreateManagedZone API を実行する前に、認証トークンを取得します。
TOKEN="$(gcloud auth print-access-token)"
- CreateManagedZone API を使用してマネージド ゾーンを作成します。次に例を示します。
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "description": "DESCRIPTION", "dns": "DNS_NAME", "target_project": "TARGET_PROJECT", "target_vpc": "TARGET_VPC" }' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones?managedZoneId=MANAGED_ZONE_NAME
ここで
- DESCRIPTION は、オプションのマネージド ゾーンの説明です。
- DNS_NAME: マネージド(ピアリング)ゾーンを作成する Cloud DNS の完全名。たとえば、
server8.stage.user.private
です。 - TARGET_PROJECT は、限定公開 Cloud DNS ゾーンがある Google Cloud プロジェクトの名前です。
- TARGET_NETWORK は、限定公開 Cloud DNS ゾーンが維持されている VPC ネットワークの名前です。
- PROJECT_ID は、Integration Connectors に使用している Google Cloud プロジェクトです。
- MANAGED_ZONE_NAME はマネージド ゾーンの名前です。名前は一意である必要があります。 同じ名前のマネージド ゾーンは他に存在しないため、後で名前を変更することはできません。名前は先頭を小文字にして、その後に 63 文字以下の小文字、数字、ハイフンで構成します。末尾をハイフンにすることはできません。最小の長さは 2 です。
API を呼び出すと、Integration Connectors は長時間実行オペレーションを開始します。オペレーションの完了には時間がかかることがあります。オペレーションが正常に完了すると、マネージド ゾーンが作成されます。
- GetManagedZone API を使用して、マネージド ゾーンが作成されたかどうかを確認します。次に例を示します。
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones/MANAGED_ZONE_NAME
API により、次のようなレスポンスが返されます。
{ "name": "projects/demo-project/locations/global/managedZones/demo-mz", "createTime": "2023-04-17T04:34:59.569527046Z", "updateTime": "2023-04-17T04:37:25.189074195Z", "description": "demo managed zone", "dns": "api.private.service.com.", "targetVpc": "target-project-vpc", "targetProject": "target-project" }
- Integration Connectors マネージド ゾーンを作成するユーザーに
マネージド ゾーンの作成が成功すると、次の図に示すように、新しく作成されたマネージド ゾーンが [マネージド ゾーン] ページに表示されます。
エンドポイント アタッチメントの接続を確認する
エンドポイント アタッチメント接続を確認する手順は次のとおりです。
- [エンドポイント アタッチメント] ページで、作成したエンドポイント アタッチメントの名前をクリックします。
- 表示された [エンドポイント アタッチメントの詳細] ページで、[接続状態] フィールドを確認します。状態が
Accepted
の場合、エンドポイント アタッチメントが正しく設定され、Private Service Connect 接続が確立されています。その他のステータスの詳細については、接続ステータスをご覧ください。