• 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
..
src/k8s.io Loading commit data...
README.md Loading commit data...
copy.sh Loading commit data...
godeps-json-updater.go Loading commit data...
prime-apimachinery.sh Loading commit data...