k3s/pkg
Kubernetes Submit Queue d4ece0abc3 Merge pull request #37499 from fabianofranz/kubectl_plugins
Automatic merge from submit-queue

kubectl binary plugins

**What this PR does / why we need it**:

Introduces the ability to extend `kubectl` by adding third-party plugins that will be exposed through `kubectl`.

Plugins are executable commands written in any language. To be included as a plugin, a binary or script file has to

1. be located under one of the supported plugin path locations:
1.1 `~/.kubectl/plugins` dir
1.2. one or more directory set in the `KUBECTL_PLUGINS_PATH` env var
1.3. the `kubectl/plugins` dir under one or more directory set in the `XDG_DATA_DIRS` env var, which defaults to `/usr/local/share:/usr/share`
2. in any of the plugin path above, have a subfolder with the plugin file(s)
3. in the subfolder, contain at least a `plugin.yaml` file that describes the plugin

Example:

```
$ cat ~/.kube/plugins/myplugin/plugin.yaml
name: "myplugin"
shortDesc: "My plugin's short description"
command: "echo Hello plugins!"

$ kubectl myplugin
Hello plugins!
```

~~In case the plugin declares `tunnel: true`, the plugin engine will pass the `KUBECTL_PLUGIN_API_HOST` env var when calling the plugin binary. Plugins can then access the Kube REST API in "http://$KUBECTL_PLUGIN_API_HOST/api" using the same context currently in use by `kubectl`.~~

Test plugins are provided in `pkg/kubectl/plugins/examples`. Just copy (or symlink) the files to `~/.kube/plugins` to test.

**Which issue this PR fixes**:

Related to the discussions in the proposal document: https://github.com/kubernetes/kubernetes/pull/30086 and https://github.com/kubernetes/community/pull/122.

**Release note**:
```release-note
Introduces the ability to extend kubectl by adding third-party plugins. Developer preview, please refer to the documentation for instructions about how to use it.
```
2017-04-28 12:23:59 -07:00
..
api Merge pull request #44888 from caesarxuchao/clean-deepcopy-init 2017-04-27 18:48:28 -07:00
apimachinery/tests autogenerated 2017-04-14 10:40:57 -07:00
apis Merge pull request #44888 from caesarxuchao/clean-deepcopy-init 2017-04-27 18:48:28 -07:00
auth autogenerated 2017-04-14 10:40:57 -07:00
bootstrap/api autogenerated 2017-04-14 10:40:57 -07:00
capabilities
client bazel 2017-04-27 09:41:53 -07:00
cloudprovider Merge pull request #44868 from vmware/dsclustersupport 2017-04-28 11:38:59 -07:00
controller taint-controller-tests: double 'a bit of time' to avoid flakes 2017-04-28 17:42:35 +02:00
conversion
credentialprovider autogenerated 2017-04-14 10:40:57 -07:00
features autogenerated 2017-04-14 10:40:57 -07:00
fieldpath autogenerated 2017-04-14 10:40:57 -07:00
fields
generated Add go_genrule for zz_generated.openapi.go. 2017-04-25 17:51:36 -07:00
hyperkube
kubeapiserver autogenerated 2017-04-14 10:40:57 -07:00
kubectl Merge pull request #37499 from fabianofranz/kubectl_plugins 2017-04-28 12:23:59 -07:00
kubelet Merge pull request #44939 from sjenning/adjust-logging 2017-04-27 19:36:23 -07:00
kubemark autogenerated 2017-04-14 10:40:57 -07:00
labels
master autogenerated 2017-04-14 10:40:57 -07:00
metrics autogenerated 2017-04-14 10:40:57 -07:00
printers Merge pull request #44600 from xingzhou/kube-44599 2017-04-25 08:59:07 -07:00
probe fix various bad tests 2017-04-25 11:23:33 -07:00
proxy bazel 2017-04-27 09:41:53 -07:00
quota autogenerated 2017-04-14 10:40:57 -07:00
registry Add PATCH to supported list of proxy subresource verbs 2017-04-27 10:38:10 -04:00
routes autogenerated 2017-04-14 10:40:57 -07:00
runtime
security Merge pull request #41571 from php-coder/fix_comments 2017-04-21 08:34:07 -07:00
securitycontext
serviceaccount autogenerated 2017-04-14 10:40:57 -07:00
ssh autogenerated 2017-04-14 10:40:57 -07:00
types
util fix various bad tests 2017-04-25 11:23:33 -07:00
version autogenerated 2017-04-14 10:40:57 -07:00
volume Merge pull request #45042 from wongma7/attaching-log 2017-04-27 23:04:05 -07:00
watch autogenerated 2017-04-14 10:40:57 -07:00
BUILD
OWNERS