简体   繁体   中英

Connectivity issues from App Engine to CloudSQL using Private IP and Serverless VPC Access

I am doing a PoC to connect from Google App Engine to CloudSQL instance running with Private IP on a SharedVPC . The sample application for testing is from
https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/cloud-sql/mysql/sqlalchemy/README.md

My Serverless VPC Connector Range is as follows

 $ gcloud compute networks vpc-access connectors list --region=us-central1
  CONNECTOR_ID       REGION       NETWORK          IP_CIDR_RANGE    MIN_THROUGHPUT  MAX_THROUGHPUT  STATE
  testserverlessvpc  us-central1  kube-shared-vpc  192.168.60.0/28  200             300             READY

Private IP Range is as follows

     $ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
  NAME                 ADDRESS/RANGE     TYPE      PURPOSE      NETWORK           REGION  SUBNET  STATUS
 cloudsqltestrangenew  10.0.100.0/20    INTERNAL  VPC_PEERING  kube-shared-vpc                   RESERVED

MySQL instance is as follows

$ gcloud sql instances list
 NAME       DATABASE_VERSION  LOCATION       TIER         PRIMARY_ADDRESS  PRIVATE_ADDRESS  STATUS
 mysql2           MYSQL_5_7         us-central1-b  db-f1-micro  -            10.0.100.5       RUNNABLE

app.standard.yaml is as follows

 runtime: python37

 service: appcentralpri
 env_variables:
     CLOUD_SQL_CONNECTION_NAME: projectname:us-central1:mysql2
     DB_USER: guestdb
     DB_PASS: password
     DB_NAME: testdb
     DB_HOST: 10.0.100.5:3306

     vpc_access_connector:
     name: projects/hostproject-26a2/locations/us-central1/connectors/testserverlessvpc

Deployment went through fine and no errors in log encountered

    gcloud app deploy app.standard.yaml

However when I try to connect to the application endpoint, the page is not accessible with "Server Not Found"

I have given VPC Access and Network Compute User role to the below App Engine Default Service account on VPC Host Project

      <hostproject>-26a2@appspot.gserviceaccount.com 

UPDATES

Also added below in app.yaml but no luck

 env_variables:
   GAE_USE_SOCKETS_HTTPLIB : 'anyvalue'

https://cloud.google.com/appengine/docs/standard/python/sockets#making_httplib_use_sockets

Same setup for CloudRun and CloudSQL worked for me but struggling with GAE . Any suggestions to resolve this issue?

Your app.yaml file is wrong formatted. The vpc_access_connector: need to be at the root level. Here it's taken as an environment variable value.

runtime: python37

 service: appcentralpri
 env_variables:
     CLOUD_SQL_CONNECTION_NAME: projectname:us-central1:mysql2
     DB_USER: guestdb
     DB_PASS: password
     DB_NAME: testdb
     DB_HOST: 10.0.100.5:3306

 vpc_access_connector:
     name: projects/hostproject-26a2/locations/us-central1/connectors/testserverlessvpc

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM