When 'helm package --app-version foo' is run, this will
set the AppVersion field to 'foo' in the packaged chart.
Signed-off-by: Arash Deshmeh <adeshmeh@ca.ibm.com>
* support output-dir when running 'helm template'
* add --output-dir to documentation
* when writing to file, dont add additional document
* trigger another ci build. make test-unit works for me
* dont write blank files
* return err instead of panic
* fix(helm): add TLS params back
During a recent refactor, several TLS flags stopped being processed for
a few of the commands. This fixes those commands, and documents how to
set up TLS.
* fix(tiller): add stricter certificate verification
The older version of Tiller allowed a weaker set of certificate checks
than we intended. This version requires a client certificate, and then
requires that that certificate be signed by a known CA. This works
around the situation where a user could provide a self-signed
certificate.
Tiller exposes probes and metrics in 44135. Because tiller doesn't expose that port and does not contain any Prometheus annotations, making Prometheus scrape tiller is a bit more complex.
Closes#2985
This feature enables users to specify more control over where Tiller pod
lands by allowing "node-selectors" to be specified. Alternatively, the
"--output" flag will skip install and dump Tiller's raw Deployment manifest to stdout so user may alter it as they see fit (probably with a JSON manipulation tool like jq).
Closes#2299
>0.0.0-a does not match pre-releases on 0.0.0 that start with a
capital letter or number. This has to do with the ordering of
code points. Numbers and capital letters come before lowercase
letters.
>0.0.0-0 should match all valid pre-releases on 0.0.0. According
to the spec, "Numeric identifiers MUST NOT include leading zeroes."
A 0 is also the lowest code point for all the allowed characters
in a pre-release
This commit adds --kube-version flag to helm template. It allows you to
override the Kubernetes version used as Capabilities.KubeVersion.Major/Minor (e.g. 1.7).
In this feature, we can use -f option with remote files, same as kubectl
accepts URLs. I add an option to send a 'get' request when read the local
file failed.
Closes#2642
We can use the command like
<pre>sed "s|foo|bar|g" values-template.yaml | helm install -f - stable/foo</pre>
This may be helpful in scripting.
Closes#2709
Use the current kube config namespace by default if --namespace is not specified.
This makes 'helm upgrade --install' and 'helm install' handle namespaces
the same way.
This adds a new configuration option to Tiller to limit the number of
records stored per release.
Tiller stores historical release information (helm history, helm
rollback). This makes it possible to set a maximum number of versions
per release.
To enable this feature, use `helm init --history-max NNN`. Note that
because of the restrictions on Deployment objects, you will have to
re-install Tiller to add a limit.
Along the way, I found an unreported bug in the Memory storage driver.
This fixes that bug and adds substantially more tests to catch
regressions.
Closes#2332
This change changes the order of operations in
pkg/downloader.Manager.downloadAll
Old charts are moved to tmp directory which is restored in case any
dependency update fails. Otherwise tmp dir is deleted.
* Use versioned API types from the client-go library
Wherever possible, use the k8s.io/client-go/kubernetes.Interface type
in favor of the client-related types from package
k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset
The latter are still required by the kubectl "reaper" types used in
the "installer" and "kube" packages.
* Accept the default deployment replica count of one
Don't bother requesting a single replica explicitly.
The former help info may cause misunderstanding that this command
can update content of charts existing in remote respositories while
it does pull charts' info from remote repositories.
This trivial modification leads better understanding.
* Adds update option to plugin command
Fixes issues/2385 - helm install silently updates the plugin, if it pre-existed
* Added tests for new methods for plugin update
* Updated docs
* Updated review comments :)
* Return error exit code when there is error
Fixes issues/2398 - helm plugin remove does not works as expected
- [ ] plugin remove option is coded to remove multiple plugins, but instead returns error when more than one plugin is requested to be removed.
- [ ] plugin remove does not show any error/message for non-existent plugin.
Extracted delete specific code from ReleaseServer to external function
which is called from both Local and Remote ReleaseModules.
Made getVersionSet function from tiller package exported.
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.