• Kubernetes Submit Queue's avatar
    Merge pull request #37499 from fabianofranz/kubectl_plugins · d4ece0ab
    Kubernetes Submit Queue authored
    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.
    ```
    d4ece0ab
Name
Last commit
Last update
..
auth Loading commit data...
config Loading commit data...
rollout Loading commit data...
set Loading commit data...
templates Loading commit data...
testdata/edit Loading commit data...
testing Loading commit data...
util Loading commit data...
BUILD Loading commit data...
annotate.go Loading commit data...
annotate_test.go Loading commit data...
apiversions.go Loading commit data...
apply.go Loading commit data...
apply_set_last_applied.go Loading commit data...
apply_test.go Loading commit data...
apply_view_last_applied.go Loading commit data...
attach.go Loading commit data...
attach_test.go Loading commit data...
autoscale.go Loading commit data...
certificates.go Loading commit data...
clusterinfo.go Loading commit data...
clusterinfo_dump.go Loading commit data...
clusterinfo_dump_test.go Loading commit data...
cmd.go Loading commit data...
cmd_test.go Loading commit data...
completion.go Loading commit data...
convert.go Loading commit data...
cp.go Loading commit data...
cp_test.go Loading commit data...
create.go Loading commit data...
create_clusterrole.go Loading commit data...
create_clusterrole_test.go Loading commit data...
create_clusterrolebinding.go Loading commit data...
create_configmap.go Loading commit data...
create_configmap_test.go Loading commit data...
create_deployment.go Loading commit data...
create_deployment_test.go Loading commit data...
create_namespace.go Loading commit data...
create_namespace_test.go Loading commit data...
create_pdb.go Loading commit data...
create_quota.go Loading commit data...
create_quota_test.go Loading commit data...
create_role.go Loading commit data...
create_role_test.go Loading commit data...
create_rolebinding.go Loading commit data...
create_rolebinding_test.go Loading commit data...
create_secret.go Loading commit data...
create_secret_test.go Loading commit data...
create_service.go Loading commit data...
create_service_test.go Loading commit data...
create_serviceaccount.go Loading commit data...
create_serviceaccount_test.go Loading commit data...
create_test.go Loading commit data...
delete.go Loading commit data...
delete_test.go Loading commit data...
describe.go Loading commit data...
describe_test.go Loading commit data...
drain.go Loading commit data...
drain_test.go Loading commit data...
edit.go Loading commit data...
edit_test.go Loading commit data...
exec.go Loading commit data...
exec_test.go Loading commit data...
explain.go Loading commit data...
expose.go Loading commit data...
expose_test.go Loading commit data...
get.go Loading commit data...
get_test.go Loading commit data...
help.go Loading commit data...
label.go Loading commit data...
label_test.go Loading commit data...
logs.go Loading commit data...
logs_test.go Loading commit data...
options.go Loading commit data...
patch.go Loading commit data...
patch_test.go Loading commit data...
plugin.go Loading commit data...
plugin_test.go Loading commit data...
portforward.go Loading commit data...
portforward_test.go Loading commit data...
proxy.go Loading commit data...
replace.go Loading commit data...
replace_test.go Loading commit data...
rollingupdate.go Loading commit data...
rollingupdate_test.go Loading commit data...
run.go Loading commit data...
run_test.go Loading commit data...
scale.go Loading commit data...
stop.go Loading commit data...
taint.go Loading commit data...
taint_test.go Loading commit data...
top.go Loading commit data...
top_node.go Loading commit data...
top_node_test.go Loading commit data...
top_pod.go Loading commit data...
top_pod_test.go Loading commit data...
top_test.go Loading commit data...
version.go Loading commit data...