【问题标题】:Google Endpoints YAML file update: Is there a simpler methodGoogle Endpoints YAML 文件更新:有没有更简单的方法
【发布时间】:2020-01-21 10:05:45
【问题描述】:

当使用 Google Endpoints 和 Cloud Run 提供容器服务时,需要创建一个 YAML 文件(交错 2.0 格式)来指定所有配置的路径。对于 EVERY CHANGE,以下是我所做的(基于文档 (https://cloud.google.com/endpoints/docs/openapi/get-started-cloud-functions)

第 1 步:部署 Endpoints 配置

gcloud endpoints services deploy openapi-functions.yaml \
    --project ESP_PROJECT_ID

这给了我以下输出:

Service Configuration [CONFIG_ID] uploaded for service [CLOUD_RUN_HOSTNAME]

那么,

第 2 步:将脚本下载到本地机器

chmod +x gcloud_build_image
./gcloud_build_image -s CLOUD_RUN_HOSTNAME \
    -c CONFIG_ID -p ESP_PROJECT_ID

那么,

第 3 步:重新部署 Cloud Run 服务

gcloud run deploy CLOUD_RUN_SERVICE_NAME \
  --image="gcr.io/ESP_PROJECT_ID/endpoints-runtime-serverless:CLOUD_RUN_HOSTNAME-CONFIG_ID" \
  --allow-unauthenticated \
  --platform managed \
  --project=ESP_PROJECT_ID

这是每个 API 路径更改的过程吗?或者有没有更简单的直接更新 YAML 文件并将其上传到某处的方法?

谢谢。

【问题讨论】:

  • 每次更改 CLoud Endpoint YAML 时是否执行第 2 步和第 3 步?
  • 是的。有什么办法可以避免吗?当我不这样做时,它会在 Cloud Run 服务中使用旧的 config-id
  • 当您的应用有新配置时,重新部署 Cloud Run 应用实际上是一种最佳做法。这使您可以将代码与配置分开并干净地执行回滚之类的操作。

标签: google-cloud-run google-cloud-endpoints-v2


【解决方案1】:

根据文档,是的,这将是每个 API 路径更改的过程。但是,这可能会在未来发生变化,因为此功能目前处于测试阶段,如您共享的文档中所述。

您可能需要查看here,以便向 GCP 创建功能请求,以便他们将来改进此功能。

与此同时,我可以建议为这个过程创建一个脚本,因为它始终是相同的步骤,并且在运行这些命令的 bash 中执行一些操作将帮助您自动化任务。

希望你觉得这很有用。

【讨论】:

  • 感谢@rsalinas 的回复。我想确认我没有错过更简单的东西
【解决方案2】:

当您使用the documentation 中所述的默认 Cloud Endpoint 映像时,会自动设置参数 --rollout_strategy=managed。

您最多需要等待 1 分钟才能使用新配置。就个人而言,这是我在部署中观察到的。试试看吧!

【讨论】:

  • 哦!是吗?让我试一试。一旦我确认,我会将其标记为答案。谢谢@guilaume blaquiere
  • 我在 Cloud Endpoint 上写了 an article,并且在测试期间我无需重新部署 Cloud Run。
  • 它对我不起作用。正如建议的那样,我更新了 open-api-functions.yaml 文件并使用步骤 1 将其部署在上面。端点配置将最新的配置显示为当前配置。但是,当我检查 Google Cloud Run 服务并检查 YAML 文件时,它指向旧配置。这是 YAML 文件中的部分:“规范 > 模板 > 注释”,其中包含条目:client.knative.dev/user-image: gcr.io/PROJECT-ID/endpoints-runtime-serverless:xxxx-yyyy--uc.a.run.app-CONFIG-ID。这个 config-id 是较早的。
  • 并且在运行第2步和第3步之后,上面的client.knative.dev/user-image值变成了最新的config-Id
  • 为什么需要构建自己的 esp 镜像?为什么不使用标准的?你在里面加什么?无论如何,我同意你的看法,当你更新端点配置时,不会重新部署 Cloud Run。但 Cloud Run 在这里只是一个代理。它读取 Cloud Endpoint 配置(您在第 1 步中部署并动态部署到 Cloud Run 中,无需新修订)并将请求路由到定义的端点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
相关资源
最近更新 更多