43|Feature Gates(上):Kubernetes中的Feature Gates设计
孔令飞

你好,我是孔令飞。
在 Go 项目开发中,我们通常使用配置文件或者命令行选项来控制是否开启某个功能,这个功能可能是新加入的实验性质的功能,也可能是已经稳定的功能。总之,我们需要一种机制,来让应用进程内感知到是否开启此功能,或者此功能的配置是什么。
为此,Kubernetes 提供了一种灵活、强大的重要机制——Feature Gates(功能门控)。本节课,我就来详细介绍下 Feature Gates(简称 FG)。
什么是 Feature Gates?
功能门控是 Kubernetes 中用于控制特性启用与否的一种机制。它允许开发者在集群中逐步引入新特性,便于测试和验证,同时也为用户提供了选择是否启用某些功能的灵活性。功能门控通常用于实验性特性或尚未完全稳定的功能。通过功能门控,开发者可以在不影响整个系统的情况下,逐步推出新特性。
几乎所有的软件都有漏洞,而且新软件往往比成熟的软件有更多、更严重的漏洞。Feature Gates 旨在快速停止一个新功能,并减轻漏洞带来的损害。新功能的作者和审阅者,应该花点时间思考下,Feature Gates 是否达到了这一目标。
这里需要注意,Feature Gates 并不会作为长期控制开启 / 禁用某个功能的手段。通常情况下,Feature Gates 所管控的功能在 GA 或者被弃用后,都会从 Feature Gates 中被废弃或移除。如果新功能经过验证,决定加入 Kubernetes 长期存在,那么功能的开启 / 禁用方式应该从 Feature Gates 中移除,并用其他更加适配的方式来管控,例如:配置文件、命令行选项等。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. Feature Gates是Kubernetes中用于控制特性启用与否的机制,允许开发者逐步引入新特性,便于测试和验证,同时也为用户提供了选择是否启用某些功能的灵活性。 2. Feature Gates的生命周期包括Alpha、Beta、GA和Deprecated四个阶段,功能会按顺序经历这些阶段,并在不同阶段设置不同的参数。 3. 在代码中使用功能门控时,需要遵循一些模式,具体讨论不同功能类别下应该如何编程。 4. Feature Gates并不会作为长期控制开启/禁用某个功能的手段,通常在功能稳定后会从Feature Gates中被移除,并用其他更加适配的方式来管控。 5. Kubernetes中的Feature Gate功能一般会按顺序经历Alpha、Beta、GA三个发布阶段,如果某个Feature不再被支持,可以将它们标记为Deprecated。 6. 新增API字段时,需要验证没有默认值的新字段,以及在代码中如何使用功能门控。 7. Kubernetes的Feature Gates设计方式和使用方式是建议和规范,可以避免很多不必要的Bug。 8. Feature Gates分为不可变功能门控和可变功能门控两类,分别提供了判断功能是否开启、列出所有注册的功能列表、深拷贝自身等方法,以及添加功能、添加Feature Gates命令行Flag等写接口。 9. Feature Gates的设计方式和使用方式是建议和规范,可以避免很多不必要的Bug。 10. 在实际开发中,MutableFeatureGate通常在应用初始化的阶段使用;FeatureGate通常在应用运行阶段使用,用来判断一个功能是否开启。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kubernetes 源码剖析与实战》,新⼈⾸单¥68
《Kubernetes 源码剖析与实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论