GCP の Private Service Connect (PSC) を使用すると、ClickPipes と GCP 上でホストされているデータソース間にセキュアな接続を確立できます。ClickPipes は VPC 内に リバースプライベートエンドポイント (RPE) を作成し、データソース用に公開されたプライベートエンドポイントサービスに接続するため、トラフィックがパブリックインターネットに公開されることはありません。
サポートされるパターン
| パターン | 適用される場合 | サービス アタッチメント |
|---|---|---|
| ネイティブ PSC | Google Cloud SQL、AlloyDB、Google Cloud Managed Service for Apache Kafka など、PSC サービス アタッチメントを自動的に公開するマネージドサービス。 | インスタンスで PSC を有効にすると自動的に作成されます。 |
| プロデューサー所有の PSC | Compute Engine 上の Postgres や、プライベート IP 経由でのみアクセス可能なマネージドサービスなど、サービス アタッチメントを公開しないデータソース。 | ユーザーが作成・管理します。 |
前提条件
- GCP でホストされる ClickHouse Cloud サービス。ClickPipes は、一部の例外を除き、ClickHouse Cloud サービスと同じリージョンで実行されます。
- ソースで PSC を有効にし、PSC サービスアタッチメントを管理するための IAM 権限 (
roles/compute.networkAdmin) 。 - サービスアタッチメントへの接続を許可されたClickPipes コンシューマープロジェクト (
clickpipes-production)。 - ClickPipes をプログラムでプロビジョニングする場合: サービスを所有する組織の ClickHouse Cloud API キー。
リバース プライベート エンドポイントを作成する
RPE を作成するには、データソースについて次の情報が必要です。
- サービス アタッチメント URI:
projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>。データソースの前段に公開されている PSC エンドポイントです。 - private DNS 名: パイプの接続先ホスト名です。PSC エンドポイントには DNS 名が紐付かない静的な内部 IP が割り当てられるため、ClickPipes がこのホスト名をその IP に解決します。
- ClickHouse Cloud でサービスを開き、Data Sources > ClickPipes に移動します。
- 取り込み元のデータソースを選択します。
- Setup your ClickPipe connection で Use secure connection をオンにし、+ Reverse private endpoint をクリックして GCP PSC service attachment を選択します。
- サービス アタッチメント URI、private DNS 名、説明 を入力します。
- Create をクリックします。エンドポイントの状態は
Provisioning→Readyと遷移します。 (ネイティブ PSC は自動承認されるため、PendingAcceptanceは表示されません。)
カスタム private DNS マッピングは clickhouse_clickpipes_reverse_private_endpoint の属性ではありません。マッピングの完全な置換リストを指定し、ID でエンドポイントを参照する別個の clickhouse_clickpipes_reverse_private_endpoint_custom_private_dns リソースで管理します。
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>" }
]
}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>" }
]
}'カスタム プライベート DNS 名
GCP PSC では DNS が伝播されないため、ClickPipes がエンドポイントの静的な内部 IP に解決できるよう、すべての GCP PSC エンドポイントにカスタム private DNS マッピングが必要です。
標準の ClickPipes カスタム プライベート DNS 命名規則が適用されます。ワイルドカードのサポート、service の リバースプライベートエンドポイント 間での一意性、予約済み接尾辞に関する制限は、すべての provider で同じように適用されます。ワイルドカードは特に便利です。たとえば、*.<cluster>.<region>.managedkafka.<project>.cloud.goog のような単一のマッピングで、Managed Kafka クラスター内のすべての broker を対象にできます。
GCP PSC では、マッピングの privateDnsName のみが使用されます。PSC エンドポイントは、紐付ける DNS 名のない静的 IP を公開するため、internalDNSName フィールドはサポートされません。マッピングは常にその IP に解決されます。
プロデューサー所有の接続を承認する
プロデューサー所有 PSC では、接続を自動的に承認するため、ClickPipes コンシューマープロジェクト (clickpipes-production) をサービスアタッチメントの自動承認リストに追加します。これを省略すると、手動で承認するまで RPE は PendingAcceptance のままとなります。
接続を承認するには、サービスアタッチメントのコンシューマー承認リストに、エンドポイントの数値 ID ベースの URI (projects/<PROJECT>/regions/<REGION>/forwardingRules/<NUMERIC_ID>) を追加する必要があります。サービスアタッチメント上の保留中の接続の endpointWithId 値を取得するには、次を実行します。
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 に渡します。
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リバース プライベート エンドポイントの管理
既存のリバース プライベート エンドポイントは、ClickHouse Cloud サービスの設定で管理できます。
- ClickHouse Cloud コンソールのサイドバーで、
Settingsに移動します。
ClickPipe reverse private endpoints で、Reverse private endpoints をクリックします。
リバース プライベート エンドポイントの詳細情報がフライアウトに表示されます。ここから RPE を削除できます。エンドポイントの × をクリックし、削除を確認します。削除は永続的であり、そのエンドポイントを現在使用している ClickPipe はすべて機能しなくなります。
エンドポイントのカスタム private DNS マッピングを変更するには、Cloud API または Terraform を使用します。更新すると、マッピングが追加されるのではなく、マッピングのリスト全体が置き換えられます。
エンドポイントに Rejected または Failed と表示される場合は、ステータスの下にあるメッセージを確認してください。これにより、プロデューサーによって拒否された接続なのか、切断された接続または対応が必要な接続なのかを判別できます。通常、どちらの場合も、サービスアタッチメントの許可リストに ClickPipes コンシューマープロジェクトが含まれていないことを示します。エンドポイントについて GCP が報告するステータスを確認するには、サービスアタッチメントの connectedEndpoints を記述します。
既知の制限事項
- PSC サービス アタッチメントを一度に要求できる ClickHouse Cloud サービスは 1 つだけであり、複数のサービス間で再利用することはできません。サービス アタッチメントを別のサービスに移動するには、既存の要求を解除するため、ClickHouse Support にお問い合わせください。