The plugin model will undergo a few changes in order to make it possible to
support a broader range of features along a broader range of platforms. Helm will also have the ability to install a pre-defined set of custom plugins via
The existing plugin model (based on
exec to local binaries) will continue to
The current YAML format for
plugin.yaml will be extended as follows:
name: "last" version: "0.1.0" usage: "get the last release name" description: "get the last release name" command: "$HELM_BIN --host $TILLER_HOST list --short --max 1 --date -r" # New part: platformCommand: - os: linux arch: i386 command: "$HELM_BIN list --short --max 1 --date -r" - os: windows arch: amd64 command: "$HELM_BIN list --short --max 1 --date -r"
platformCommand section defines OS/Architecture specific variations of a
The following rules will apply to processing commands:
- If platformCommand is present, it will be searched first.
- If both OS and Arch match the current platform, search will stop and the command will be executed
- If OS matches and there is no more specific match, the command will be executed
- If no OS/Arch match is found, the default
commandwill be executed
- If no
commandis present and no matches are found in
platformCommand, Helm will exit with an error.
- Many plugins are written as shell scripts assuming a POSIX environment and familiar linux-style userland. Helm, and Kubernetes as a whole, supports windows where these plugins don't work natively.
- Other plugins are written in a compiled language (e.g., Go) or a general scripting language (e.g., Python) that have system dependencies in order to work. These can have version complications as well (e.g., a system Python of 3 and a plugin Python need of 2.7).
Along with Helm supporting Lua for scripting chart extensions, it will support plugins in Lua. These plugins will only have a dependency on Helm to run and can be ported cross platform.
Lua plugins are executed separately from chart-based Lua scripts. The pattern
used for executing Lua plugins mirrors the pattern for writing command-line
main() function will be executed with access to STDIN, STDOUT,
STDERR, and all command-line parameters and options.
Lua Plugin Sandboxing
Like charts, each plugin will be executed in an isolated Lua sandbox. Unlike chart scripts, plugins will be granted access to all core libraries, and will not require security prompts to accept.
A single plugin can be installed via
helm plugin install.
A set of plugins can also be defined in a yaml file and installed during the
helm init process by using a flag called
file.yaml looks like this:
plugins: - name: helm-template url: https://github.com/technosophos/helm-template - name: helm-value-store url: https://github.com/skuid/helm-value-store - name: helm-diff url: https://github.com/databus23/helm-diff
name field primarily exists in the list of plugins to easily identify plugins in the file. It is not used for anything else and does not have a functional purpose.