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

聚焦 SIG CLI

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

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

在本期 SIG CLI Spotlight 中,SIG ContribEx-Comms 团队成员 Arpit Agrawal 与 SIG CLI 的技术主管兼主席 Katrina Verey 以及 SIG CLI 批量负责人 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: 我们的章程有最详细的描述,但简而言之,我们处理所有 CLI 工具,这些工具可以帮助您管理 Kubernetes 清单并与 Kubernetes 集群进行交互。

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 中新的修剪模式的 alpha 版本,以及 kubectl create 插件。目前正在讨论的激动人心的想法包括 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 文档整合项目