mcpField
C
configuring-private-connectivity

configuring-private-connectivity

github.com/cockroachlabsクラウド・DevOps23118 回インストール14 週間前に更新
リポジトリ

configuring-private-connectivity について

configuring-private-connectivityは、CockroachDB Cloudクラスターにプライベートなネットワーク経路を設定するスキルです。データベースおよびクラウド管理者向けに、インバウンド/アウトバウンドのプライベートエンドポイント、VPCピアリング、DNS、障害対応を扱います。

主な機能

  1. 01インバウンドプライベートエンドポイントの設定
  2. 02アウトバウンドエンドポイントの設定
  3. 03AWS・GCPのVPCピアリングガイド
  4. 04DNS設定とトラブルシューティング
  5. 05Terraform、CLI、APIによる手順

活用シーン

  1. 01アプリケーションのDB通信をパブリックインターネットから分離
  2. 02CDC変更フィードを外部Kafkaサービスへプライベート接続
  3. 03アプリケーションVPCとCockroachDB Cloudの接続
  4. 04エンドポイントのDNSや接続障害の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cockroachlabs/cockroachdb-skills --skill configuring-private-connectivity

インストール後、Claude Code で/configuring-private-connectivityを入力して読み込まれたか確認します。

同梱ファイルreferences/ccloud-commands.mdreferences/cloud-provider-setup.md

詳細

プライベート接続の設定

CockroachDB Cloud クラスターのプライベートネットワーク接続を設定し、データベーストラフィックがパブリックインターネットに公開されないようにします。インバウンドのプライベートエンドポイント(AWS PrivateLink、GCP Private Service Connect、Azure Private Link)、外部サービスへのアウトバウンド接続用のエグレスプライベートエンドポイント、VPC ピアリングについて説明します。

このスキルを使用する場面

  • データベース接続がパブリックインターネットに公開されないように、プライベートエンドポイントを設定する
  • Confluent Kafka などの外部サービスへの CDC 変更フィード用に、エグレスプライベートエンドポイントを設定する
  • CockroachDB Cloud クラスターとアプリケーション VPC の間に VPC ピアリングを確立する
  • プライベートエンドポイントの DNS 解決に関する問題をトラブルシューティングする
  • プライベートエンドポイントの「保留中のまま」や接続失敗のエラーを解決する
  • Terraform でプライベート接続の設定を自動化する

前提条件

  • CockroachDB Cloud クラスター — Standard または Advanced プラン(VPC ピアリングには Advanced が必要です)
  • ccloud CLI(Cluster Admin ロールで認証済み)
  • クラウドプロバイダーへのアクセス権:
    • AWS: VPC エンドポイントの作成、DNS の変更、セキュリティグループの管理に必要な IAM 権限
    • GCP: Private Service Connect エンドポイントと DNS レコードの作成権限
    • Azure: プライベートエンドポイントの作成と DNS ゾーンの管理権限
  • ccloud cluster info で取得したクラスター ID とクラウドプロバイダーの詳細

アクセスを確認します:

ccloud auth whoami
ccloud cluster info <cluster-name> -o json

コマンド構文の詳細については、ccloud コマンドリファレンスを参照してください。

設定に関する選択事項

作業を進める前に、ユーザーの環境に該当する接続タイプとクラウドプロバイダーを確認します。該当する選択肢を尋ねたうえで、以下の対応するセクションのみを実施してください。

選択 1 — 必要な接続タイプ:

  • インバウンドのプライベートエンドポイント: アプリケーションがプライベートネットワーク経由で CockroachDB に接続します(AWS PrivateLink、GCP Private Service Connect、Azure Private Link)。最も一般的なユースケースです。
  • エグレスプライベートエンドポイント: CockroachDB がプライベート経路を介して外部サービス(例:CDC 用の Confluent Kafka)にアウトバウンド接続します。
  • VPC ピアリング: アプリケーション VPC と CockroachDB Cloud VPC の間に直接ネットワーク接続を確立します。Advanced プランが必要です。
  • 組み合わせ: 複数の接続タイプを組み合わせて設定できます。

選択 2 — クラウドプロバイダー:

  • AWS: インバウンドには AWS PrivateLink、ピアリングには AWS VPC ピアリングを使用します。
  • GCP: インバウンドには GCP Private Service Connect、ピアリングには GCP VPC ピアリングを使用します。
  • Azure: インバウンドには Azure Private Link を使用します。Azure では VPC ピアリングを利用できません。

手順

パート 1:インバウンドのプライベートエンドポイント

ユーザーが選択 1 でインバウンドのプライベートエンドポイントを選択した場合のみ、このパートに従ってください。選択 2 でユーザーが選択したクラウドプロバイダーに対応するサブセクション(1.2、1.3、または 1.4)のみを実施してください。

プライベートエンドポイントを使用すると、VPC 内のアプリケーションはパブリックインターネットを経由せずに CockroachDB Cloud に接続できます。

1.1 プライベートエンドポイントサービスを取得する

Cloud Console または Cloud API から、プライベートエンドポイントサービスの情報を取得します。

