如何为 Google 云 运行 服务获取或生成部署 URL

How to get or generate deploy URL for Google Cloud Run services

如何在 CI 环境中以编程方式获取已部署服务的 URL? URL 确实在成功部署后得到记录,但是如果我想以编程方式提取和使用 URL,作为 post 部署需求的一部分,例如post正在 URL 进行验收测试。

有几种方法可以获得所需的信息:

  1. 您可以使用 Cloud 运行 的 API 中的 namespaces.services.get 方法和 curl 命令。请注意,它将需要身份验证 Header 和 OAuth 范围。
curl -i https://[REGION]-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/[PROJECT_NAME]/services/[CLOUD_RUN_SERVICE_NAME] -H "Authorization: Bearer [YOUR-BEARER-TOKEN]" | tail -n +13 | jq -r ".status.url"
  1. 您可以在构建步骤之一中使用 gcloud run services list 命令来获得所需的值。例如,如果您的服务是完全托管的,您可以使用以下命令获取上次更新的 Cloud 运行 服务。:
gcloud run services list --platform managed | awk 'NR==2 {print }'
  1. 使用 Goolge API 客户端库(例如 Cloud Run Google API Client for Python)构建脚本。

只需使用标志:--format='value(status.url)'gcloud run services describe

这是完整的命令:

$ gcloud run services describe SERVICE --platform managed --region REGION --format 'value(status.url)'

扩展 :

使用这些 Bash 命令,您可以获得 url 并将其保存在 Secrets Manager 中:

首先创建空 Secret:

gcloud secrets create "CLOUDRUN_URL" --project $PROJECT_ID --replication-policy=automatic

然后:

gcloud run services describe $APP_NAME --platform managed --region $CLOUD_REGION --format 'value(status.url)' --project $PROJECT_ID | gcloud secrets versions add "CLOUDRUN_URL" --data-file=- --project $PROJECT_ID

或添加了“/some/address”

的版本
CLOUDRUN_URL=$(gcloud run services describe $APP_NAME --platform managed --region $CLOUD_REGION --format 'value(status.url)' --project $PROJECT_ID)   # capture first string.
echo "$CLOUDRUN_URL/some/address/" | gcloud secrets versions add "CLOUDRUN_URL" --data-file=- --project $PROJECT_ID

然后您可以根据需要从 Secrets Manager 加载它:

export CLOUDRUN_URL=$(gcloud secrets versions access latest --secret="CLOUDRUN_URL" --project $PROJECT_ID )