本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
聚焦 SIG CLI
在 Kubernetes 的世界里,大规模管理容器化应用需要强大而高效的工具。命令行接口(CLI)是任何开发者或运维人员工具包中不可或缺的一部分,它提供了一种方便、灵活的方式来与 Kubernetes 集群进行交互。
SIG CLI 在改善 Kubernetes CLI 体验方面扮演着至关重要的角色,专注于开发和增强 kubectl
这个主要的 Kubernetes 命令行工具。
在本次 SIG CLI 聚焦中,SIG ContribEx-Comms 团队成员 Arpit Agrawal 与 SIG CLI 技术负责人兼主席 Katrina Verey 以及 SIG CLI Batch 负责人 Maciej Szulik 进行了交谈,讨论了 SIG CLI、当前项目、挑战以及任何人如何参与其中。
因此,无论你是经验丰富的 Kubernetes 爱好者还是刚刚入门,了解 SIG CLI 的重要性无疑会提升你的 Kubernetes 之旅。
介绍
Arpit: 你能简单介绍一下自己、你的角色以及你是如何参与到 SIG CLI 中的吗?
Maciej: 我是 SIG-CLI 的技术负责人之一。自 2014 年以来,我一直在多个领域从事 Kubernetes 的工作,并于 2018 年被任命为负责人。
Katrina: 我从 2016 年开始以最终用户的身份使用 Kubernetes,但直到 2019 年底,我才发现 SIG CLI 与我在内部项目中的经验非常契合。我开始定期参加会议并提交了一些小的 PR,到 2021 年,我已经更深入地与 Kustomize 团队合作。同年晚些时候,我被任命为 Kustomize 和 KRM Functions 的子项目负责人,以及 SIG CLI 技术负责人和主席。
关于 SIG CLI
Arpit: 谢谢!你能和我们分享一下 SIG CLI 的宗旨和目标吗?
Maciej: 我们的章程有最详细的描述,但简单来说,我们处理所有帮助你管理 Kubernetes 清单和与 Kubernetes 集群交互的 CLI 工具。
Arpit: 我明白了。那么 SIG CLI 是如何致力于在云原生生态系统中推广 CLI 开发和使用的最佳实践的呢?
Maciej: 在 kubectl
内部,我们有几项正在进行的工作,试图鼓励新贡献者将现有命令与新标准对齐。我们发布了几个库,希望它们能让编写与 Kubernetes API 交互的 CLI 变得更容易,例如 cli-runtime 和 kyaml。
Katrina: 我们还为 CLI 工具维护一些互操作性规范,例如 KRM 函数规范(GA)和新的 ApplySet 规范(alpha)。
当前项目和挑战
Arpit: 浏览 README 文件可以发现,SIG CLI 有很多子项目,你能重点介绍一些重要的项目吗?
Maciej: 在我看来,最活跃且值得你投入时间的四个子项目是:
kubectl
: 权威的 Kubernetes CLI。- Kustomize: 一个用于 Kubernetes YAML 清单文件的无模板定制工具。
- KUI - 一个 Kubernetes 的 GUI 界面,可以看作是
kubectl
的加强版。 krew
:kubectl
的一个插件管理器。
Arpit: SIG CLI 是否有任何即将推出的计划或正在进行的开发工作?
Maciej: 在任何时候,我们总是有几个计划在进行中。最好是参加我们的一次会议来了解当前的计划。
Katrina: 对于主要功能,你可以查看我们开放的 KEP。例如,在 1.27 版本中,我们为 kubectl apply 中的新修剪模式和 kubectl create 插件引入了 alpha 版本。目前正在讨论的激动人心的想法包括 kubectl
delete 的交互模式(KEP 3895)和 kuberc
用户首选项文件(KEP 3104)。
Arpit: 你能否谈谈 SIG CLI 在改进云原生技术的 CLI 方面面临的挑战?未来将采取哪些措施来解决这些问题?
Katrina: 我们在做每个决定时面临的最大挑战是向后兼容性,确保我们不会破坏现有用户。经常发生的情况是,修复表面上的问题可能看起来很简单,但即使是修复一个 bug 也可能对某些用户构成重大变更,这意味着我们需要通过一个漫长的弃用过程来改变它,或者在某些情况下我们根本无法改变它。另一个挑战是需要在我们工具中公开的标志集中平衡定制化和可用性。例如,我们收到了很多关于新标志的提议,这些标志对某些用户肯定有用,但不足以证明在工具中增加它们的复杂性对每个人都是合理的。kuberc
提案可能有助于解决其中一些问题,它允许个人用户设置或覆盖我们无法更改的默认值,甚至通过别名创建自定义子命令。
Arpit: 随着 Kubernetes 每个新版本的发布,保持一致性和完整性肯定是一个挑战:SIG CLI 团队是如何应对的?
Maciej: 这与上一个问题中提到的话题非常相似:每一个新的变更,特别是对现有命令的变更,都会经过大量的审查,以确保我们不会破坏现有用户。在任何时候,我们都必须在功能和不破坏用户之间保持合理的平衡。
未来计划和贡献
Arpit: 你如何看待 CLI 工具在未来云原生生态系统中的角色演变?
Maciej: 我认为 CLI 工具过去是、将来也永远是生态系统中重要的一部分。无论是由管理员在没有 GUI 的远程机器上使用,还是在每个 CI/CD 管道中使用,它们都是不可替代的。
Arpit: Kubernetes 是一个社区驱动的项目。对于任何想要参与 SIG CLI 工作的人,你有什么建议吗?他们应该从哪里开始?有什么先决条件吗?
Maciej: 除了手上有一点空闲时间和愿意学习新东西之外,没有其他先决条件 :-)
Katrina: 具备 Go 的实践知识通常会有所帮助,但我们也有需要非代码贡献的领域,比如 Kustomize 文档整合项目。