> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

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

# ClickPipes 向け GCP Private Service Connect

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

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

<Note>
  GCP PSC 接続を利用できるのは、ClickPipes サービスが GCP にデプロイされている場合のみです。開始前に、[ClickPipes がホストされている GCP リージョンの一覧](/docs/ja/integrations/clickpipes/networking/static-ips#google-cloud-static-nat-ips)を確認してください。
</Note>

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

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

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

* GCP でホストされ、[ClickPipes がホストされているリージョン](/docs/ja/integrations/clickpipes/networking/static-ips#google-cloud-static-nat-ips)に配置された ClickHouse Cloud サービス。
* ソースで PSC を有効にし、PSC サービスアタッチメントを管理するための IAM 権限 (`roles/compute.networkAdmin`) 。
* サービスアタッチメントへの接続を許可された**ClickPipes コンシューマープロジェクト**。本番環境の ClickPipes では、これは `clickpipes-production` です。
* サービスを所有する組織の ClickHouse Cloud API キー/シークレット (Terraform または 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 が伝播されないため、カスタム private DNS マッピングはすべての GCP PSC エンドポイントに不可欠です。この方法で常にデータソースのプライベート DNS 名を指定し、ClickPipes はそれをエンドポイントの静的な内部 IP に解決します。

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

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

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

プロデューサー所有の PSC では、接続が自動的に承認されるよう、ClickPipes コンシューマープロジェクトをサービスアタッチメントの自動承認リストに追加します。これを省略すると、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` に渡します。

```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 を取得してください。

  `--consumer-accept-list` は、許可リストに追加するのではなく上書きします。サービス アタッチメントがすでに他のプロジェクトまたはエンドポイントを許可している場合は、すべてを同じコマンドで指定してください。指定から除外したものはアクセスできなくなります。
</Warning>

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

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

1. サイドバーで `Settings` ボタンをクリックします。

   <Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/cp_rpe_settings0.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=71e42e9eea9482ef95a7a0268daed9e2" alt="ClickHouse Cloud 設定" size="lg" border width="1120" height="928" data-path="images/integrations/data-ingestion/clickpipes/cp_rpe_settings0.webp" />

2. `ClickPipe reverse private endpoints` セクションで `Reverse private endpoints` をクリックします。

   <Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/cp_rpe_settings1.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=085af9a759cfaa002abb814936c14600" alt="ClickHouse Cloud 設定" size="md" border width="579" height="705" data-path="images/integrations/data-ingestion/clickpipes/cp_rpe_settings1.webp" />

   リバース プライベート エンドポイントの詳細情報がフライアウトに表示されます。

   このビューでは削除以外の操作はできません。エンドポイントの `×` をクリックし、確認して削除します。削除は元に戻せず、そのエンドポイントを現在使用している ClickPipe は機能しなくなります。

   エンドポイントのカスタム private DNS マッピングを変更するには、API または Terraform を使用します。更新すると、マッピングが追加されるのではなく、マッピングのリスト全体が置き換えられます。

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

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

* RPE エンドポイントとサービス アタッチメントは、**同じ GCP リージョン**内に存在する必要があります。[グローバル アクセス](https://docs.cloud.google.com/vpc/docs/about-accessing-vpc-hosted-services-endpoints#global-access)を介したリージョン間 PSC は、まだサポートされていません。ログソースが別のリージョンにある場合は、[SSH トンネリング](/docs/ja/integrations/clickpipes/networking/index#ssh-tunneling)を使用してください。
* PSC サービス アタッチメントを一度に要求できる ClickHouse Cloud サービスは 1 つだけであり、複数のサービス間で再利用することはできません。サービス アタッチメントを別のサービスに移動するには、既存の要求を解除するため、[ClickHouse Support にお問い合わせください](https://clickhouse.com/support/program)。
