5

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,Cloud SQL Admin 和 Cloud SQL API 都已启用。我也尝试禁用它们并再次运行部署命令,但无济于事。

更多信息:

  1. SQL Server 实例是同一项目的一部分。将 --add-cloudsql-instances 参数更改为连接名称 ($PROJECT:$REGION:$SQLNAME) 无效

  2. 手动启用服务器没有效果:gcloud services enable sql-component.googleapis.com --project XXX

  3. 删除 --add-cloudsql-instances 参数,服务器部署成功。

  4. 这有效: gcloud sql connect $PROJECTDB --user=root --quiet # 注意:($PROJECTDB) 与上面的 --add-cloudsql-instances 参数相同

4

2 回答 2

7

使用 Cloud SQL 实例部署部署 Cloud Run 服务时,gcloud v253.0.0 中似乎存在错误(需要登录 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
于 2019-07-03T12:52:58.737 回答
5

对于这个问题,有两个问题:

  1. 启用 API 服务。我建议在运行 Cloud Run deploy 之前启用服务,因为这可能需要比 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 实例。您可以添加多个连接名称。

于 2019-07-01T17:49:44.397 回答