Higress中问个关于灰度发布的问题,如果我有N条ingress,分别设置了权重,怎么确定谁跟谁是一组里的。我看也没个分组的概念,这个权重到时候是咋计算的?
我们给到的建议是:
在Higress中,灰度发布的权重配置是通过Ingress资源上的注解来实现的,特别是使用nginx.ingress.kubernetes.io/canary-weight和nginx.ingress.kubernetes.io/canary-weight-total这两个注解。尽管Higress的文档中没有直接提及分组的概念,但可以通过合理配置这些注解来实现不同Ingress规则之间的权重分配,从而达到灰度发布的目的。
分析问题原因
权重分配原理:灰度发布的关键在于如何根据配置的权重比例将流量分配到不同的服务版本上。每个Ingress规则可以看作一个独立的路由配置,其上的权重注解定义了该路由所指向的服务应接收的流量比例。
缺乏明确分组机制:由于Higress文档中没有直接描述如何对Ingress规则进行分组以实现一组服务内部的权重分配,这可能导致混淆,不清楚如何确保特定的Ingress规则集被视为同一灰度发布组。
解决方案步骤
尽管没有直接的“分组”概念,但你可以通过以下方式实现类似分组的效果,以控制哪些Ingress规则应被视作同一灰度发布策略的一部分:
共同前缀或标签:为属于同一灰度发布组的所有Ingress规则使用相同的路径前缀或者打上相同的标签。虽然这不是直接的分组,但可以帮助管理和识别哪些规则应当一起考虑其权重配置。
权重分配:对于每个属于同一灰度发布策略的Ingress规则,使用nginx.ingress.kubernetes.io/canary-weight注解设置其期望的权重值。确保所有相关规则的权重之和与你计划的总权重相匹配,这通常通过nginx.ingress.kubernetes.io/canary-weight-total来间接控制,或者直接计算各规则权重之和。
验证与调整:部署并验证配置,确保流量按照预期的比例分配到各个服务版本。可能需要根据实际流量监控数据进行微调,以达到理想的灰度效果。
解释
为什么使用相同前缀或标签:这种方式帮助逻辑上组织和区分不同灰度版本的路由规则,便于管理和理解复杂的灰度发布配置。
权重配置的重要性:通过精细控制每个服务版本的权重,可以灵活地调整新老版本间的流量比例,以满足不同的测试或发布需求。
验证的必要性:由于网络环境和实际流量模式的复杂性,理论上的配置可能与实际情况有所偏差,因此验证与调整是确保灰度发布成功的关键环节。
参考链接:
*专家经验:Higress的Ingress Annotation 配置说明此回答整理自钉群"Higress 社区交流1群(2群: 30735012403)"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。