This change introduces the concept of Rudders - pluggable modules that
Tiller communicates with via grpc, which allow to decouple orchestration
logic from Tiller into separate service.
This commit consists of simple Rudder implementation which does exactly
the same thing as built in Tiller orchestrator - it creates all k8s
objects from provided manifest without orchestrating them.
--experimental-release flag is introduced to enable this behaviour.
This change allows to use the service and tiller outside of the cluster.
Following commits will add Rudder to helm deployment.
This flattens the getter package tree, adds tests, and changes a little
bit of the terminology to follow Go idioms. This also makes much of the
getter API private to begin with. This will give us more flexibility in
the future.
Updated the 'helm completion' command to take in the shell
as a parameter. Currently acceptable options are 'bash' and
'zsh'. Also fixed the completions to work with zsh in a manner
similar to what kubectl does.
Also updated the docs to reflect this change.
Closes#2201
This upgrades a warning to an error in cases where `requirements.yaml`
contains a requirement, but it's missing in charts/
This impacts install, upgrade, and package.
Closes#2209
It is now possible to create plugins with chart download capabilities for custom, non-http protocols.
Furthermore it is possible to reuse helm packages to implement alternative clients with these custom downloader functions.
Fixes issues/2272
stable-repository-url is currently hard-coded for helm init,
so if a user wants to make a different intranet repository as stable repo,
only option left is to first do an init,
followed by repo delete and repo add.
A lot of community members are looking at `helm serve` as a production webserver to host their
charts. There are much better solutions out there like s3, wabs or gcs for cloud storage and
nginx, haproxy or apache for DIY dedicated web servers. Steering users in the right direction
will help users make the right decision when it comes to serving their charts in production.
Fixes https://github.com/kubernetes/helm/issues/2240
`helm install` command was calling chartutil.Load twice,
once from `run` method and
another time from `client.InstallRelease` which is called from `run` method in `cmd/helm/install.go`
Add plugin management subcommands for installing and removing plugins
to `$HELM_HOST/plugins`.
Install accepts a vcs url or a local directory.
```
$ helm plugin install http://github.com/adamreese/helm-env
Installed plugin: env
$ helm plugin list
NAME VERSION DESCRIPTION
env 0.1.0 Print out the helm environment.
$ helm plugin remove env
Removed plugin: env
```
closes#1977
This exposes the skip-refresh flag to helm init to make it possible to
initialize Helm without fetching the index.yaml of the stable repo.
This mirrors the behavior of 'helm dep up's skip-refresh flag.
Closes#2127
In order to allow the stream emitted by "helm init --debug" to be fed
back into "kubectl create/apply -f", use YAML starting and ending
document boundary markers instead of blank lines to separate the
individual manifests.
If a release's v1 config map was removed, 'helm upgrade' would fail. It
was calling the wrong function to get its history. This has been fixed.
Closes#1829
When downloader package moved to under /pkg, helmpath functions got called still from it, while it is under /cmd. This commit fixes the issue by moving helmpath after the downloader to have only cmd->pkg and pkg->pkg calls.
kubernetes has explicit delete message that user can know resources being deleted for sure,
suggest also add this behavior to helm, as it is too 'quiet' for deletion operation right now.
This makes it possible to do a `dep up` without refetching all of
the repositories.While it's less safe, it's useful when doing many
updates in a short period of time (such as in a CI/CD setting)
Closes#2019
This adds an environment variable, HELM_NO_PLUGINS, that can disable
the plugin system from loading plugins. It provides a general way for
turning the plugin system off.
Closes#1624
A regression was committed during 2.2.0 that broke the repositories.yaml
file format, switching the cache path from relative to absolute. This
fixes the error.
Closes#1974
The following commands:
helm dep update
helm dep build
are now able to take a requirements.yaml with dependency charts' repo defined as:
file://../local/path or file:///root/path
closes: #1884
When 'helm install', 'helm package', and 'helm upgrade' are run,
Helm will not issue any warnings if any dependencies listed in
a chart's requirements.yaml file are missing. This change includes
warnings when a chart is found in requirements.yaml but isn't
in charts/.
Closes#1567
I recently added a test to check the sorting of search results.
Unfortunately, the test didn't actually sort the results (_sigh_), so
it was failing occasionally on map ordering.
This adds the sort function that is supposed to be tested.
Closes#1925
Users can now specify a namespace filter for 'helm list'. Only the
releases within the specified namespace will be shown. For example,
'helm list --namespace foo' will only show releases for the 'foo'
namespace. Also added a namespace field to the table view.
Closes#1563
During search index construction, records were not correctly sorted by
version number, which resulted in the wrong records being inserted into
the index.
Along the way, added tests and fixed a few comments.
Closes#1897
A regression was introduced which required chart download URLs have the
same URL prefix as the chart repo that referenced them. A second
regression transformed that URL into a request for the latest version of
that chart, sidestepping semver constraints.
This fix closes both issues, which were present in the same function.
Closes#1845Closes#1846
* This is a simple mvp which processes a test definition with the
hook annotation for test when you run `helm test [release]`
* helm client cmd, proto def, tiller logic
When using pkg/helm as a third party client, I am using chartutil.LoadArchive()
to load a chart from an io.Reader. After that is loaded I wish to install/update that
chart, however InstallRelease and UpdateRelease only accepts a path rather than
something of type *chart.Chart. This adds a new function called InstallReleaseFromChart
which allows one to load a chart separate from the path, then install said chart.
Version cmd tries to set up a tunnel at RunE instead of using the
PersistentPreRunE. That means that for each version test (3) it
tries to set up the tunnel. When running the tests on an internetless
or whithout a valid k8s environment, the tunnel will fail with a
timeout of 20 seconds, meaning that it will take 60 seconds to
run the test.
This commit adds a fake tillerHost so it will not try to setup the
tunnel.
The --reset-values flag on upgrade instructs Tiller to reset the
upgraded release to the chart's built-in values.yaml, and ignore the
last install's overridden values.
Closes#1569