エンドポイント アタッチメントを作成する
統合コネクタのプライベート接続を構成するには、PSC(Private Service Connect)アタッチメントを作成する必要があります。ただし、PSC アタッチメントを使用するには、PSC アタッチメントを直接使用できないため、エンドポイント アタッチメントも作成する必要があります。エンドポイント アタッチメントは、PSC サービス アタッチメントへのインターフェースと考えることができます。作成すると、プライベート接続用のコネクタを構成するときに、エンドポイント アタッチメントの詳細を使用できます。このページでは、エンドポイント アタッチメントの作成方法と、次のコンセプトについて理解していることを前提としています。
エンドポイント アタッチメントは、IP アドレスまたはホスト名として作成できます。
エンドポイント アタッチメントを IP アドレスとして作成する
エンドポイント アタッチメントを IP アドレスとして作成するには、Cloud Console またはコマンドライン(gcloud)を使用します。コンソール
Cloud Console からエンドポイント アタッチメントを作成するには、次のようにします。
- 統合コネクタの [エンドポイント アタッチメント] ページを開きます。
- [作成] をクリックします。[エンドポイント アタッチメントの作成] ページが開きます。
- 次のフィールドに値を入力します。
- 名前: エンドポイント アタッチメントの名前。名前は一意である必要があります。 同じ名前のエンドポイント アタッチメントが他に存在することはできません。また、この名前は後で変更できません。 名前は先頭を小文字にして、その後に 63 文字以下の小文字、数字、ハイフンで構成します。末尾をハイフンにすることはできません。最小の長さは 2 です。
- サービス アタッチメント ID: すでに作成した PSC サービス アタッチメントの名前。
- (省略可)説明: エンドポイント アタッチメントの説明を入力します。
- (省略可)ラベル: リソースラベルを Key-Value ペアとして入力します。ラベルの詳細については、ラベルとはをご覧ください。
- (省略可)エンドポイント グローバル アクセスを有効にする: 任意のリージョンに存在する接続からバックエンドにトラフィックを送信する場合は、このオプションを選択します。
デフォルトでは、エンドポイント アタッチメントで、接続とバックエンドの両方が同じリージョンにある必要があります。したがって、エンドポイントでグローバル アクセスを有効にすると、任意のリージョンに存在する接続がバックエンドにトラフィックを送信できます。
- [作成] をクリックします。
[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 に使用する Google Cloud プロジェクトに Integration Connectors マネージド ゾーンを作成します。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 ロールと権限をご覧ください。 - 統合コネクタ
service-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.com
サービス アカウントにrole/dns.peer
ロールを付与します。Cloud DNS の Google Cloud プロジェクトが Integration Connectors の Google Cloud プロジェクトと異なる場合は、
roles/dns.peer
Cloud DNS Google Cloud プロジェクトの Integration Connectors サービス アカウントにロールを付与します。たとえば、Google Cloud プロジェクト 12345 に Integration Connectors マネージド ゾーンを作成するとします。Cloud DNS は Google Cloud プロジェクト 67890 にあります。この場合、roles/dns.peer
ロールを Google Cloud プロジェクト 67890 のservice-12345@gcp-sa-connectors.iam.gserviceaccount.com
サービス アカウントに付与する必要があります。
統合コネクタ マネージド ゾーンを作成するには、Cloud Console またはコマンドライン(gcloud)を使用できます。
コンソール
Cloud Console から 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 は、統合コネクタに使用している 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 マネージド ゾーンを作成するユーザーに
マネージド ゾーンの作成が成功すると、新しく作成されたマネージド ゾーンが [マネージド ゾーン] ページに一覧表示されます。次の図をご覧ください。
エンドポイント アタッチメントの設定を確認する
エンドポイントの接続を確認するには、バックエンド システムへの接続を作成します。接続を作成するときは、Destinations
セクションで Destination type
を Hostname
として選択し、適切なエンドポイント IP アドレスまたはホスト名を入力します。接続が正常に作成されると、新しく作成された接続のステータスが Cloud Console の [接続] ページで Active
になります。