Kubernetes 源码剖析与实战
孔令飞
前腾讯云专家工程师
1590 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已更新 45 讲/共 55 讲
Kubernetes 源码剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

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
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)