本文发布已超过一年。较早的文章可能包含过时内容。请检查页面中的信息自发布以来是否已不正确。

SIG CLI 焦点

在 Kubernetes 世界中,大规模管理容器化应用需要强大高效的工具。命令行界面 (CLI) 是任何开发者或运维人员工具包中不可或缺的一部分,它提供了便捷灵活的方式与 Kubernetes 集群交互。

SIG CLI 通过专注于开发和增强 Kubernetes 的主要命令行工具 kubectl,在改进 Kubernetes CLI 体验方面发挥着关键作用。

在本期 SIG CLI Spotlight 中,SIG ContribEx-Comms 团队成员 Arpit Agrawal 与 SIG CLI 技术负责人兼主席 Katrina Verey,以及 SIG CLI Batch Lead 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 manifest 并与 Kubernetes 集群交互的 CLI 工具。

Arpit:明白了。SIG CLI 如何在云原生生态系统中推广 CLI 开发和使用的最佳实践?

Maciej:在 kubectl 内部,我们正在进行多项工作,试图鼓励新贡献者将现有命令与新标准对齐。我们发布了几个库,希望能让编写与 Kubernetes API 交互的 CLI 更容易,例如 cli-runtime 和 kyaml

Katrina:我们还维护了一些 CLI 工具的互操作性规范,例如 KRM Functions Specification (GA) 和新的 ApplySet Specification (alpha)。

当前项目与挑战

Arpit:查看 README 文件后,很明显 SIG CLI 有许多子项目,您能否重点介绍一些重要的?

Maciej:在我看来,最活跃且值得您投入时间的四个子项目是:

  • kubectl:规范的 Kubernetes CLI。
  • Kustomize:用于 Kubernetes yaml manifest 文件的无模板定制工具。
  • 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 文档合并项目