Code snippents shouldn't include the command prompt (#12779)
This commit is contained in:
committed by
Kubernetes Prow Robot
parent
99e4d3bac6
commit
d3cca48e3f
@@ -96,25 +96,35 @@ sudo mv ./kubectl-foo /usr/local/bin
|
||||
You may now invoke your plugin as a `kubectl` command:
|
||||
|
||||
```
|
||||
$ kubectl foo
|
||||
kubectl foo
|
||||
```
|
||||
```
|
||||
I am a plugin named kubectl-foo
|
||||
```
|
||||
|
||||
All args and flags are passed as-is to the executable:
|
||||
|
||||
```
|
||||
$ kubectl foo version
|
||||
kubectl foo version
|
||||
```
|
||||
```
|
||||
1.0.0
|
||||
```
|
||||
|
||||
All environment variables are also passed as-is to the executable:
|
||||
|
||||
```bash
|
||||
$ export KUBECONFIG=~/.kube/config
|
||||
$ kubectl foo config
|
||||
export KUBECONFIG=~/.kube/config
|
||||
kubectl foo config
|
||||
```
|
||||
```
|
||||
/home/<user>/.kube/config
|
||||
```
|
||||
|
||||
$ KUBECONFIG=/etc/kube/config kubectl foo config
|
||||
```shell
|
||||
KUBECONFIG=/etc/kube/config kubectl foo config
|
||||
```
|
||||
```
|
||||
/etc/kube/config
|
||||
```
|
||||
|
||||
@@ -142,22 +152,27 @@ Example:
|
||||
|
||||
```bash
|
||||
# create a plugin
|
||||
$ echo '#!/bin/bash\n\necho "My first command-line argument was $1"' > kubectl-foo-bar-baz
|
||||
$ sudo chmod +x ./kubectl-foo-bar-baz
|
||||
echo '#!/bin/bash\n\necho "My first command-line argument was $1"' > kubectl-foo-bar-baz
|
||||
sudo chmod +x ./kubectl-foo-bar-baz
|
||||
|
||||
# "install" our plugin by placing it on our PATH
|
||||
$ sudo mv ./kubectl-foo-bar-baz /usr/local/bin
|
||||
sudo mv ./kubectl-foo-bar-baz /usr/local/bin
|
||||
|
||||
# ensure our plugin is recognized by kubectl
|
||||
$ kubectl plugin list
|
||||
kubectl plugin list
|
||||
```
|
||||
```
|
||||
The following kubectl-compatible plugins are available:
|
||||
|
||||
/usr/local/bin/kubectl-foo-bar-baz
|
||||
|
||||
```
|
||||
```
|
||||
# test that calling our plugin via a "kubectl" command works
|
||||
# even when additional arguments and flags are passed to our
|
||||
# plugin executable by the user.
|
||||
$ kubectl foo bar baz arg1 --meaningless-flag=true
|
||||
kubectl foo bar baz arg1 --meaningless-flag=true
|
||||
```
|
||||
```
|
||||
My first command-line argument was arg1
|
||||
```
|
||||
|
||||
@@ -172,14 +187,16 @@ Example:
|
||||
|
||||
```bash
|
||||
# create a plugin containing an underscore in its filename
|
||||
$ echo '#!/bin/bash\n\necho "I am a plugin with a dash in my name"' > ./kubectl-foo_bar
|
||||
$ sudo chmod +x ./kubectl-foo_bar
|
||||
echo '#!/bin/bash\n\necho "I am a plugin with a dash in my name"' > ./kubectl-foo_bar
|
||||
sudo chmod +x ./kubectl-foo_bar
|
||||
|
||||
# move the plugin into your PATH
|
||||
$ sudo mv ./kubectl-foo_bar /usr/local/bin
|
||||
sudo mv ./kubectl-foo_bar /usr/local/bin
|
||||
|
||||
# our plugin can now be invoked from `kubectl` like so:
|
||||
$ kubectl foo-bar
|
||||
kubectl foo-bar
|
||||
```
|
||||
```
|
||||
I am a plugin with a dash in my name
|
||||
```
|
||||
|
||||
@@ -188,11 +205,17 @@ The command from the above example, can be invoked using either a dash (`-`) or
|
||||
|
||||
```bash
|
||||
# our plugin can be invoked with a dash
|
||||
$ kubectl foo-bar
|
||||
kubectl foo-bar
|
||||
```
|
||||
```
|
||||
I am a plugin with a dash in my name
|
||||
```
|
||||
|
||||
```bash
|
||||
# it can also be invoked using an underscore
|
||||
$ kubectl foo_bar
|
||||
kubectl foo_bar
|
||||
```
|
||||
```
|
||||
I am a plugin with a dash in my name
|
||||
```
|
||||
|
||||
@@ -203,7 +226,9 @@ For example, given a PATH with the following value: `PATH=/usr/local/bin/plugins
|
||||
such that the output of the `kubectl plugin list` command is:
|
||||
|
||||
```bash
|
||||
$ PATH=/usr/local/bin/plugins:/usr/local/bin/moreplugins kubectl plugin list
|
||||
PATH=/usr/local/bin/plugins:/usr/local/bin/moreplugins kubectl plugin list
|
||||
```
|
||||
```bash
|
||||
The following kubectl-compatible plugins are available:
|
||||
|
||||
/usr/local/bin/plugins/kubectl-foo
|
||||
@@ -223,23 +248,39 @@ There is another kind of overshadowing that can occur with plugin filenames. Giv
|
||||
|
||||
```bash
|
||||
# for a given kubectl command, the plugin with the longest possible filename will always be preferred
|
||||
$ kubectl foo bar baz
|
||||
kubectl foo bar baz
|
||||
```
|
||||
```
|
||||
Plugin kubectl-foo-bar-baz is executed
|
||||
```
|
||||
|
||||
$ kubectl foo bar
|
||||
```bash
|
||||
kubectl foo bar
|
||||
```
|
||||
```
|
||||
Plugin kubectl-foo-bar is executed
|
||||
```
|
||||
|
||||
$ kubectl foo bar baz buz
|
||||
```bash
|
||||
kubectl foo bar baz buz
|
||||
```
|
||||
```
|
||||
Plugin kubectl-foo-bar-baz is executed, with "buz" as its first argument
|
||||
```
|
||||
|
||||
$ kubectl foo bar buz
|
||||
```bash
|
||||
kubectl foo bar buz
|
||||
```
|
||||
```
|
||||
Plugin kubectl-foo-bar is executed, with "buz" as its first argument
|
||||
```
|
||||
|
||||
This design choice ensures that plugin sub-commands can be implemented across multiple files, if needed, and that these sub-commands can be nested under a "parent" plugin command:
|
||||
|
||||
```bash
|
||||
$ ls ./plugin_command_tree
|
||||
ls ./plugin_command_tree
|
||||
```
|
||||
```
|
||||
kubectl-parent
|
||||
kubectl-parent-subcommand
|
||||
kubectl-parent-subcommand-subsubcommand
|
||||
@@ -250,7 +291,9 @@ kubectl-parent-subcommand-subsubcommand
|
||||
You can use the aforementioned `kubectl plugin list` command to ensure that your plugin is visible by `kubectl`, and verify that there are no warnings preventing it from being called as a `kubectl` command.
|
||||
|
||||
```bash
|
||||
$ kubectl plugin list
|
||||
kubectl plugin list
|
||||
```
|
||||
```
|
||||
The following kubectl-compatible plugins are available:
|
||||
|
||||
test/fixtures/pkg/kubectl/plugins/kubectl-foo
|
||||
|
||||
Reference in New Issue
Block a user