私が従った手順:
gcloud compute networks create stg-vpc \ --subnet-mode custom
gcloud beta compute addresses create google-managed-services-stg-vpc \ --global \ --purpose=VPC_PEERING \ --description="peering range for psql" \ --addresses=10.20.0.0 \ --prefix-length=16 \ --network=stg-vpc
Cloud SQL Webコンソールで、新しいPostgresインスタンスを作成します。 ConnectivityオプションでPrivate IPを有効にして、stg-vpc
にIP範囲google-managed-services-stg-vpc
を設定します。
これにより、IP 10.20.0.3
のCloud SQL Postgresインスタンスが作成されます。
gcloud compute networks subnets create stg-vpc-us-central1 \ --network stg-vpc \ --region us-central1 \ --range 10.10.0.0/16
gcloud -q container clusters create cluster-1 \ --zone us-central1-a \ --num-nodes 3 \ --network stg-vpc \ --subnetwork stg-vpc-us-central1
Postgres JDBCドライバーを使用してCloud SQL DBインスタンスのプライベートIPに接続するJavaアプリケーションをデプロイします。エラーJava.net.SocketTimeoutException: connect timed out
が発生します。
私は追加のステップも試しました:
gcloud compute firewall-rules create psql-access --network stg-vpc --allow tcp:5432 --source-ranges 10.20.0.0/16
。誰かが私が間違っていること、そしてなぜVPCピアリングが機能しないのかを提案できますか?.
@ patrick-wの提案に従って VPC-native cluster を作成することで、Cloud SQL Postgresに接続できました。
VPCサブネットワークの作成が変更され、2つのセカンダリ範囲が含まれるようになりました。
gcloud compute networks subnets create stg-vpc-us-central1 \ --network stg-vpc \ --region us-central1 \ --range 10.10.0.0/16 \ --secondary-range stg-vpc-us-central1-pods=10.11.0.0/16,stg-vpc-us-central1-services=10.12.0.0/16
そして、私のクラスター作成コマンドがip-alias
、および使用するセカンダリ範囲の詳細を追加しました。
gcloud -q container clusters create cluster-1 \ --zone us-central1-a \ --num-nodes 3 \ --enable-ip-alias \ --network stg-vpc \ --subnetwork stg-vpc-us-central1 \ --cluster-secondary-range-name stg-vpc-us-central1-pods \ --services-secondary-range-name stg-vpc-us-central1-services