Подключение GCP к SQL для службы Cloud Run Anthos nodejs

Попытка подключить экземпляр SQL к Cloud Run Service с использованием полностью управляемого облачного запуска работает нормально, но когда я пытаюсь подключить службу через Anthos (что требуется, поскольку нам нужно использовать веб-сокеты в службах), я просто получаю ENOENT (без входа), обновляю IAM для GKE с правильными разрешениями, воссозданный кластер со всеми включенными службами /

Вот команда развертывания, которую я выполняю

    gcloud run deploy \
    --project ${GOOGLE_PROJECT_ID} \
    --platform gke \
    --cluster dev \
    --cluster-location ${GOOGLE_COMPUTE_ZONE} \
    --image gcr.io/${GOOGLE_PROJECT_ID}/${PROJECT_NAME} \
    --set-cloudsql-instances "${GOOGLE_PROJECT_ID}:europe-west1:dev" \
    --set-env-vars "$(tr '\n' ',' < "${ENV_KEY_PRODUCTION}")" \
    --set-env-vars "SERVICE=${1}" \
    --set-env-vars "DB_HOST=/cloudsql/${GOOGLE_PROJECT_ID}:europe-west1:dev" \
    "${1}"

Если я использую частный IP-адрес из SQL, удаляю --set-cloudsql-instances и устанавливаю DB_HOST как частный IP-адрес, он работает.

Но добавление --set-cloudsql-instances должно сделать сервис в кластере GKE сопутствующим и позволить ему подключаться к SQL?


person Labithiotis    schedule 18.09.2020    source источник


Ответы (1)


Документация непонятна ... параметр '- set-cloudsql-instance' доступен только для версии Cloud Run Managed. Первое предложение раздела важно. И ограничение в документации не ясно

Применимо только при подключении к Cloud Run (полностью управляемый). Укажите --platform = удалось использовать:

- [no-] allow-unauthenticated Следует ли разрешить неаутентифицированный доступ к службе. Это может занять некоторое время. Используйте --allow-unauthenticated для включения и --no-allow-unauthenticated для отключения.

--clear-vpc-connector Удалить коннектор VPC для этой службы.

--revision-suffix = REVISION_SUFFIX Укажите суффикс имени ревизии. Имена ревизий всегда автоматически начинаются с имени службы. Например, указание [--revision-suffix = v1] для службы с именем helloworld приведет к созданию версии с именем helloworld-v1.

--vpc-connector = VPC_CONNECTOR Установить коннектор VPC для этой службы. Эти флаги изменяют экземпляры Cloud SQL, к которым подключается эта Служба. Вы можете указать имя экземпляра Cloud SQL, если он находится в том же проекте и в том же регионе, что и ваша служба Cloud Run; в противном случае укажите :: для экземпляра. Может быть указано не более одного из них:

--add-cloudsql-instance = [CLOUDSQL-INSTANCES,…] Добавить заданные значения к текущим экземплярам Cloud SQL.

--clear-cloudsql-instance Очистить текущие экземпляры Cloud SQL.

--remove-cloudsql-instance = [CLOUDSQL-INSTANCES,…] Удалить указанные значения из текущих экземпляров Cloud SQL.

--set-cloudsql-instance = [CLOUDSQL-INSTANCES,…] Полностью заменить текущие экземпляры Cloud SQL заданными значениями.

person guillaume blaquiere    schedule 18.09.2020
comment
Просто добавив к ответу, вы можете взглянуть на поддерживаемые методы для подключения от GKE к Cloud SQL. cloud.google.com/sql/docs/mysql/ - person Antonio Ramirez; 21.09.2020
comment
@AntonioRamirez, модуль K8S - это не совсем то же самое, что развертывание Cloud Run! Вы можете запускать несколько контейнеров с Knative, только один, и, следовательно, вы не можете этого добиться! - person guillaume blaquiere; 21.09.2020