咨询个OpenKruise问题,kruise-rollout 场景下手工把 mutation webhook 里的 failure policy 换成 Ignore 会被覆盖掉么?
在kruise-rollout场景下,如果您手动将mutation webhook里的failure policy改为Ignore,这通常意味着忽略webhook的失败,并且允许变更继续进行。
OpenKruise 中的 Kruise Rollout 是一个渐进式交付框架,支持金丝雀发布、蓝绿发布、A/B Testing 等多种发布方式,并且能够基于Prometheus Metrics指标自动化分批与暂停。Kruise Rollout 使用webhook来拦截和处理发布请求,通过修改workload strategy来实现workload控制器的工作暂停和动态调整参数等操作。
在Kubernetes中,Mutation Webhook Configuration通常用于Admission Control,它允许在对象创建或更新时对对象进行修改。Failure policy决定了当webhook未能正常响应时该如何处理请求,通常有以下几种选项:
因此,如果您将failure policy设置为Ignore,即使webhook失败了,也不会阻止发布过程。这可能有助于避免因webhook问题导致的发布中断,但同时也可能会忽略一些重要的错误或警告。在实际使用中,应根据具体情况和需求来决定是否使用Ignore策略,并确保有足够的监控和日志记录机制来跟踪发布过程中的任何问题。
在Kruise Rollout场景下,如果您手工将mutation webhook中的failure policy设置为Ignore,当Kruise控制器重新创建或更新Webhook配置时,该设置可能会被Kruise控制器的默认策略覆盖,具体情况需要查阅Kruise Rollout的具体实现和配置更新逻辑。
在 OpenKruise 中,如果您手动将 mutation webhook 中的 failure policy 更改为 Ignore,它可能会被覆盖。这是因为 OpenKruise 的控制器会定期检查资源的状态,并根据配置的规则执行相应的操作。如果您手动更改了 failure policy,但 OpenKruise 的控制器检测到状态不符合预期,它可能会尝试将其还原为默认值或先前的配置。
为了避免这种情况,您可以使用 Kubernetes 的 annotation 来自定义 failure policy。例如,您可以在您的资源上添加一个注解,指定要使用的 failure policy。然后,您可以编写一个自定义的 admission webhook,根据这个注解来处理请求。这样,即使 OpenKruise 的控制器尝试更改 failure policy,它也会被您的自定义 webhook 忽略。
以下是一个示例,展示了如何在 Deployment 资源上添加一个名为 kruise.io/failure-policy
的注解:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
annotations:
kruise.io/failure-policy: Ignore
spec:
...
然后,您需要编写一个自定义的 admission webhook,根据这个注解来处理请求。具体实现方式可能因您的环境和需求而异,您可以参考 Kubernetes 文档以了解如何编写和部署 admission webhook。
会,这个建议不要调整,新版本只会对包含 rollout cr 对应的 deployment 才会 生效。。。默认,其他的 deployment 都不会过的。所以,没必要 ignore ,此回答整理自钉群“OpenKruise 社区交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。