我正在尝试通过CI / CD作业将新修订部署到Cloud Run,并立即开始为新修订提供100%的流量。
此服务不面向客户,我们不需要金丝雀部署或流量分割。
目前,该图像在gitlab ci管道中构建,并已发布gcr。下一步是gcloud run deploy
命令。该命令运行正常,我得到了一个新修订。但是,0%的流量供此版本使用,我无法终生想出如何以编程方式进行管理。
gcloud run deploy --help
我可以从FAQ中找到唯一相关的信息:
但是,Cloud Run(当前)仅支持服务的最新健康版本中的服务流量。因此,它当前不支持基于修订的流量拆分和Canary部署。
但这似乎已经过时了,因为我目前可以通过用户界面在各个修订版之间手动分配流量。任何澄清将不胜感激。谢谢!
(您链接的FAQ回购已过时,因为我坚持认为我会对其进行更新,谢谢您的提醒。)
Cloud Run现在提供流量拆分。简而言之,这是它的工作方式:
gcloud run deploy
则将新修订版本设为100%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%。
请注意上述方法:(@Steren在下面的评论中提到了这一点。)如果您可能在很近的时间进行多个部署(想象两个
git push
触发一个部署),则LATEST可能会无意中指向错误的修订版。Steren的建议是:而是使用
gcloud run deploy [...] --revision-suffix=1234 --no-traffic
thengcloud run services update-traffic --to-revisions service-1234=10
。
您还可以为修订版本指定友好名称(“标签”),但是目前无法在它们之间分配流量。(#ahmetb-todo
)使用该功能,您将能够部署修订版,并给它一个类似的名称"candidate"
,然后在拆分流量时引用它,而不是使用复杂的自动生成的修订版名称。
另外,您可以通过使用gcloud run services replace
命令部署YAML清单来管理版本之间的流量。这涉及了解Knative API的工作方式。以下是一些可能相关的文档:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句