成功上传映像后,gcloud beta运行部署失败,无法启用API

时间:2019-06-29 14:31:10

标签: google-cloud-sql google-cloud-run

gcloud beta运行部署曾经可以正常工作,但是现在出现错误:

$ 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,同时启用了Cloud SQL Admin和Cloud SQL API。我也尝试禁用它们,然后再次运行deploy命令,但无济于事。

更多信息:

  1. SQL Server实例是同一项目的一部分。将--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 个答案:

答案 0 :(得分:6)

在使用Cloud SQL实例部署部署Cloud Run服务时,gcloud v253.0.0中似乎存在一个错误:https://issuetracker.google.com/issues/136194274(需要GMail登录)

一旦我降级到gcloud v251.0.0,我摆脱了“未启用API [sql-component.googleapis.com]”错误消息,并且能够再次使用Cloud SQL实例部署Cloud Run服务。

$ gcloud components update --version 251.0.0

更新,2019年7月17日:此问题已在Cloud SDK 254.0.0中修复。如果您现在升级到最新版本,则可以使用Cloud SQL实例部署Cloud Run服务:

$ gcloud components update

答案 1 :(得分:3)

此问题有两个问题:

  1. 启用API服务。我建议在运行Cloud Run部署之前启用服务,因为这可能需要比Cloud Run允许的时间更长的时间。首先运行以下命令:gcloud services enable sql-component.googleapis.com
  2. Cloud SQL连接名称不正确。指定正确的名称会有所帮助。

Cloud SQL连接名称的格式为:$ 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实例。您可以添加多个连接名称。