Cloud Console: クラスターの Networking > Private endpoint タブに移動します。サービス名/ID が表示されます。

Cloud API:

curl "https://cockroachlabs.cloud/api/v1/clusters/<cluster-id>/networking/private-endpoint-services" \
  -H "Authorization: Bearer <api-key>"

これにより、クラウドアカウントでエンドポイントを作成する際に必要な、クラウドプロバイダーのサービス名/ID が返されます。

1.2 プライベートエンドポイントを作成する(AWS PrivateLink)
# In your AWS account, create a VPC endpoint
aws ec2 create-vpc-endpoint \
  --vpc-id <your-vpc-id> \
  --service-name <service-name-from-ccloud> \
  --vpc-endpoint-type Interface \
  --subnet-ids <subnet-id-1> <subnet-id-2> \
  --security-group-ids <security-group-id>

セキュリティグループの要件:

  • アプリケーションのサブネットからのインバウンド TCP ポート 26257 を許可する
  • VPC エンドポイントへのアウトバウンドを許可する
1.3 プライベートエンドポイントを作成する(GCP Private Service Connect)
# Reserve an internal IP address
gcloud compute addresses create cockroachdb-psc \
  --region=<region> \
  --subnet=<subnet> \
  --addresses=<internal-ip>

# Create the Private Service Connect endpoint
gcloud compute forwarding-rules create cockroachdb-psc \
  --region=<region> \
  --network=<network> \
  --address=cockroachdb-psc \
  --target-service-attachment=<service-attachment-from-ccloud>
1.4 プライベートエンドポイントを作成する(Azure Private Link)
# Create a private endpoint in your Azure subscription
az network private-endpoint create \
  --name cockroachdb-pe \
  --resource-group <resource-group> \
  --vnet-name <vnet-name> \
  --subnet <subnet-name> \
  --private-connection-resource-id <service-id-from-ccloud> \
  --connection-name cockroachdb-connection
1.5 CockroachDB Cloud にエンドポイントを登録する

プライベートエンドポイントを Cloud Console または Cloud API から登録します。

Cloud Console: クラスターの Networking > Private endpoint タブに移動し、Add a private endpoint をクリックして、クラウドプロバイダーのエンドポイント ID を入力します。

Cloud API:

# Register the private endpoint connection with the cluster
curl -X POST "https://cockroachlabs.cloud/api/v1/clusters/<cluster-id>/networking/private-endpoint-connections" \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"endpoint_id": "<cloud-provider-endpoint-id>"}'

Terraform:

resource "cockroach_private_endpoint_connection" "connection" {
  cluster_id  = cockroach_cluster.cluster.id
  endpoint_id = "<cloud-provider-endpoint-id>"
}

接続ステータスが AVAILABLE になるまで待ちます。Cloud Console または API で確認してください。

curl "https://cockroachlabs.cloud/api/v1/clusters/<cluster-id>/networking/private-endpoint-connections" \
  -H "Authorization: Bearer <api-key>"
1.6 DNS を設定する

プライベートエンドポイントでは、クライアントがクラスターのホスト名をパブリック IP ではなくプライベートエンドポイントの IP に解決するよう、DNS の設定が必要です。

AWS: クラスターのホスト名を VPC エンドポイントの DNS 名に向ける Route 53 のプライベートホストゾーンを作成します。

GCP: 予約済みの内部 IP を指定する A レコードを含む Cloud DNS のプライベートゾーンを作成します。

Azure: プライベートエンドポイントの IP を指定する A レコードを含むプライベート DNS ゾーンを作成します。

DNS の詳しい設定手順については、クラウドプロバイダーの設定リファレンスを参照してください。

パート 2:エグレスプライベートエンドポイント

Decision 1 でユーザーが Egress private endpoints を選択しなかった場合は、このパートをスキップしてください。

エグレスプライベートエンドポイントを使用すると、CockroachDB Cloud がプライベートネットワーク経由で外部サービス(CDC の Confluent Kafka など)に接続できます。

2.1 エグレスプライベートエンドポイントを作成する

Cloud Console または Cloud API からエグレスエンドポイントを作成します。

Cloud Console: クラスターの Networking > Egress タブに移動し、Add egress endpoint をクリックして、外部サービスを指定します。

Cloud API:

# Create an egress endpoint to an external service
curl -X POST "https://cockroachlabs.cloud/api/v1/clusters/<cluster-id>/networking/egress-endpoints" \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"service_name": "<external-service-name>", "cloud_provider": "<AWS|GCP|AZURE>"}'

一般的なエグレス接続先:

  • Confluent Cloud Kafka(最も一般的な用途)
  • Amazon MSK
  • PrivateLink 上のセルフマネージド Kafka
  • PrivateLink をサポートするその他の SaaS サービス
2.2 エンドポイント接続を承認する

外部サービスの所有者が、保留中の接続リクエストを承認する必要があります。Confluent Cloud の場合:

  1. Confluent Cloud Console にログインします
  2. Networking > Private Link Access に移動します
  3. CockroachDB Cloud アカウントからの保留中の接続を承認します
