> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-vortex-format.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ClickPipes 向け GCP Private Service Connect

> Private Service Connect（PSC）を使用して、ClickPipes と GCP 上でホストされているデータソース間の安全な接続を確立します。

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

GCP の [Private Service Connect (PSC)](https://cloud.google.com/vpc/docs/private-service-connect) を使用すると、ClickPipes と GCP 上でホストされているデータソース間にセキュアな接続を確立できます。ClickPipes は VPC 内に **リバースプライベートエンドポイント (RPE) ** を作成し、データソース用に公開されたプライベートエンドポイントサービスに接続するため、トラフィックがパブリックインターネットに公開されることはありません。

<Check>
  ClickPipes は、[グローバルアクセス](https://docs.cloud.google.com/vpc/docs/about-accessing-vpc-hosted-services-endpoints#global-access)を介した**クロスリージョン** PSC 接続をサポートしています。ClickPipes インフラストラクチャが稼働するリージョンとは異なるリージョンにあるエンドポイントでは、グローバルアクセスが必要です。詳細については、[ClickPipes GCP リージョンのドキュメント](/ja/integrations/clickpipes/networking/static-ips#google-cloud-static-nat-ips)を確認してください。
</Check>

<div id="supported-patterns">
  ## サポートされるパターン
</div>

| パターン               | 適用される場合                                                                                                       | サービス アタッチメント                   |
| ------------------ | ------------------------------------------------------------------------------------------------------------- | ------------------------------ |
| **ネイティブ PSC**      | Google Cloud SQL、AlloyDB、Google Cloud Managed Service for Apache Kafka など、PSC サービス アタッチメントを自動的に公開するマネージドサービス。 | インスタンスで PSC を有効にすると自動的に作成されます。 |
| **プロデューサー所有の PSC** | Compute Engine 上の Postgres や、プライベート IP 経由でのみアクセス可能なマネージドサービスなど、サービス アタッチメントを公開しないデータソース。                      | ユーザーが作成・管理します。                 |

<div id="prerequisites">
  ## 前提条件
</div>

* GCP でホストされる ClickHouse Cloud サービス。ClickPipes は、[一部の例外](/ja/integrations/clickpipes/networking/static-ips#google-cloud-static-nat-ips)を除き、ClickHouse Cloud サービスと同じリージョンで実行されます。
* ソースで PSC を有効にし、PSC サービスアタッチメントを管理するための IAM 権限 (`roles/compute.networkAdmin`) 。
* サービスアタッチメントへの接続を許可された**ClickPipes コンシューマープロジェクト** (`clickpipes-production`)。
* ClickPipes をプログラムでプロビジョニングする場合: サービスを所有する組織の ClickHouse Cloud API キー。

<div id="create-rpe">
  ## リバース プライベート エンドポイントを作成する
</div>

RPE を作成するには、データソースについて次の情報が必要です。

* **サービス アタッチメント URI**: `projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>`。データソースの前段に公開されている PSC エンドポイントです。
* **private DNS 名**: パイプの接続先ホスト名です。PSC エンドポイントには DNS 名が紐付かない静的な内部 IP が割り当てられるため、ClickPipes がこのホスト名をその IP に解決します。

<Tabs>
  <Tab title="ClickPipes UI">
    1. ClickHouse Cloud でサービスを開き、**Data Sources** > **ClickPipes** に移動します。
    2. 取り込み元のデータソースを選択します。
    3. **Setup your ClickPipe connection** で **Use secure connection** をオンにし、**+ Reverse private endpoint** をクリックして **GCP PSC service attachment** を選択します。
    4. **サービス アタッチメント URI**、**private DNS 名**、**説明** を入力します。
    5. **Create** をクリックします。エンドポイントの状態は `Provisioning` → `Ready` と遷移します。 (ネイティブ PSC は自動承認されるため、`PendingAcceptance` は表示されません。)
  </Tab>

  <Tab title="Terraform">
    カスタム private DNS マッピングは `clickhouse_clickpipes_reverse_private_endpoint` の属性ではありません。マッピングの完全な置換リストを指定し、ID でエンドポイントを参照する別個の `clickhouse_clickpipes_reverse_private_endpoint_custom_private_dns` リソースで管理します。

    ```hcl theme={null}
    resource "clickhouse_clickpipes_reverse_private_endpoint" "gcp_psc" {
      service_id             = var.clickhouse_service_id
      description            = "GCP PSC endpoint"
      type                   = "GCP_PSC_SERVICE_ATTACHMENT"
      gcp_service_attachment = "projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>"
    }

    resource "clickhouse_clickpipes_reverse_private_endpoint_custom_private_dns" "gcp_psc" {
      service_id                  = var.clickhouse_service_id
      reverse_private_endpoint_id = clickhouse_clickpipes_reverse_private_endpoint.gcp_psc.id

      mapping = [
        { private_dns_name = "<PRIVATE_DNS_NAME>" }
      ]
    }
    ```
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    curl --silent --user $KEY_ID:$KEY_SECRET \
      -X POST -H "Content-Type: application/json" \
      https://api.clickhouse.cloud/v1/organizations/<ORG_ID>/services/<SERVICE_ID>/clickpipesReversePrivateEndpoints \
      -d '{
        "type": "GCP_PSC_SERVICE_ATTACHMENT",
        "description": "GCP PSC endpoint",
        "gcpServiceAttachment": "projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>",
        "customPrivateDnsMappings": [
          { "privateDnsName": "<PRIVATE_DNS_NAME>" }
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="custom-private-dns-rules">
  ### カスタム プライベート DNS 名
</div>

GCP PSC では DNS が伝播されないため、ClickPipes がエンドポイントの静的な内部 IP に解決できるよう、すべての GCP PSC エンドポイントにカスタム private DNS マッピングが必要です。

標準の ClickPipes [カスタム プライベート DNS 命名規則](/ja/integrations/clickpipes/networking/aws-privatelink#custom-private-dns)が適用されます。ワイルドカードのサポート、service の リバースプライベートエンドポイント 間での一意性、予約済み接尾辞に関する制限は、すべての provider で同じように適用されます。ワイルドカードは特に便利です。*たとえば*、`*.<cluster>.<region>.managedkafka.<project>.cloud.goog` のような単一のマッピングで、Managed Kafka クラスター内のすべての broker を対象にできます。

GCP PSC では、マッピングの `privateDnsName` のみが使用されます。PSC エンドポイントは、紐付ける DNS 名のない静的 IP を公開するため、`internalDNSName` フィールドはサポートされません。マッピングは常にその IP に解決されます。

<div id="producer-owned">
  ## プロデューサー所有の接続を承認する
</div>

プロデューサー所有 PSC では、接続を自動的に承認するため、ClickPipes コンシューマープロジェクト (`clickpipes-production`) をサービスアタッチメントの自動承認リストに追加します。これを省略すると、手動で承認するまで RPE は `PendingAcceptance` のままとなります。

接続を承認するには、サービスアタッチメントのコンシューマー承認リストに、エンドポイントの数値 ID ベースの URI (`projects/<PROJECT>/regions/<REGION>/forwardingRules/<NUMERIC_ID>`) を追加する必要があります。サービスアタッチメント上の保留中の接続の `endpointWithId` 値を取得するには、次を実行します。

```bash theme={null}
gcloud beta compute service-attachments describe <SERVICE_ATTACHMENT_NAME> \
  --region=<REGION> --project=<YOUR_PROJECT_ID> \
  --format='json(connectedEndpoints)'
```

`status` が `PENDING` のエントリの `endpointWithId` から `https://www.googleapis.com/compute/beta/` プレフィックスを削除し、結果を `--consumer-accept-list` に渡します。

<Danger>
  `--consumer-accept-list` は新しいコンシューマープロジェクトを受け入れリストに追加するのではなく、リスト全体を上書きします。サービスアタッチメントがすでに他のプロジェクトまたはエンドポイントを受け入れている場合は、すべてを同じコマンドで指定してください。指定しなかったものはアクセスできなくなります。
</Danger>

```bash theme={null}
gcloud beta compute service-attachments update <SERVICE_ATTACHMENT_NAME> \
  --region=<REGION> --project=<YOUR_PROJECT_ID> \
  --consumer-accept-list=projects/<PROJECT>/regions/<REGION>/forwardingRules/<NUMERIC_ID> \
  --reconcile-connections
```

<Warning>
  ここでは、ClickPipes API/Terraform のレスポンスに含まれる `endpoint_id` を使用しないでください。この値は転送ルールの*名前*であり、GCP で必要な数値 ID ではないため、許可リストと一致しません。必ず、サービス アタッチメントの保留中の `endpointWithId` から数値 ID を取得してください。
</Warning>

<div id="managing-rpes">
  ## リバース プライベート エンドポイントの管理
</div>

既存のリバース プライベート エンドポイントは、ClickHouse Cloud サービスの設定で管理できます。

1. ClickHouse Cloud コンソールのサイドバーで、`Settings` に移動します。

`ClickPipe reverse private endpoints` で、`Reverse private endpoints` をクリックします。

リバース プライベート エンドポイントの詳細情報がフライアウトに表示されます。ここから RPE を削除できます。エンドポイントの `×` をクリックし、削除を確認します。削除は**永続的**であり、そのエンドポイントを現在使用している ClickPipe はすべて機能しなくなります。

エンドポイントのカスタム private DNS マッピングを変更するには、[Cloud API](/ja/integrations/clickpipes/programmatic-access/openapi) または [Terraform](/ja/integrations/clickpipes/programmatic-access/terraform) を使用します。更新すると、マッピングが追加されるのではなく、マッピングのリスト全体が置き換えられます。

エンドポイントに `Rejected` または `Failed` と表示される場合は、ステータスの下にあるメッセージを確認してください。これにより、プロデューサーによって拒否された接続なのか、切断された接続または対応が必要な接続なのかを判別できます。通常、どちらの場合も、サービスアタッチメントの許可リストに ClickPipes コンシューマープロジェクトが含まれていないことを示します。エンドポイントについて GCP が報告するステータスを確認するには、サービスアタッチメントの `connectedEndpoints` を記述します。

<div id="limitations">
  ## 既知の制限事項
</div>

* PSC サービス アタッチメントを一度に要求できる ClickHouse Cloud サービスは 1 つだけであり、複数のサービス間で再利用することはできません。サービス アタッチメントを別のサービスに移動するには、既存の要求を解除するため、[ClickHouse Support にお問い合わせください](https://clickhouse.com/support/program)。
