绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
用 kubectl 插件把你的想法带到这个世界
2020-03-02 16:09:46
让 kubectl 满足你需要的一种方法是在 kubectl 中构建新功能。 译自: kubernetes.io/blog/2020

作者/来源: Cornelius Weig

转自: mp.weixin.qq.com/s/gNwI

译者: Kubernetes

kubectl 是与 Kubernetes 交互的关键工具,它必须满足多个用户角色,每个用户角色都有自己的需求和观点。让 kubectl 满足你需要的一种方法是在 kubectl 中构建新功能。

在 kubectl 中构建命令的挑战

然而,说起来容易做起来难。作为 Kubernetes 的重要基石,对 kubectl 的任何有意义的更改都需要经过 Kubernetes 增强建议(Kubernetes Enhancement Proposal)(KEP)过程,预先讨论了预期的更改。

在实现方面,你会发现 kubectl 是一个巧妙而复杂的工程。要完成你想要完成的任务,可能需要很长时间才能适应代码库的流程和风格。接下来是审查过程,可能要经过几轮,直到满足 Kubernetes 维护者的所有要求 —— 毕竟,他们需要接管这个特性的所有权,并从合并的那一天开始维护它。

当一切顺利时,你终于可以高兴了。你的代码将随下一个 Kubernetes 发行版一起发布。如果你不走运的话,这可能意味着你需要再等三个月才能在 kubectl 发布你的想法。

这就是一切顺利的幸福之路。但是,你的新功能可能永远不会出现在 kubectl 中,这是有原因的。首先,kubectl 具有特定的外观和感觉,违反这种风格是维护者无法接受的。例如,用颜色生成输出的交互式命令与 kubectl 的其余部分不一致。另外,当涉及到只对极少数用户有用的工具或命令时,维护人员可能会简单地拒绝你的建议,因为 kubectl 需要解决常见的需求。

但这并不意味着你不能将你的想法发送给 kubectl 用户。

如果不需要更改 kubectl 来添加功能呢?

这就是 kubectl 插件的亮点所在。从 kubectl v1.12 开始,你可以简单地将可执行文件放到你的路径中,该路径遵循 kubectl-myplugin 的命名模式。然后你可以用 kubectl myplugin 来执行这个插件,它就像 kubectl 的一个普通子命令。

插件使你有机会尝试新的体验,如终端 UI、丰富多彩的输出、专门的功能或其他创新的想法。你可以去创造,因为你是你自己的插件的所有者。

此外,插件为你希望向 kubectl 建议的命令提供了安全的实验空间。通过预先发布插件,你可以更快地将你的功能推送给终用户,并快速收集反馈。例如,kubectl-debug 插件建议成为 kubectl 中的内置命令(KEP)。同时,插件作者可以使用插件机制发布功能并收集反馈。

如何开始开发插件

如果你已经有了一个插件的想法,你如何好地实现它?首先,你必须自问是否可以将其实现为现有 kubectl 功能的包装。如果是这样,那么将插件编写为 shell 脚本通常是好的方法,因为生成的插件很小,可以跨平台工作,并且由于没有编译而具有很高的可信度。

另一方面,如果插件逻辑很复杂,那么通用语言通常更好。这里的标准选择是 Go,因为你可以使用的 client-go 库与 Kubernetes API 进行交互。Kubernetes 维护的 sample-cli-plugin 演示了一些佳实践,可以作为新插件项目的模板。

当开发完成后,你只需要将你的插件发送给 Kubernetes 用户即可。为了获得佳的插件安装体验和可发现性,你应该考虑通过 krew 插件管理器这样做。要深入讨论关于 kubectl 插件的技术细节,请参阅 kubernetes.cn 的文档

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Linux技术精选专区
创建时间:2020-07-08 10:30:23
Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • dapan
    专家
戳我,来吐槽~