GCP プライベートサービスコネクト
プライベートサービスコネクト
プライベートサービスコネクト (PSC) は、消費者が自分の仮想プライベートクラウド (VPC) ネットワーク内で管理されたサービスにプライベートにアクセスできるようにする Google Cloud のネットワーキング機能です。同様に、管理サービスのプロデューサーは、これらのサービスを自身の別々の VPC ネットワークでホストし、消費者にプライベート接続を提供します。
サービスプロデューサーは、プライベートサービスコネクトサービスを作成することにより、消費者にアプリケーションを公開します。サービス消費者は、これらのプライベートサービスコネクトサービスに、これらのプライベートサービスコネクトの種類のいずれかを通じて直接アクセスします。

デフォルトでは、ClickHouse サービスはプライベートサービス接続を介して利用できません。PSC 接続が承認され、確立されている場合でも、下記の 手順 に従って、インスタンスレベルで PSC ID を許可リストに明示的に追加する必要があります。
GCP プライベートサービスコネクトは、ClickHouse Cloud Production サービスでのみ有効にできます。
クロスリージョン接続はサポートされていません。プロデューサーと消費者のリージョンは同じである必要があります。ただし、プライベートサービスコネクト (PSC) レベルで グローバルアクセス を有効にすることで、VPC 内の他のリージョンから接続できます。
プライベートサービスコネクトのグローバルアクセスを使用する際の重要な考慮事項:
- グローバルアクセスを利用するリージョンは、同じ VPC に属する必要があります。
- グローバルアクセスは、PSC レベルで明示的に有効にする必要があります(下のスクリーンショットを参照)。
- ファイアウォール設定が他のリージョンからの PSC へのアクセスをブロックしないようにしてください。
- GCP のリージョン間データ転送料金が発生する場合があります。
プロセスは四つのステップに分かれています:
- プライベートサービスコネクト用の GCP サービスアタッチメントを取得します。
- サービスエンドポイントを作成します。
- エンドポイント ID を ClickHouse Cloud 組織に追加します。
- エンドポイント ID をサービスの許可リストに追加します。
以下の例では、以下の値を使用します:
- GCP リージョン:
us-central1
- GCP プロジェクト (顧客 GCP プロジェクト):
my-gcp-project
- 顧客 GCP プロジェクトの GCP プライベート IP アドレス:
10.128.0.2
- 顧客 GCP プロジェクトの GCP VPC:
default
以下にコード例を示し、ClickHouse Cloud サービス内でプライベートサービスコネクトを設定する方法を示します。
始める前に
ClickHouse Cloud サービスに関する情報を取得する必要があります。これは、ClickHouse Cloud コンソールまたは ClickHouse API を使用して行うことができます。ClickHouse API を使用する場合は、次の環境変数を設定してから続行してください:
- ClickHouse コンソールから組織 ID を取得できます(組織 -> 組織の詳細)。
- 新しいキーを作成するか、既存のものを使用できます。
GCP サービスアタッチメントとプライベートサービスコネクト用の DNS 名を取得する
オプション 1: ClickHouse Cloud コンソール
ClickHouse Cloud コンソールで、プライベートサービスコネクト経由で接続したいサービスを開き、設定メニューを開きます。プライベートエンドポイントのセットアップボタンをクリックします。サービス名 (endpointServiceId
) と DNS 名 (privateDnsHostname
) をメモしてください。次のステップでこれらを使用します。

オプション 2: API
このステップを実行するには、そのリージョンに少なくとも一つのインスタンスが展開されている必要があります。
プライベートサービスコネクト用の GCP サービスアタッチメントと DNS 名を取得します:
endpointServiceId
と privateDnsHostname
をメモしてください。次のステップでこれらを使用します。
サービスエンドポイントを作成する
このセクションでは、サービスエンドポイントを作成します。
プライベートサービス接続を追加する
最初に、プライベートサービス接続を作成します。
オプション 1: Google Cloud コンソールを使用する
Google Cloud コンソールで、ネットワークサービス -> プライベートサービスコネクトに移動します。

