|
| 1 | +--- |
| 2 | +layout: blog |
| 3 | +title: "Spotlight on SIG CLI" |
| 4 | +date: 2023-07-20 |
| 5 | +slug: sig-cli-spotlight-2023 |
| 6 | +author: "Arpit Agrawal" |
| 7 | +--- |
| 8 | + |
| 9 | +**Author**: Arpit Agrawal |
| 10 | + |
| 11 | +In the world of Kubernetes, managing containerized applications at |
| 12 | +scale requires powerful and efficient tools. The command-line |
| 13 | +interface (CLI) is an integral part of any developer or operator’s |
| 14 | +toolkit, offering a convenient and flexible way to interact with a |
| 15 | +Kubernetes cluster. |
| 16 | + |
| 17 | +SIG CLI plays a crucial role in improving the [Kubernetes |
| 18 | +CLI](https://github.com/kubernetes/community/tree/master/sig-cli) |
| 19 | +experience by focusing on the development and enhancement of |
| 20 | +`kubectl`, the primary command-line tool for Kubernetes. |
| 21 | + |
| 22 | +In this SIG CLI Spotlight, Arpit Agrawal, SIG ContribEx-Comms team |
| 23 | +member, talked with [Katrina Verey](https://github.com/KnVerey), Tech |
| 24 | +Lead & Chair of SIG CLI,and [Maciej |
| 25 | +Szulik](https://github.com/soltysh), SIG CLI Batch Lead, about SIG |
| 26 | +CLI, current projects, challenges and how anyone can get involved. |
| 27 | + |
| 28 | +So, whether you are a seasoned Kubernetes enthusiast or just getting |
| 29 | +started, understanding the significance of SIG CLI will undoubtedly |
| 30 | +enhance your Kubernetes journey. |
| 31 | + |
| 32 | +## Introductions |
| 33 | + |
| 34 | +**Arpit**: Could you tell us a bit about yourself, your role, and how |
| 35 | +you got involved in SIG CLI? |
| 36 | + |
| 37 | +**Maciej**: I’m one of the technical leads for SIG-CLI. I was working |
| 38 | +on Kubernetes in multiple areas since 2014, and in 2018 I got |
| 39 | +appointed a lead. |
| 40 | + |
| 41 | +**Katrina**: I’ve been working with Kubernetes as an end-user since |
| 42 | +2016, but it was only in late 2019 that I discovered how well SIG CLI |
| 43 | +aligned with my experience from internal projects. I started regularly |
| 44 | +attending meetings and made a few small PRs, and by 2021 I was working |
| 45 | +more deeply with the |
| 46 | +[Kustomize](https://github.com/kubernetes-sigs/kustomize) team |
| 47 | +specifically. Later that year, I was appointed to my current roles as |
| 48 | +subproject owner for Kustomize and KRM Functions, and as SIG CLI Tech |
| 49 | +Lead and Chair. |
| 50 | + |
| 51 | +## About SIG CLI |
| 52 | + |
| 53 | +**Arpit**: Thank you! Could you share with us the purpose and goals of SIG CLI? |
| 54 | + |
| 55 | +**Maciej**: Our |
| 56 | +[charter](https://github.com/kubernetes/community/tree/master/sig-cli/) |
| 57 | +has the most detailed description, but in few words, we handle all CLI |
| 58 | +tooling that helps you manage your Kubernetes manifests and interact |
| 59 | +with your Kubernetes clusters. |
| 60 | + |
| 61 | +**Arpit**: I see. And how does SIG CLI work to promote best-practices |
| 62 | +for CLI development and usage in the cloud native ecosystem? |
| 63 | + |
| 64 | +**Maciej**: Within `kubectl`, we have several on-going efforts that |
| 65 | +try to encourage new contributors to align existing commands to new |
| 66 | +standards. We publish several libraries which hopefully make it easier |
| 67 | +to write CLIs that interact with Kubernetes APIs, such as cli-runtime |
| 68 | +and |
| 69 | +[kyaml](https://github.com/kubernetes-sigs/kustomize/tree/master/kyaml). |
| 70 | + |
| 71 | +**Katrina**: We also maintain some interoperability specifications for |
| 72 | +CLI tooling, such as the [KRM Functions |
| 73 | +Specification](https://github.com/kubernetes-sigs/kustomize/blob/master/cmd/config/docs/api-conventions/functions-spec.md) |
| 74 | +(GA) and the new ApplySet |
| 75 | +Specification |
| 76 | +(alpha). |
| 77 | + |
| 78 | +## Current projects and challenges |
| 79 | + |
| 80 | +**Arpit**: Going through the README file, it’s clear SIG CLI has a |
| 81 | +number of subprojects, could you highlight some important ones? |
| 82 | + |
| 83 | +**Maciej**: The four most active subprojects that are, in my opinion, |
| 84 | +worthy of your time investment would be: |
| 85 | + |
| 86 | +* [`kubectl`](https://github.com/kubernetes/kubectl): the canonical Kubernetes CLI. |
| 87 | +* [Kustomize](https://github.com/kubernetes-sigs/kustomize): a |
| 88 | + template-free customization tool for Kubernetes yaml manifest files. |
| 89 | +* [KUI](https://kui.tools) - a GUI interface to Kubernetes, think |
| 90 | + `kubectl` on steroids. |
| 91 | +* [`krew`](https://github.com/kubernetes-sigs/krew): a plugin manager for `kubectl`. |
| 92 | + |
| 93 | +**Arpit**: Are there any upcoming initiatives or developments that SIG |
| 94 | +CLI is working on? |
| 95 | + |
| 96 | +**Maciej**: There are always several initiatives we’re working on at |
| 97 | +any given point in time. It’s best to join [one of our |
| 98 | +calls](https://github.com/kubernetes/community/tree/master/sig-cli/#meetings) |
| 99 | +to learn about the current ones. |
| 100 | + |
| 101 | +**Katrina**: For major features, you can check out [our open |
| 102 | +KEPs](https://www.kubernetes.dev/resources/keps/). For instance, in |
| 103 | +1.27 we introduced alphas for [a new pruning mode in kubectl |
| 104 | +apply](https://kubernetes.io/blog/2023/05/09/introducing-kubectl-applyset-pruning/), |
| 105 | +and for kubectl create plugins. Exciting ideas that are currently |
| 106 | +under discussion include an interactive mode for `kubectl` delete |
| 107 | +([KEP |
| 108 | +3895](https://kubernetes.io/blog/2023/05/09/introducing-kubectl-applyset-pruning)) |
| 109 | +and the `kuberc` user preferences file ([KEP |
| 110 | +3104](https://kubernetes.io/blog/2023/05/09/introducing-kubectl-applyset-pruning)). |
| 111 | + |
| 112 | +**Arpit**: Could you discuss any challenges that SIG CLI faces in its |
| 113 | +efforts to improve CLIs for cloud-native technologies? What are the |
| 114 | +future efforts to solve them? |
| 115 | + |
| 116 | +**Katrina**: The biggest challenge we’re facing with every decision is |
| 117 | +backwards compatibility and ensuring we don’t break existing users. It |
| 118 | +frequently happens that fixing what's on the surface may seem |
| 119 | +straightforward, but even fixing a bug could constitute a breaking |
| 120 | +change for some users, which means we need to go through an extended |
| 121 | +deprecation process to change it, or in some cases we can’t change it |
| 122 | +at all. Another challenge is the need to balance customization with |
| 123 | +usability in the flag sets we expose on our tools. For example, we get |
| 124 | +many proposals for new flags that would certainly be useful to some |
| 125 | +users, but not a large enough subset to justify the increased |
| 126 | +complexity having them in the tool entails for everyone. The `kuberc` |
| 127 | +proposal may help with some of these problems by giving individual |
| 128 | +users the ability to set or override default values we can’t change, |
| 129 | +and even create custom subcommands via aliases |
| 130 | + |
| 131 | +**Arpit**: With every new version release of Kubernetes, maintaining |
| 132 | +consistency and integrity is surely challenging: how does the SIG CLI |
| 133 | +team tackle it? |
| 134 | + |
| 135 | +**Maciej**: This is mostly similar to the topic mentioned in the |
| 136 | +previous question: every new change, especially to existing commands |
| 137 | +goes through a lot of scrutiny to ensure we don’t break existing |
| 138 | +users. At any point in time we have to keep a reasonable balance |
| 139 | +between features and not breaking users. |
| 140 | + |
| 141 | +## Future plans and contribution |
| 142 | + |
| 143 | +**Arpit**: How do you see the role of CLI tools in the cloud-native |
| 144 | +ecosystem evolving in the future? |
| 145 | + |
| 146 | +**Maciej**: I think that CLI tools were and will always be an |
| 147 | +important piece of the ecosystem. Whether used by administrators on |
| 148 | +remote machines that don’t have GUI or in every CI/CD pipeline, they |
| 149 | +are irreplaceable. |
| 150 | + |
| 151 | +**Arpit**: Kubernetes is a community-driven project. Any |
| 152 | +recommendation for anyone looking into getting involved in SIG CLI |
| 153 | +work? Where should they start? Are there any prerequisites? |
| 154 | + |
| 155 | +**Maciej**: There are no prerequisites other than a little bit of free |
| 156 | +time on your hands and willingness to learn something new :-) |
| 157 | + |
| 158 | +**Katrina**: A working knowledge of [Go](https://go.dev/) often helps, |
| 159 | +but we also have areas in need of non-code contributions, such as the |
| 160 | +[Kustomize docs consolidation |
| 161 | +project](https://github.com/kubernetes-sigs/kustomize/issues/4338). |
0 commit comments