gpt4 book ai didi

google-cloud-run - 如何以编程方式更新谷歌云运行上的流量切换?

转载 作者:行者123 更新时间:2023-12-04 00:19:26 25 4
gpt4 key购买 nike

我正在尝试通过 CI/CD 作业将新修订版部署到 Cloud Run,并立即开始为新修订版提供 100% 的流量。

此服务不是面向客户的,我们不需要金丝雀部署或流量拆分。

目前该图像是在 gitlab ci 管道中构建并发布的 gcr。下一步是gcloud run deploy命令。该命令工作正常,我得到了一个新的修订版。然而,0% 的流量用于此修订版,我一生都无法弄清楚如何以编程方式管理它。

  • 我已阅读此处的常见问题解答:https://github.com/ahmetb/cloud-run-faq#serving-traffic
  • 我已阅读gcloud run deploy --help的内容

  • 我能找到的唯一相关信息来自常见问题解答:

    However, Cloud Run (currently) only supports serving traffic from the last healthy revision of your service. Therefore, it currently does not support revision based traffic splitting and canary deployments.



    但它似乎已经过时了,因为我目前可以通过 UI 手动拆分修订版之间的流量。任何澄清将不胜感激。谢谢!

    最佳答案

    (您链接的 FAQ 存储库已过时,因为我坚持认为我会更新它,感谢您的提醒。)

    Cloud Run 现在提供流量拆分。简而言之,它是如何工作的:

  • 如果没有流量拆分(最新 = 100%),gcloud run deploy将使新修订 100%
  • 如果有 split ,gcloud run deploy将使新修订为 0%。

  • 为了防止新版本获得流量,您可以明确使用 --no-traffic .

    如果您想以编程方式拆分流量,我建议您这样做:
  • 在新部署之前将最新版本(假设它稳定/良好)提升到 100%:
    gcloud run services update-traffic --to-revisions=LATEST=100 [...]

    (但是,如果您的最新版本不好,并且您不愿意发送 100% 的流量,那么您实际上需要找到版本名称并使用它来代替 LATEST )
  • 部署新版本:
    gcloud run deploy [...] --no-traffic
  • 发送少量流量到新版本:
    gcloud run services  update-traffic --to-revisions=LATEST=5 [...]

    运行此程序时,新修订版将获得 5% 和其余的,而先前修订版将获得 95%。

  • Caveat with the approach above: (This is mentioned by @Steren in the comment below.) If you possibly have multiple deployments happening at close time proximity (imagine two git pushes triggering a deployment), the LATEST can unintentionally point to the wrong revision. Steren’s recommendation is:

    instead, to use gcloud run deploy [...] --revision-suffix=1234 --no-traffic and then gcloud run services update-traffic --to-revisions service-1234=10.



    您还可以为修订提供友好名称(“标签”),但目前无法在它们之间拆分流量。 ( #ahmetb-todo ) 使用该功能,您将能够部署修订版并为其命名,如 "candidate"然后在拆分流量时引用它而不是复杂的自动生成的修订名称。

    或者,您可以通过使用 gcloud run services replace 部署 YAML list 来管理修订之间的流量。命令。这涉及了解 Knative API 的工作原理。以下是一些可能相关的文档:
  • https://cloud.google.com/run/docs/deploying#yaml (单击 YAML 选项卡)
  • https://cloud.google.com/run/docs/rollouts-rollbacks-traffic-migration
  • https://knative.tips/traffic/splitting-traffic/
  • https://ahmet.im/blog/cloud-run-is-a-knative/
  • 关于google-cloud-run - 如何以编程方式更新谷歌云运行上的流量切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61689421/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com