2.3 エグレスエンドポイントのステータスを確認する

Cloud Console(Networking > Egress タブ)または Cloud API でエグレスエンドポイントのステータスを確認します。

curl "https://cockroachlabs.cloud/api/v1/clusters/<cluster-id>/networking/egress-endpoints" \
  -H "Authorization: Bearer <api-key>"

「保留中のまま進まない」場合のトラブルシューティング:

  • 外部サービスが接続を承認していることを確認します
  • 外部サービスが同じクラウドプロバイダーのリージョンにあることを確認します
  • 外部サービスの管理者に連絡し、保留中の接続を承認してもらいます
2.4 CDC Changefeed でエグレスエンドポイントを使用する
-- Create a changefeed using the egress endpoint
CREATE CHANGEFEED FOR TABLE orders
  INTO 'kafka://<private-kafka-endpoint>:9092?topic_prefix=crdb_'
  WITH updated, resolved;
パート 3:VPC ピアリング

Decision 1 でユーザーが VPC peering を選択しなかった場合は、このパートをスキップしてください。Decision 2 で選択したユーザーのクラウドプロバイダー(AWS または GCP)に該当するコマンドのみ実行してください。Azure は VPC ピアリングをサポートしていません。

VPC ピアリングは、ユーザーの VPC と CockroachDB Cloud の VPC の間に直接のネットワーク接続を作成します。

3.1 VPC ピアリングを開始する
# AWS
ccloud cluster networking peering create <cluster-id> \
  --peer-account-id <aws-account-id> \
  --peer-vpc-id <vpc-id> \
  --peer-vpc-region <region> \
  --peer-cidr <cidr-block>

# GCP
ccloud cluster networking peering create <cluster-id> \
  --peer-project-id <gcp-project-id> \
  --peer-network <network-name>
3.2 ピアリングリクエストを承認する

AWS: VPC Console でピアリングリクエストを承認します。

aws ec2 accept-vpc-peering-connection \
  --vpc-peering-connection-id <peering-id>

GCP: ピアネットワークの設定が正しければ、ピアリングは自動的に確立されます。

3.3 ルートテーブルを設定する

ピアリングの確立後、ルートテーブルを更新し、CockroachDB Cloud の CIDR へのトラフィックがピアリング接続経由でルーティングされるようにします。

# AWS — add a route to the CockroachDB Cloud CIDR
aws ec2 create-route \
  --route-table-id <route-table-id> \
  --destination-cidr-block <cockroachdb-cidr> \
  --vpc-peering-connection-id <peering-id>
3.4 VPC ピアリングを確認する
# Check peering status
ccloud cluster networking peering list <cluster-id> -o json

ユーザーの VPC から接続をテストします。

# From an instance in your peered VPC
cockroach sql --url "<connection-string>" -e "SELECT 1;"

安全上の考慮事項

影響の種類重大度推奨事項
プライベートエンドポイントの作成低既存の接続には影響せず、追加的な変更です
DNS 設定の変更中DNS の設定が誤っていると、既存の接続が切断される可能性があります
IP 許可リストとの相互作用中プライベートエンドポイントは IP 許可リストを迂回します。セキュリティへの影響を確認してください
VPC ピアリングの CIDR 重複高CIDR が重複するとピアリングできません。IP アドレス空間を慎重に計画してください
エグレスエンドポイントの作成低クラスターの運用には影響しません

次のことは避けてください:

  • トラフィックを移行する前に、アクティブな接続があるプライベートエンドポイントを削除する
  • ピアリングする VPC 間で CIDR 範囲を重複させる
  • クライアントの接続中に、プライベートエンドポイントの DNS レコードを削除する
  • プライベートエンドポイントが他のすべてのセキュリティ制御に取って代わると想定する(認証と認可は引き続き適用されます)

IP 許可リストよりもプライベートエンドポイントを優先する場合:

  • IP 許可リストのエントリー数の上限が、送信元 IP の数に対して不足している場合
  • パブリックインターネットへの公開を完全に排除する必要がある場合
  • コンプライアンス要件により、プライベートネットワーク経路が必須の場合

ロールバック

プライベートエンドポイントを削除する:

# Delete the endpoint connection in CockroachDB Cloud (via Cloud API)
curl -X DELETE "https://cockroachlabs.cloud/api/v1/clusters/<cluster-id>/networking/private-endpoint-connections/<endpoint-id>" \
  -H "Authorization: Bearer <api-key>"

# Or remove via Cloud Console: Networking > Private endpoint > Delete

# Then delete the endpoint in your cloud provider
# AWS
aws ec2 delete-vpc-endpoints --vpc-endpoint-ids <endpoint-id>

VPC ピアリングを削除する:

ccloud cluster networking peering delete <cluster-id> --peering-id <peering-id>

プライベート接続を削除した後、必要に応じてパブリックインターネットからの接続を許可するよう IP 許可リストが設定されていることを確認してください。

参考資料

スキルの参考資料:

関連スキル:

CockroachDB 公式ドキュメント:

コメント