Skip to content

Commit bed6973

Browse files
authored
KEP-3104: Add kubectl kuberc command section (#5572)
* KEP-3104: Add kubectl kuberc command section * Apply requested changes in review
1 parent cd2bcd6 commit bed6973

File tree

2 files changed

+90
-1
lines changed

2 files changed

+90
-1
lines changed

keps/sig-cli/3104-introduce-kuberc/README.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,18 @@ tags, and then generate with `hack/update-toc.sh`.
9292
- [Open Questions](#open-questions)
9393
- [Risks and Mitigations](#risks-and-mitigations)
9494
- [Design Details](#design-details)
95+
- [Kubectl Kuberc Management Command (kubectl kuberc)](#kubectl-kuberc-management-command-kubectl-kuberc)
96+
- [kubectl kuberc view](#kubectl-kuberc-view)
97+
- [kubectl kuberc set --section defaults](#kubectl-kuberc-set---section-defaults)
98+
- [command](#command)
99+
- [option](#option)
100+
- [overwrite](#overwrite)
101+
- [kubectl kuberc set --section aliases](#kubectl-kuberc-set---section-aliases)
102+
- [name](#name)
103+
- [command](#command-1)
104+
- [option](#option-1)
105+
- [prependarg](#prependarg)
106+
- [appendarg](#appendarg)
95107
- [Test Plan](#test-plan)
96108
- [Prerequisite testing updates](#prerequisite-testing-updates)
97109
- [Unit tests](#unit-tests)
@@ -358,6 +370,83 @@ defaults:
358370
359371
```
360372

373+
### Kubectl Kuberc Management Command (kubectl kuberc)
374+
375+
In alpha (and initially in beta), users are expected to generate their kuberc files manually. However, this operation is error-prone and cumbersome.
376+
The lack of kubectl command which operates on kuberc file makes the adoption of this feature significantly difficult.
377+
Therefore, this section proposes new kubectl command, namely `kubectl kuberc`.
378+
379+
`kubectl kuberc` is the main command serving as an entry point to the subcommands similar to how `kubectl create` is designed.
380+
Invocation of `kubectl kuberc` prints the subcommands.
381+
Currently, there are two subcommands (but this can be extended in the future, when more functionality is added to kuberc).
382+
All the subcommands accept `kuberc` flag to explicitly specify the kuberc file to be updated. File priority order is the same with
383+
kuberc execution:
384+
385+
* If `--kuberc` flag is specified, operate on this file
386+
* If `KUBERC` environment variable is specified, operate on this file
387+
* If none, operate on default kuberc (i.e. `$HOME/.kube/kuberc`).
388+
389+
This command and subcommands are marked as alpha initially. They can be executed under `kubectl alpha`, until they are promoted to beta.
390+
391+
### kubectl kuberc view
392+
393+
`kubectl kuberc view` subcommand prints the defined kuberc file content in the given format via `--output` flag (default is yaml).
394+
395+
### kubectl kuberc set --section defaults
396+
397+
`kubectl kuberc set --section defaults` subcommand creates/updates the default values of commands. It has the following flags;
398+
399+
#### command
400+
401+
`kubectl kuberc set --section defaults` command validates the presence of the command given via flag `--command`.
402+
This flag can contain subcommands as well. Examples might be `--command=apply`, `--command="create role"`.
403+
404+
#### option
405+
406+
`--option` flag accepts list of options. We may or may not validate the presence of the flag name in the given command.
407+
But it is up to user to set the correct default value in correct type. Therefore, default field of the options is arbitrary.
408+
Examples might be `--option="server-side=true"`, `--option="namespace=test"`.
409+
410+
Although kuberc supports short versions of flags (e.g. `-n test`),
411+
this flag forces users to enter options in standardized format `--option=$flag_name=$flag_value`.
412+
This gives us the opportunity to standardize kuberc files.
413+
414+
#### overwrite
415+
416+
By default, this command errors out, if it finds a section of same command and same flag that is executed. `--overwrite` flag
417+
is used to update this section.
418+
419+
### kubectl kuberc set --section aliases
420+
421+
`kubectl kuberc set --section aliases` defines alias definitions of a command and a set of flag options. It has these flags;
422+
423+
#### name
424+
425+
This required field is to define the name of the alias. This is inherently arbitrary field based on the preferences of the user.
426+
427+
#### command
428+
429+
`kubectl kuberc set --section aliases` command validates the presence of the command given via flag `--command`.
430+
This flag can contain subcommands as well. Examples might be `--command=apply`, `--command="create role"`.
431+
432+
#### option
433+
434+
`--option` flag accepts list of options. We may or may not validate the presence of the flag name in the given command.
435+
But it is up to user setting the correct default value in correct type. Therefore, default field of the options is arbitrary.
436+
Examples might be `--option="server-side=true"`, `--option="namespace=test"`.
437+
438+
Although kuberc supports short versions of flags (e.g. `-n test`),
439+
this flag forces users to enter options in opinionated format `--option=$flag_name=$flag_value`.
440+
This gives us the opportunity to standardize kuberc files.
441+
442+
#### prependarg
443+
444+
`--prependarg` is an arbitrary list of strings that accepts anything in a string array format.
445+
446+
#### appendarg
447+
448+
`--appendarg` is an arbitrary list of strings that accepts anything in string array format.
449+
361450
### Test Plan
362451

363452
<!--

keps/sig-cli/3104-introduce-kuberc/kep.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ stage: beta
2626
# The most recent milestone for which work toward delivery of this KEP has been
2727
# done. This can be the current (upcoming) milestone, if it is being actively
2828
# worked on.
29-
latest-milestone: "v1.34"
29+
latest-milestone: "v1.35"
3030

3131
# The milestone at which this feature was, or is targeted to be, at each stage.
3232
milestone:

0 commit comments

Comments
 (0)