如何以编程方式更新Google Cloud Run上的流量切换?

雅各布·文德格纳

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

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

目前,该图像在gitlab ci管道中构建,并已发布gcr。下一步是gcloud run deploy命令。该命令运行正常,我得到了一个新修订。但是,0%的流量供此版本使用,我无法终生想出如何以编程方式进行管理。

我可以从FAQ中找到唯一相关的信息:

但是,Cloud Run(当​​前)仅支持服务的最新健康版本中的服务流量。因此,它当前不支持基于修订的流量拆分和Canary部署。

但这似乎已经过时了,因为我目前可以通过用户界面在各个修订版之间手动分配流量。任何澄清将不胜感激。谢谢!

AhmetB-Google

(您链接的FAQ回购已过时,因为我坚持认为我会对其进行更新,谢谢您的提醒。)

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

  • 如果没有流量分配(最新= 100%),gcloud run deploy则将新修订版本设为100%
  • 如果存在拆分,gcloud run deploy则将新修订版本设为0%。

为防止新修订获得流量,您可以显式使用--no-traffic

如果要以编程方式拆分流量,建议您这样做:

  1. 在新部署之前,将最新版本(假定稳定/良好)升级到100%:

    gcloud run services update-traffic --to-revisions=LATEST=100 [...]
    

    (但是,如果您的最新修订版本不好,并且您不愿意发送100%的流量,那么您实际上需要找到该修订版本的名称并使用它代替LATEST

  2. 部署新修订版:

    gcloud run deploy [...] --no-traffic
    
  3. 发送少量流量到新版本:

    gcloud run services  update-traffic --to-revisions=LATEST=5 [...]
    

    运行此命令时,新修订版将获得5%,其余版本将获得95%。

请注意上述方法:(@Steren在下面的评论中提到了这一点。)如果您可能在很近的时间进行多个部署(想象两个git push触发一个部署),则LATEST可能会无意中指向错误的修订版。Steren的建议是:

而是使用gcloud run deploy [...] --revision-suffix=1234 --no-trafficthen gcloud run services update-traffic --to-revisions service-1234=10

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

另外,您可以通过使用gcloud run services replace命令部署YAML清单来管理版本之间的流量这涉及了解Knative API的工作方式。以下是一些可能相关的文档:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

离子:如何以编程方式更新离子切换

来自分类Dev

离子:如何以编程方式更新离子切换

来自分类Dev

如何以编程方式切换屏幕?

来自分类Dev

如何以编程方式在手机的键盘之间切换

来自分类Dev

如何以编程方式在Android应用之间切换[已解决]

来自分类Dev

如何以编程方式在声音和静音模式之间切换?

来自分类Dev

如何以编程方式在停靠面板中切换 2 个列表视图?[WPF]

来自分类Dev

在Android 4.4.2上以编程方式切换移动数据

来自分类Dev

在具有多行的GtkTreeView中,如何以编程方式在特定行上更新GtkCellRendererCombo的模型?

来自分类Dev

如何以编程方式更新Azure Web App上的网络访问限制

来自分类Dev

启动E4应用程序后如何以编程方式切换透视图?

来自分类Dev

如何在Google Glass上切换Google帐户?

来自分类Dev

如何在Xamarin中以编程方式切换NavigationViewControllers?

来自分类Dev

以编程方式切换UIAlert Controller

来自分类Dev

以编程方式快速切换视图

来自分类Dev

以编程方式快速切换视图

来自分类Dev

如何以编程方式删除Cloud Storage Bucket中文件夹中的所有内容

来自分类Dev

如何以编程方式在操作栏上设置文本

来自分类Dev

如何以编程方式检查是否在HHVM上运行?

来自分类Dev

如何以编程方式在Genymotion上压缩zip

来自分类Dev

如何以编程方式在InkCanvas / StrokeCollection上擦除EryByPoint?

来自分类Dev

如何以编程方式触发元素上的“悬停意图”

来自分类Dev

如何以编程方式在vine上上传视频

来自分类Dev

如何以编程方式在UITableView上添加UIView

来自分类Dev

如何以编程方式在Facebook帖子上发表评论

来自分类Dev

如何以编程方式在Watch上编写消息?

来自分类Dev

如何以编程方式在Android上加载动画XML文件?

来自分类Dev

如何以编程方式在Cookie上设置安全标志

来自分类Dev

如何以编程方式将重点放在输入上

Related 相关文章

  1. 1

    离子:如何以编程方式更新离子切换

  2. 2

    离子:如何以编程方式更新离子切换

  3. 3

    如何以编程方式切换屏幕?

  4. 4

    如何以编程方式在手机的键盘之间切换

  5. 5

    如何以编程方式在Android应用之间切换[已解决]

  6. 6

    如何以编程方式在声音和静音模式之间切换?

  7. 7

    如何以编程方式在停靠面板中切换 2 个列表视图?[WPF]

  8. 8

    在Android 4.4.2上以编程方式切换移动数据

  9. 9

    在具有多行的GtkTreeView中,如何以编程方式在特定行上更新GtkCellRendererCombo的模型?

  10. 10

    如何以编程方式更新Azure Web App上的网络访问限制

  11. 11

    启动E4应用程序后如何以编程方式切换透视图?

  12. 12

    如何在Google Glass上切换Google帐户?

  13. 13

    如何在Xamarin中以编程方式切换NavigationViewControllers?

  14. 14

    以编程方式切换UIAlert Controller

  15. 15

    以编程方式快速切换视图

  16. 16

    以编程方式快速切换视图

  17. 17

    如何以编程方式删除Cloud Storage Bucket中文件夹中的所有内容

  18. 18

    如何以编程方式在操作栏上设置文本

  19. 19

    如何以编程方式检查是否在HHVM上运行?

  20. 20

    如何以编程方式在Genymotion上压缩zip

  21. 21

    如何以编程方式在InkCanvas / StrokeCollection上擦除EryByPoint?

  22. 22

    如何以编程方式触发元素上的“悬停意图”

  23. 23

    如何以编程方式在vine上上传视频

  24. 24

    如何以编程方式在UITableView上添加UIView

  25. 25

    如何以编程方式在Facebook帖子上发表评论

  26. 26

    如何以编程方式在Watch上编写消息?

  27. 27

    如何以编程方式在Android上加载动画XML文件?

  28. 28

    如何以编程方式在Cookie上设置安全标志

  29. 29

    如何以编程方式将重点放在输入上

热门标签

归档