#google-app-engine #google-cloud-platform #google-cloud-sql #serverless #google-vpc
#google-app-engine #google-облачная платформа #google-cloud-sql #бессерверный #google-vpc
Вопрос:
Я делаю PoC для подключения Google App Engine
к CloudSQL instance
запуску Private IP
на SharedVPC
. Образец приложения для тестирования из
https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/cloud-sql/mysql/sqlalchemy/README.md
Мой Serverless VPC Connector Range
заключается в следующем
$ 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
заключается в следующем
$ 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
пример выглядит следующим образом
$ 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
заключается в следующем
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
Развертывание прошло нормально, ошибок в журнале не обнаружено
gcloud app deploy app.standard.yaml
Однако, когда я пытаюсь подключиться к конечной точке приложения, страница недоступна с надписью «Сервер не найден»
Я дал VPC Access
и Network Compute User
роль ниже App Engine Default Service account
на VPC Host Project
<hostproject>-26a2@appspot.gserviceaccount.com
Обновления
Также добавлено ниже в app.yaml, но не повезло
env_variables:
GAE_USE_SOCKETS_HTTPLIB : 'anyvalue'
https://cloud.google.com/appengine/docs/standard/python/sockets#making_httplib_use_sockets
Та же настройка для CloudRun
и CloudSQL
работала для меня, но с трудом GAE
. Есть предложения по решению этой проблемы?
Ответ №1:
Ваш файл app.yaml неправильно отформатирован. vpc_access_connector:
Необходимость быть на корневом уровне. Здесь оно принимается как значение переменной среды.
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
Комментарии:
1. Спасибо. Пробовал, но безуспешно
2. Зачем вам
CLOUD_SQL_CONNECTION_NAME
env var? Можете ли вы поделиться своим кодом, в котором вы устанавливаете параметры подключения?3. Ниже приведен исходный код приложения github.com/GoogleCloudPlatform/python-docs-samples/blob/master /…
4. И работает ли развертывание в облаке в том же проекте и с использованием того же соединителя? Хммм. Странно… Можете ли вы объяснить, почему вы установили пиринг? Это между какими сетями?
5. Не уверен, что следил за вашим последним комментарием. В любом случае, можете ли вы объяснить, где вы развернули свой рабочий облачный запуск? С тем же соединителем VPC и в том же проекте, что и App Engine?