コネクトエンドポイントボタンをクリックして、プライベートサービスコネクト作成ダイアログを開きます。
- ターゲット: 公開されたサービスを使用する
- ターゲットサービス: GCP サービスアタッチメントを取得する ステップの
endpointServiceId
を使用する。 - エンドポイント名: PSC エンドポイント名に名前を設定します。
- ネットワーク/サブネットワーク/IP アドレス: 接続に使用するネットワークを選択します。プライベートサービスコネクトエンドポイント用の IP アドレスを作成するか、既存のものを使用する必要があります。私たちの例では、your-ip-addressという名前のアドレスを前もって作成し、IP アドレス
10.128.0.2
を割り当てました。 - エンドポイントを任意のリージョンから利用できるようにするには、グローバルアクセスを有効にするチェックボックスをオンにします。

PSC エンドポイントを作成するには、ADD ENDPOINT ボタンを使用します。
接続が承認されると、状態列が 保留中 から 受理済み に変わります。

PSC 接続 ID をコピーします。この ID を次のステップで エンドポイント ID として使用します。
オプション 2: Terraform を使用する
TARGET - GCP サービスアタッチメントを取得する ステップの endpointServiceId
を使用します。
DNS の設定
Google Cloud コンソールを使用する場合と、gcloud
CLI を使用する場合の二つのオプションが提供されます。
オプション 1: Google Cloud コンソールを使用する
- サポートされているリージョンからプライベート DNS ゾーンを作成します。
- ネットワークサービス -> Cloud DNS を開きます。
- ゾーンの作成を選択します:
ゾーンタイプダイアログで、以下を設定します:
- ゾーンタイプ: プライベート
- ゾーン名: 適切なゾーン名を入力します。
- DNS 名: お使いのリージョンの サポートされているリージョン テーブルの プライベート DNS ドメイン 列を使用します。
- ネットワーク: PSC を使用して ClickHouse Cloud への接続に使用するネットワークに DNS ゾーンをアタッチします。

プライベート DNS ゾーンに DNS レコードを作成する
プライベートサービス接続を追加する ステップで作成された IP アドレスを指すようにします。

オプション 2: gcloud
CLI を使用する
DNS ゾーンの作成
DNS レコードの作成
DNS_RECORD - GCP サービスアタッチメントを取得する ステップの privateDnsHostname
を使用します。
オプション 3: Terraform を使用する
DNS_NAME - GCP サービスアタッチメントを取得する ステップの privateDnsHostname
を使用します。
DNS 設定の確認
DNS_RECORD - GCP サービスアタッチメントを取得する ステップの privateDnsHostname
を使用します。
エンドポイント ID を ClickHouse Cloud 組織に追加する
オプション 1: ClickHouse Cloud コンソール
組織にエンドポイントを追加するには、サービスの許可リストにエンドポイント ID を追加する ステップに進みます。ClickHouse Cloud コンソールを使用して PSC 接続 ID
をサービス許可リストに追加することで、自動的に組織にも追加されます。
エンドポイントを削除するには、組織の詳細 -> プライベートエンドポイントを開き、削除ボタンをクリックしてエンドポイントを削除します。

オプション 2: API
コマンドを実行する前に、これらの環境変数を設定してください:
以下の エンドポイント ID を プライベートサービス接続を追加する ステップから取得した値で置き換えます。
エンドポイントを追加するには、次を実行します:
エンドポイントを削除するには、次を実行します:
組織にプライベートエンドポイントを追加/削除します:
サービスの許可リストにエンドポイント ID を追加する
プライベートサービスコネクトを使用可能にする各インスタンスのために、エンドポイント ID を許可リストに追加する必要があります。
このステップは開発サービスには行えません。
オプション 1: ClickHouse Cloud コンソール
ClickHouse Cloud コンソールで、プライベートサービスコネクト経由で接続したいサービスを開き、設定に移動します。 プライベートサービス接続を追加する ステップから取得した エンドポイント ID
を入力します。エンドポイントの作成をクリックします。
既存のプライベートサービスコネクト接続からのアクセスを許可したい場合は、既存のエンドポイントのドロップダウンメニューを使用してください。

オプション 2: API
コマンドを実行する前に、これらの環境変数を設定してください:
以下の エンドポイント ID を プライベートサービス接続を追加する ステップから取得した値で置き換えます。
プライベートサービスコネクトを使用可能にするすべてのサービスに対して実行します。
追加するには:
削除するには:
プライベートサービスコネクトを使用してインスタンスにアクセスする
プライベートサービスコネクトフィルターが設定された各インスタンスには、パブリックエンドポイントとプライベートエンドポイントの二つがあります。プライベートサービスコネクトを使用して接続するには、プライベートエンドポイントを使用する必要があります。これは、GCP サービスアタッチメントを取得する ステップの endpointServiceId
を参照してください。
プライベート DNS ホスト名は、GCP VPC からのみ利用可能です。GCP VPC の外に存在するマシンから DNS ホストを解決しないでください。
プライベート DNS ホスト名を取得する
オプション 1: ClickHouse Cloud コンソール
ClickHouse Cloud コンソールで、設定に移動します。プライベートエンドポイントのセットアップボタンをクリックします。開かれたフライアウトで、DNS 名をコピーします。

オプション 2: API
この例では、xxxxxxx.yy-xxxxN.p.gcp.clickhouse.cloud
ホスト名への接続はプライベートサービスコネクトにルーティングされます。一方で、xxxxxxx.yy-xxxxN.gcp.clickhouse.cloud
はインターネット経由でルーティングされます。
トラブルシューティング
DNS 設定をテストする
DNS_NAME - GCP サービスアタッチメントを取得する ステップの privateDnsHostname
を使用します。
ピアによる接続のリセット
- おそらく、エンドポイント ID がサービスの許可リストに追加されていません。サービスの許可リストにエンドポイント ID を追加する ステップを再確認してください。
接続性をテストする
PSC リンクを使用して接続するときに問題がある場合は、openssl
を使用して接続性を確認してください。プライベートサービスコネクトエンドポイントのステータスが 受理済み
であることを確認してください:
OpenSSL は接続できるはずです (出力に CONNECTED が表示されます)。errno=104
は予期される結果です。
DNS_NAME - GCP サービスアタッチメントを取得する ステップの privateDnsHostname
を使用します。
エンドポイントフィルターの確認
REST API
リモートデータベースへの接続
たとえば、ClickHouse Cloud で MySQL または PostgreSQL テーブル関数を使用して、GCP にホストされているデータベースに接続しようとしているとします。GCP PSC は、この接続を安全に有効にするためには使用できません。PSC は一方向の単方向接続です。内部ネットワークまたは GCP VPC が ClickHouse Cloud に安全に接続できるようにしますが、ClickHouse Cloud が内部ネットワークに接続することはできません。
GCP プライベートサービスコネクトのドキュメント によると:
サービス指向の設計: プロデューサーサービスは、消費者 VPC ネットワークに単一の IP アドレスを公開するロードバランサーを介して公開されます。プロデューサーサービスにアクセスする消費者のトラフィックは一方向であり、サービス IP アドレスにしかアクセスできず、全体のピア VPC ネットワークにはアクセスできません。
これを実現するには、ClickHouse Cloud から内部/プライベートデータベースサービスへの接続を許可するように、GCP VPC ファイアウォールルールを構成します。ClickHouse Cloud リージョンのデフォルトの出口 IP アドレスとともに、利用可能な静的 IP アドレスを確認してください。
さらなる情報
詳細情報については、cloud.google.com/vpc/docs/configure-private-service-connect-servicesを参照してください。