Развертывание бета-версии gcloud не удается после успешной загрузки образа, не удается включить API - PullRequest
3 голосов
/ 29 июня 2019

gcloud beta run deploy используется, но теперь я получаю сообщение об ошибке:

$ gcloud beta run deploy $PROJECT --image $IMAGE_NAME --platform=managed --region us-central1 --project $PROJECT --add-cloudsql-instances $PROJECT-db
...
DONE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ID                                    CREATE_TIME                DURATION  SOURCE                                                                                 IMAGES                                    STATUS
abcdefj-higj-lmnopquer-uvw-xyz  2019-06-29T13:59:07+00:00  1M4S      gs://$PROJECT_cloudbuild/source/XYZ123.96-aae829d50a2e43a29dce44d1f93bafbc.tgz  gcr.io/$PROJECT/$PROJECT (+1 more)  SUCCESS
API [sql-component.googleapis.com] not enabled on project 
[$PROJECT]. Would you like to enable and retry (this will take a 
few minutes)? (y/N)?  y

Enabling service [sql-component.googleapis.com] on project [$PROJECT]...
ERROR: (gcloud.beta.run.deploy) INVALID_ARGUMENT: Invalid operation name operations/noop.DONE_OPERATION, refers to an already DONE operation

Я проверил API-интерфейсы с консоли, включены API-интерфейсы Cloud SQL Admin и API Cloud SQL. Я также попытался отключить их и снова запустить команду развертывания, но безрезультатно.

Дополнительная информация:

  1. Экземпляр сервера SQL является частью того же проекта. Изменение параметра --add-cloudsql-instances на имя соединения ($ PROJECT: $ REGION: $ SQLNAME) не оказывает никакого влияния

  2. Ручное включение сервера не имеет никакого эффекта: службы gcloud включают sql-component.googleapis.com --project XXX

  3. Удаление параметра --add-cloudsql-instances и сервер успешно развернуты.

  4. Это работает: gcloud sql connect $ PROJECTDB --user = root --quiet # ПРИМЕЧАНИЕ: ($ PROJECTDB) - это тот же параметр, что и --add-cloudsql-instances выше

Ответы [ 2 ]

6 голосов
/ 03 июля 2019

Кажется, что в gcloud v253.0.0 возникает ошибка при развертывании служб Cloud Run с экземплярами Cloud SQL: https://issuetracker.google.com/issues/136194274 (требуется вход в GMail)

После перехода на gcloud v251.0.0, я избавился от сообщения об ошибке «API [sql-component.googleapis.com] не включен» и смог снова развернуть службы Cloud Run с экземплярами Cloud SQL.

$ gcloud components update --version 251.0.0

ОБНОВЛЕНИЕ, 17 июля 2019 г. : проблема исправлена ​​в Cloud SDK 254.0.0.Если вы обновитесь до последней версии сейчас, развертывание служб Cloud Run с экземплярами Cloud SQL должно работать:

$ gcloud components update
3 голосов
/ 01 июля 2019

Для этой проблемы было две проблемы:

  1. Включение сервисов API. Я рекомендую включить службы до запуска Cloud Run, так как это может занять больше времени, чем Cloud Run. Сначала запустите эту команду: gcloud services enable sql-component.googleapis.com
  2. Неправильное имя подключения SQL Cloud. Указание правильного имени помогает.

Формат имени подключения SQL Cloud: $ PROJECT: $ REGION: $ GCP_SQL_NAME.

Пример: development-123456:us-central1:mysqldb

Эта команда вернет информацию об экземпляре Cloud SQL, включая имя соединения:

gcloud sql instances describe <instance_name>

Примечание. В Cloud Run есть несколько команд для указания подключаемого экземпляра Cloud SQL.

--add-cloudsql-instances - эта опция добавляет указанное имя соединения.

--set-cloudsql-instances - Этот параметр заменяет текущее имя подключения Cloud SQL.

Если вы не развертываете новую версию в Cloud Run, нет необходимости использовать опцию --add-cloudsql-instances, так как значение сохраняется. Я предпочитаю использовать опцию --set-cloudsql-instances, чтобы четко указывать экземпляры Cloud SQL.

Cloud Run поддерживает несколько экземпляров Cloud SQL. Вы можете добавить более одного имени подключения.

...