diff --git a/.circleci/config.yml b/.circleci/config.yml index 09d49fb89..14c050746 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,7 +4,7 @@ jobs: working_directory: /go/src/k8s.io/helm parallelism: 3 docker: - - image: golang:1.12.2 + - image: golang:1.12.5 environment: PROJECT_NAME: "kubernetes-helm" steps: diff --git a/.circleci/deploy.sh b/.circleci/deploy.sh index 08adad568..fe95a5634 100755 --- a/.circleci/deploy.sh +++ b/.circleci/deploy.sh @@ -22,6 +22,8 @@ fi : ${GCLOUD_SERVICE_KEY:?"GCLOUD_SERVICE_KEY environment variable is not set"} : ${PROJECT_NAME:?"PROJECT_NAME environment variable is not set"} +: ${AZURE_STORAGE_CONNECTION_STRING:?"AZURE_STORAGE_CONNECTION_STRING environment variable is not set"} +: ${AZURE_STORAGE_CONTAINER_NAME:?"AZURE_STORAGE_CONTAINER_NAME environment variable is not set"} VERSION= if [[ -n "${CIRCLE_TAG:-}" ]]; then @@ -50,6 +52,14 @@ ${HOME}/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file "${ ${HOME}/google-cloud-sdk/bin/gcloud config set project "${PROJECT_NAME}" docker login -u _json_key -p "$(cat ${HOME}/gcloud-service-key.json)" https://gcr.io +echo "Installing Azure CLI" +apt update +apt install -y apt-transport-https +echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ stretch main" | tee /etc/apt/sources.list.d/azure-cli.list +curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add +apt update +apt install -y azure-cli + echo "Building the tiller image" make docker-build VERSION="${VERSION}" @@ -62,3 +72,6 @@ make dist checksum VERSION="${VERSION}" echo "Pushing binaries to gs bucket" ${HOME}/google-cloud-sdk/bin/gsutil cp ./_dist/* "gs://${PROJECT_NAME}" + +echo "Pushing binaries to Azure" +az storage blob upload-batch -s _dist/ -d "$AZURE_STORAGE_CONTAINER_NAME" --pattern 'helm-*' --connection-string "$AZURE_STORAGE_CONNECTION_STRING" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7b381fcf3..3965e18db 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -302,7 +302,7 @@ The following tables define all label types used for Helm. It is split up by cat | `help wanted` | This issue is one the core maintainers cannot get to right now and would appreciate help with | | `proposal` | This issue is a proposal | | `question/support` | This issue is a support request or question | -| `starter` | This issue is a good for someone new to contributing to Helm | +| `good first issue` | This issue is a good for someone new to contributing to Helm | | `wont fix` | The issue has been discussed and will not be implemented (or accepted in the case of a proposal) | ### PR Specific @@ -327,6 +327,9 @@ lines is greater than defined below. | Label | Description | | ----- | ----------- | -| `size/small` | Anything less than or equal to 4 files and 150 lines. Only small amounts of manual testing may be required | -| `size/medium` | Anything greater than `size/small` and less than or equal to 8 files and 300 lines. Manual validation should be required. | -| `size/large` | Anything greater than `size/medium`. This should be thoroughly tested before merging and always requires 2 approvals. This also should be applied to anything that is a significant logic change. | +| `size/XS` | Anything less than or equal to 9 lines ignoring generated files. Only small amounts of manual testing may be required. | +| `size/S` | Anything greater than `size/XS` less than or equal to 29 lines ignoring the generated files. Only small amounts of manual testing may be required. | +| `size/M` | Anything greater than `size/S` less than or equal to 99 lines ignoring the generated files. Manual validation should be required. | +| `size/L` | Anything greater than `size/M` less than or equal to 499 lines ignoring the generated files. This should be thoroughly tested before merging and always requires 2 approvals. This also should be applied to anything that is a significant logic change. | +| `size/XL` | Anything greater than `size/L` less than or equal to 999 lines ignoring the generated files. This should be thoroughly tested before merging and always requires 2 approvals. This also should be applied to anything that is a significant logic change. | +| `size/XXL` | Anything greater than `size/XL`. This should be thoroughly tested before merging and always requires 2 approvals. This also should be applied to anything that is a significant logic change. | diff --git a/Makefile b/Makefile index 719fd5f03..0c474c135 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ DOCKER_REGISTRY ?= gcr.io IMAGE_PREFIX ?= kubernetes-helm -DEV_IMAGE ?= golang:1.12.2 +DEV_IMAGE ?= golang:1.12.5 SHORT_NAME ?= tiller SHORT_NAME_RUDDER ?= rudder TARGETS ?= darwin/amd64 linux/amd64 linux/386 linux/arm linux/arm64 linux/ppc64le linux/s390x windows/amd64 @@ -50,7 +50,7 @@ fetch-dist: mkdir -p _dist cd _dist && \ for obj in ${TARGET_OBJS} ; do \ - curl -sSL -o helm-${VERSION}-$${obj} https://storage.googleapis.com/kubernetes-helm/helm-${VERSION}-$${obj} ; \ + curl -sSL -o helm-${VERSION}-$${obj} https://get.helm.sh/helm-${VERSION}-$${obj} ; \ done .PHONY: sign diff --git a/OWNERS b/OWNERS index df847ab37..3fa911034 100644 --- a/OWNERS +++ b/OWNERS @@ -1,30 +1,17 @@ maintainers: - - adamreese - - bacongobbler - - hickeyma - - jascott1 - - mattfarina - - michelleN - - prydonius - - SlickNik - - technosophos - - thomastaylor312 - - viglesiasce -reviewers: - adamreese - bacongobbler - fibonacci1729 - - jascott1 + - hickeyma - mattfarina - michelleN - - migmartri - - nebril - prydonius - SlickNik - technosophos - thomastaylor312 - viglesiasce emeritus: + - jascott1 - migmartri - nebril - seh diff --git a/cmd/helm/create.go b/cmd/helm/create.go index 0d278c8b5..451b4ce86 100644 --- a/cmd/helm/create.go +++ b/cmd/helm/create.go @@ -31,7 +31,8 @@ import ( const createDesc = ` This command creates a chart directory along with the common files and -directories used in a chart. +directories used in a chart. It provides a basic example and is not +meant to cover all Kubernetes resources. For example, 'helm create foo' will create a directory structure that looks something like this: @@ -54,6 +55,10 @@ something like this: do not exist, Helm will attempt to create them as it goes. If the given destination exists and there are files in that directory, conflicting files will be overwritten, but other files will be left alone. + +The chart that is created by invoking this command contains a Deployment, Ingress +and a Service. To use other Kubernetes resources with your chart, refer to +[The Chart Template Developer's Guide](https://helm.sh/docs/chart_template_guide). ` type createCmd struct { @@ -68,7 +73,7 @@ func newCreateCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "create NAME", - Short: "create a new chart with the given name", + Short: "Create a new chart with the given name", Long: createDesc, RunE: func(cmd *cobra.Command, args []string) error { cc.home = settings.Home @@ -83,7 +88,7 @@ func newCreateCmd(out io.Writer) *cobra.Command { }, } - cmd.Flags().StringVarP(&cc.starter, "starter", "p", "", "the named Helm starter scaffold") + cmd.Flags().StringVarP(&cc.starter, "starter", "p", "", "The named Helm starter scaffold") return cmd } diff --git a/cmd/helm/delete.go b/cmd/helm/delete.go index 4f52ffdd9..6aa1c2a4e 100644 --- a/cmd/helm/delete.go +++ b/cmd/helm/delete.go @@ -56,7 +56,7 @@ func newDeleteCmd(c helm.Interface, out io.Writer) *cobra.Command { Use: "delete [flags] RELEASE_NAME [...]", Aliases: []string{"del"}, SuggestFor: []string{"remove", "rm"}, - Short: "given a release name, delete the release from Kubernetes", + Short: "Given a release name, delete the release from Kubernetes", Long: deleteDesc, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -79,11 +79,11 @@ func newDeleteCmd(c helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.BoolVar(&del.dryRun, "dry-run", false, "simulate a delete") - f.BoolVar(&del.disableHooks, "no-hooks", false, "prevent hooks from running during deletion") - f.BoolVar(&del.purge, "purge", false, "remove the release from the store and make its name free for later use") - f.Int64Var(&del.timeout, "timeout", 300, "time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") - f.StringVar(&del.description, "description", "", "specify a description for the release") + f.BoolVar(&del.dryRun, "dry-run", false, "Simulate a delete") + f.BoolVar(&del.disableHooks, "no-hooks", false, "Prevent hooks from running during deletion") + f.BoolVar(&del.purge, "purge", false, "Remove the release from the store and make its name free for later use") + f.Int64Var(&del.timeout, "timeout", 300, "Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") + f.StringVar(&del.description, "description", "", "Specify a description for the release") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/dependency.go b/cmd/helm/dependency.go index f8fe4cf8f..58686950e 100644 --- a/cmd/helm/dependency.go +++ b/cmd/helm/dependency.go @@ -91,7 +91,7 @@ func newDependencyCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "dependency update|build|list", Aliases: []string{"dep", "dependencies"}, - Short: "manage a chart's dependencies", + Short: "Manage a chart's dependencies", Long: dependencyDesc, } @@ -113,7 +113,7 @@ func newDependencyListCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "list [flags] CHART", Aliases: []string{"ls"}, - Short: "list the dependencies for the given chart", + Short: "List the dependencies for the given chart", Long: dependencyListDesc, RunE: func(cmd *cobra.Command, args []string) error { cp := "." diff --git a/cmd/helm/dependency_build.go b/cmd/helm/dependency_build.go index 64a80f3bd..6b4fd58e6 100644 --- a/cmd/helm/dependency_build.go +++ b/cmd/helm/dependency_build.go @@ -49,7 +49,7 @@ func newDependencyBuildCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "build [flags] CHART", - Short: "rebuild the charts/ directory based on the requirements.lock file", + Short: "Rebuild the charts/ directory based on the requirements.lock file", Long: dependencyBuildDesc, RunE: func(cmd *cobra.Command, args []string) error { dbc.helmhome = settings.Home @@ -63,8 +63,8 @@ func newDependencyBuildCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.BoolVar(&dbc.verify, "verify", false, "verify the packages against signatures") - f.StringVar(&dbc.keyring, "keyring", defaultKeyring(), "keyring containing public keys") + f.BoolVar(&dbc.verify, "verify", false, "Verify the packages against signatures") + f.StringVar(&dbc.keyring, "keyring", defaultKeyring(), "Keyring containing public keys") return cmd } diff --git a/cmd/helm/dependency_update.go b/cmd/helm/dependency_update.go index a8e54137b..1be29ea93 100644 --- a/cmd/helm/dependency_update.go +++ b/cmd/helm/dependency_update.go @@ -57,7 +57,7 @@ func newDependencyUpdateCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "update [flags] CHART", Aliases: []string{"up"}, - Short: "update charts/ based on the contents of requirements.yaml", + Short: "Update charts/ based on the contents of requirements.yaml", Long: dependencyUpDesc, RunE: func(cmd *cobra.Command, args []string) error { cp := "." @@ -78,9 +78,9 @@ func newDependencyUpdateCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.BoolVar(&duc.verify, "verify", false, "verify the packages against signatures") - f.StringVar(&duc.keyring, "keyring", defaultKeyring(), "keyring containing public keys") - f.BoolVar(&duc.skipRefresh, "skip-refresh", false, "do not refresh the local repository cache") + f.BoolVar(&duc.verify, "verify", false, "Verify the packages against signatures") + f.StringVar(&duc.keyring, "keyring", defaultKeyring(), "Keyring containing public keys") + f.BoolVar(&duc.skipRefresh, "skip-refresh", false, "Do not refresh the local repository cache") return cmd } diff --git a/cmd/helm/docs.go b/cmd/helm/docs.go index 56e3beaf5..80c10b95a 100644 --- a/cmd/helm/docs.go +++ b/cmd/helm/docs.go @@ -59,8 +59,8 @@ func newDocsCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.StringVar(&dc.dest, "dir", "./", "directory to which documentation is written") - f.StringVar(&dc.docTypeString, "type", "markdown", "the type of documentation to generate (markdown, man, bash)") + f.StringVar(&dc.dest, "dir", "./", "Directory to which documentation is written") + f.StringVar(&dc.docTypeString, "type", "markdown", "The type of documentation to generate (markdown, man, bash)") return cmd } diff --git a/cmd/helm/fetch.go b/cmd/helm/fetch.go index d6f622bb6..bc1c07cb7 100644 --- a/cmd/helm/fetch.go +++ b/cmd/helm/fetch.go @@ -73,7 +73,7 @@ func newFetchCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "fetch [flags] [chart URL | repo/chartname] [...]", - Short: "download a chart from a repository and (optionally) unpack it in local directory", + Short: "Download a chart from a repository and (optionally) unpack it in local directory", Long: fetchDesc, RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { @@ -96,20 +96,20 @@ func newFetchCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.BoolVar(&fch.untar, "untar", false, "if set to true, will untar the chart after downloading it") - f.StringVar(&fch.untardir, "untardir", ".", "if untar is specified, this flag specifies the name of the directory into which the chart is expanded") - f.BoolVar(&fch.verify, "verify", false, "verify the package against its signature") - f.BoolVar(&fch.verifyLater, "prov", false, "fetch the provenance file, but don't perform verification") - f.StringVar(&fch.version, "version", "", "specific version of a chart. Without this, the latest version is fetched") - f.StringVar(&fch.keyring, "keyring", defaultKeyring(), "keyring containing public keys") - f.StringVarP(&fch.destdir, "destination", "d", ".", "location to write the chart. If this and tardir are specified, tardir is appended to this") - f.StringVar(&fch.repoURL, "repo", "", "chart repository url where to locate the requested chart") - f.StringVar(&fch.certFile, "cert-file", "", "identify HTTPS client using this SSL certificate file") - f.StringVar(&fch.keyFile, "key-file", "", "identify HTTPS client using this SSL key file") - f.StringVar(&fch.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") - f.BoolVar(&fch.devel, "devel", false, "use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored.") - f.StringVar(&fch.username, "username", "", "chart repository username") - f.StringVar(&fch.password, "password", "", "chart repository password") + f.BoolVar(&fch.untar, "untar", false, "If set to true, will untar the chart after downloading it") + f.StringVar(&fch.untardir, "untardir", ".", "If untar is specified, this flag specifies the name of the directory into which the chart is expanded") + f.BoolVar(&fch.verify, "verify", false, "Verify the package against its signature") + f.BoolVar(&fch.verifyLater, "prov", false, "Fetch the provenance file, but don't perform verification") + f.StringVar(&fch.version, "version", "", "Specific version of a chart. Without this, the latest version is fetched") + f.StringVar(&fch.keyring, "keyring", defaultKeyring(), "Keyring containing public keys") + f.StringVarP(&fch.destdir, "destination", "d", ".", "Location to write the chart. If this and tardir are specified, tardir is appended to this") + f.StringVar(&fch.repoURL, "repo", "", "Chart repository url where to locate the requested chart") + f.StringVar(&fch.certFile, "cert-file", "", "Identify HTTPS client using this SSL certificate file") + f.StringVar(&fch.keyFile, "key-file", "", "Identify HTTPS client using this SSL key file") + f.StringVar(&fch.caFile, "ca-file", "", "Verify certificates of HTTPS-enabled servers using this CA bundle") + f.BoolVar(&fch.devel, "devel", false, "Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored.") + f.StringVar(&fch.username, "username", "", "Chart repository username") + f.StringVar(&fch.password, "password", "", "Chart repository password") return cmd } diff --git a/cmd/helm/get.go b/cmd/helm/get.go index 6829122b7..5cd0acdd0 100644 --- a/cmd/helm/get.go +++ b/cmd/helm/get.go @@ -56,7 +56,7 @@ func newGetCmd(client helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "get [flags] RELEASE_NAME", - Short: "download a named release", + Short: "Download a named release", Long: getHelp, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -73,8 +73,8 @@ func newGetCmd(client helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.Int32Var(&get.version, "revision", 0, "get the named release with revision") - f.StringVar(&get.template, "template", "", "go template for formatting the output, eg: {{.Release.Name}}") + f.Int32Var(&get.version, "revision", 0, "Get the named release with revision") + f.StringVar(&get.template, "template", "", "Go template for formatting the output, eg: {{.Release.Name}}") cmd.AddCommand(newGetValuesCmd(nil, out)) cmd.AddCommand(newGetManifestCmd(nil, out)) diff --git a/cmd/helm/get_hooks.go b/cmd/helm/get_hooks.go index 2706f381c..76592e0c2 100644 --- a/cmd/helm/get_hooks.go +++ b/cmd/helm/get_hooks.go @@ -45,7 +45,7 @@ func newGetHooksCmd(client helm.Interface, out io.Writer) *cobra.Command { } cmd := &cobra.Command{ Use: "hooks [flags] RELEASE_NAME", - Short: "download all hooks for a named release", + Short: "Download all hooks for a named release", Long: getHooksHelp, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -59,7 +59,7 @@ func newGetHooksCmd(client helm.Interface, out io.Writer) *cobra.Command { } f := cmd.Flags() settings.AddFlagsTLS(f) - f.Int32Var(&ghc.version, "revision", 0, "get the named release with revision") + f.Int32Var(&ghc.version, "revision", 0, "Get the named release with revision") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/get_manifest.go b/cmd/helm/get_manifest.go index 1cc7e3543..24580c015 100644 --- a/cmd/helm/get_manifest.go +++ b/cmd/helm/get_manifest.go @@ -47,7 +47,7 @@ func newGetManifestCmd(client helm.Interface, out io.Writer) *cobra.Command { } cmd := &cobra.Command{ Use: "manifest [flags] RELEASE_NAME", - Short: "download the manifest for a named release", + Short: "Download the manifest for a named release", Long: getManifestHelp, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -62,7 +62,7 @@ func newGetManifestCmd(client helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.Int32Var(&get.version, "revision", 0, "get the named release with revision") + f.Int32Var(&get.version, "revision", 0, "Get the named release with revision") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/get_notes.go b/cmd/helm/get_notes.go index c7c3d7797..04142f297 100644 --- a/cmd/helm/get_notes.go +++ b/cmd/helm/get_notes.go @@ -44,7 +44,7 @@ func newGetNotesCmd(client helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "notes [flags] RELEASE_NAME", - Short: "displays the notes of the named release", + Short: "Displays the notes of the named release", Long: getNotesHelp, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -61,7 +61,7 @@ func newGetNotesCmd(client helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.Int32Var(&get.version, "revision", 0, "get the notes of the named release with revision") + f.Int32Var(&get.version, "revision", 0, "Get the notes of the named release with revision") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/get_values.go b/cmd/helm/get_values.go index 7cdfa636f..30acc8081 100644 --- a/cmd/helm/get_values.go +++ b/cmd/helm/get_values.go @@ -47,7 +47,7 @@ func newGetValuesCmd(client helm.Interface, out io.Writer) *cobra.Command { } cmd := &cobra.Command{ Use: "values [flags] RELEASE_NAME", - Short: "download the values file for a named release", + Short: "Download the values file for a named release", Long: getValuesHelp, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -62,9 +62,9 @@ func newGetValuesCmd(client helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.Int32Var(&get.version, "revision", 0, "get the named release with revision") - f.BoolVarP(&get.allValues, "all", "a", false, "dump all (computed) values") - f.StringVar(&get.output, "output", "yaml", "output the specified format (json or yaml)") + f.Int32Var(&get.version, "revision", 0, "Get the named release with revision") + f.BoolVarP(&get.allValues, "all", "a", false, "Dump all (computed) values") + f.StringVar(&get.output, "output", "yaml", "Output the specified format (json or yaml)") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/get_values_test.go b/cmd/helm/get_values_test.go index aec5ce0c2..40b46bfda 100644 --- a/cmd/helm/get_values_test.go +++ b/cmd/helm/get_values_test.go @@ -29,8 +29,11 @@ import ( func TestGetValuesCmd(t *testing.T) { releaseWithValues := helm.ReleaseMock(&helm.MockReleaseOptions{ - Name: "thomas-guide", - Chart: &chart.Chart{Values: &chart.Config{Raw: `foo2: "bar2"`}}, + Name: "thomas-guide", + Chart: &chart.Chart{ + Metadata: &chart.Metadata{Name: "thomas-guide-chart-name"}, + Values: &chart.Config{Raw: `foo2: "bar2"`}, + }, Config: &chart.Config{Raw: `foo: "bar"`}, }) diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index d3337404a..2f394968f 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -39,6 +39,63 @@ import ( "k8s.io/helm/pkg/tlsutil" ) +const ( + bashCompletionFunc = ` +__helm_override_flag_list=(--kubeconfig --kube-context --host --tiller-namespace) +__helm_override_flags() +{ + local ${__helm_override_flag_list[*]##*-} two_word_of of var + for w in "${words[@]}"; do + if [ -n "${two_word_of}" ]; then + eval "${two_word_of##*-}=\"${two_word_of}=\${w}\"" + two_word_of= + continue + fi + for of in "${__helm_override_flag_list[@]}"; do + case "${w}" in + ${of}=*) + eval "${of##*-}=\"${w}\"" + ;; + ${of}) + two_word_of="${of}" + ;; + esac + done + done + for var in "${__helm_override_flag_list[@]##*-}"; do + if eval "test -n \"\$${var}\""; then + eval "echo \${${var}}" + fi + done +} + +__helm_list_releases() +{ + __helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + local out filter + # Use ^ to map from the start of the release name + filter="^${words[c]}" + if out=$(helm list $(__helm_override_flags) -a -q ${filter} 2>/dev/null); then + COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) ) + fi +} + +__helm_custom_func() +{ + __helm_debug "${FUNCNAME[0]}: c is $c words[@] is ${words[@]}" + case ${last_command} in + helm_delete | helm_history | helm_status | helm_test |\ + helm_upgrade | helm_rollback | helm_get_*) + __helm_list_releases + return + ;; + *) + ;; + esac +} +` +) + var ( tillerTunnel *kube.Tunnel settings helm_env.EnvSettings @@ -55,25 +112,25 @@ It will also set up any necessary local configuration. Common actions from this point include: -- helm search: search for charts -- helm fetch: download a chart to your local directory to view -- helm install: upload the chart to Kubernetes -- helm list: list releases of charts +- helm search: Search for charts +- helm fetch: Download a chart to your local directory to view +- helm install: Upload the chart to Kubernetes +- helm list: List releases of charts Environment: -- $HELM_HOME: set an alternative location for Helm files. By default, these are stored in ~/.helm -- $HELM_HOST: set an alternative Tiller host. The format is host:port -- $HELM_NO_PLUGINS: disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins. -- $TILLER_NAMESPACE: set an alternative Tiller namespace (default "kube-system") -- $KUBECONFIG: set an alternative Kubernetes configuration file (default "~/.kube/config") -- $HELM_TLS_CA_CERT: path to TLS CA certificate used to verify the Helm client and Tiller server certificates (default "$HELM_HOME/ca.pem") -- $HELM_TLS_CERT: path to TLS client certificate file for authenticating to Tiller (default "$HELM_HOME/cert.pem") -- $HELM_TLS_KEY: path to TLS client key file for authenticating to Tiller (default "$HELM_HOME/key.pem") -- $HELM_TLS_ENABLE: enable TLS connection between Helm and Tiller (default "false") -- $HELM_TLS_VERIFY: enable TLS connection between Helm and Tiller and verify Tiller server certificate (default "false") -- $HELM_TLS_HOSTNAME: the hostname or IP address used to verify the Tiller server certificate (default "127.0.0.1") -- $HELM_KEY_PASSPHRASE: set HELM_KEY_PASSPHRASE to the passphrase of your PGP private key. If set, you will not be prompted for the passphrase while signing helm charts +- $HELM_HOME: Set an alternative location for Helm files. By default, these are stored in ~/.helm +- $HELM_HOST: Set an alternative Tiller host. The format is host:port +- $HELM_NO_PLUGINS: Disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins. +- $TILLER_NAMESPACE: Set an alternative Tiller namespace (default "kube-system") +- $KUBECONFIG: Set an alternative Kubernetes configuration file (default "~/.kube/config") +- $HELM_TLS_CA_CERT: Path to TLS CA certificate used to verify the Helm client and Tiller server certificates (default "$HELM_HOME/ca.pem") +- $HELM_TLS_CERT: Path to TLS client certificate file for authenticating to Tiller (default "$HELM_HOME/cert.pem") +- $HELM_TLS_KEY: Path to TLS client key file for authenticating to Tiller (default "$HELM_HOME/key.pem") +- $HELM_TLS_ENABLE: Enable TLS connection between Helm and Tiller (default "false") +- $HELM_TLS_VERIFY: Enable TLS connection between Helm and Tiller and verify Tiller server certificate (default "false") +- $HELM_TLS_HOSTNAME: The hostname or IP address used to verify the Tiller server certificate (default "127.0.0.1") +- $HELM_KEY_PASSPHRASE: Set HELM_KEY_PASSPHRASE to the passphrase of your PGP private key. If set, you will not be prompted for the passphrase while signing helm charts ` @@ -103,6 +160,7 @@ func newRootCmd(args []string) *cobra.Command { PersistentPostRun: func(*cobra.Command, []string) { teardown() }, + BashCompletionFunction: bashCompletionFunc, } flags := cmd.PersistentFlags() @@ -147,7 +205,7 @@ func newRootCmd(args []string) *cobra.Command { newDocsCmd(out), // Deprecated - markDeprecated(newRepoUpdateCmd(out), "use 'helm repo update'\n"), + markDeprecated(newRepoUpdateCmd(out), "Use 'helm repo update'\n"), ) flags.Parse(args) diff --git a/cmd/helm/history.go b/cmd/helm/history.go index 365346e89..b92fb81c6 100644 --- a/cmd/helm/history.go +++ b/cmd/helm/history.go @@ -72,7 +72,7 @@ func newHistoryCmd(c helm.Interface, w io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "history [flags] RELEASE_NAME", Long: historyHelp, - Short: "fetch release history", + Short: "Fetch release history", Aliases: []string{"hist"}, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -89,9 +89,9 @@ func newHistoryCmd(c helm.Interface, w io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.Int32Var(&his.max, "max", 256, "maximum number of revision to include in history") - f.UintVar(&his.colWidth, "col-width", 60, "specifies the max column width of output") - f.StringVarP(&his.outputFormat, "output", "o", "table", "prints the output in the specified format (json|table|yaml)") + f.Int32Var(&his.max, "max", 256, "Maximum number of revisions to include in history") + f.UintVar(&his.colWidth, "col-width", 60, "Specifies the max column width of output") + f.StringVarP(&his.outputFormat, "output", "o", "table", "Prints the output in the specified format (json|table|yaml)") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/home.go b/cmd/helm/home.go index ca21088a7..c2aeef995 100644 --- a/cmd/helm/home.go +++ b/cmd/helm/home.go @@ -31,7 +31,7 @@ any helm configuration files live. func newHomeCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "home", - Short: "displays the location of HELM_HOME", + Short: "Displays the location of HELM_HOME", Long: longHomeHelp, Run: func(cmd *cobra.Command, args []string) { h := settings.Home diff --git a/cmd/helm/init.go b/cmd/helm/init.go index 145abdc87..c7617e705 100644 --- a/cmd/helm/init.go +++ b/cmd/helm/init.go @@ -96,7 +96,7 @@ func newInitCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "init", - Short: "initialize Helm on both client and server", + Short: "Initialize Helm on both client and server", Long: initDesc, RunE: func(cmd *cobra.Command, args []string) error { if len(args) != 0 { @@ -111,38 +111,38 @@ func newInitCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.StringVarP(&i.image, "tiller-image", "i", "", "override Tiller image") - f.BoolVar(&i.canary, "canary-image", false, "use the canary Tiller image") - f.BoolVar(&i.upgrade, "upgrade", false, "upgrade if Tiller is already installed") - f.BoolVar(&i.forceUpgrade, "force-upgrade", false, "force upgrade of Tiller to the current helm version") - f.BoolVarP(&i.clientOnly, "client-only", "c", false, "if set does not install Tiller") - f.BoolVar(&i.dryRun, "dry-run", false, "do not install local or remote") - f.BoolVar(&i.skipRefresh, "skip-refresh", false, "do not refresh (download) the local repository cache") - f.BoolVar(&i.wait, "wait", false, "block until Tiller is running and ready to receive requests") + f.StringVarP(&i.image, "tiller-image", "i", "", "Override Tiller image") + f.BoolVar(&i.canary, "canary-image", false, "Use the canary Tiller image") + f.BoolVar(&i.upgrade, "upgrade", false, "Upgrade if Tiller is already installed") + f.BoolVar(&i.forceUpgrade, "force-upgrade", false, "Force upgrade of Tiller to the current helm version") + f.BoolVarP(&i.clientOnly, "client-only", "c", false, "If set does not install Tiller") + f.BoolVar(&i.dryRun, "dry-run", false, "Do not install local or remote") + f.BoolVar(&i.skipRefresh, "skip-refresh", false, "Do not refresh (download) the local repository cache") + f.BoolVar(&i.wait, "wait", false, "Block until Tiller is running and ready to receive requests") // TODO: replace TLS flags with pkg/helm/environment.AddFlagsTLS() in Helm 3 // // NOTE (bacongobbler): we can't do this in Helm 2 because the flag names differ, and `helm init --tls-ca-cert` // doesn't conform with the rest of the TLS flag names (should be --tiller-tls-ca-cert in Helm 3) - f.BoolVar(&tlsEnable, "tiller-tls", false, "install Tiller with TLS enabled") - f.BoolVar(&tlsVerify, "tiller-tls-verify", false, "install Tiller with TLS enabled and to verify remote certificates") - f.StringVar(&tlsKeyFile, "tiller-tls-key", "", "path to TLS key file to install with Tiller") - f.StringVar(&tlsCertFile, "tiller-tls-cert", "", "path to TLS certificate file to install with Tiller") - f.StringVar(&tlsCaCertFile, "tls-ca-cert", "", "path to CA root certificate") - f.StringVar(&tlsServerName, "tiller-tls-hostname", settings.TillerHost, "the server name used to verify the hostname on the returned certificates from Tiller") + f.BoolVar(&tlsEnable, "tiller-tls", false, "Install Tiller with TLS enabled") + f.BoolVar(&tlsVerify, "tiller-tls-verify", false, "Install Tiller with TLS enabled and to verify remote certificates") + f.StringVar(&tlsKeyFile, "tiller-tls-key", "", "Path to TLS key file to install with Tiller") + f.StringVar(&tlsCertFile, "tiller-tls-cert", "", "Path to TLS certificate file to install with Tiller") + f.StringVar(&tlsCaCertFile, "tls-ca-cert", "", "Path to CA root certificate") + f.StringVar(&tlsServerName, "tiller-tls-hostname", settings.TillerHost, "The server name used to verify the hostname on the returned certificates from Tiller") f.StringVar(&stableRepositoryURL, "stable-repo-url", stableRepositoryURL, "URL for stable repository") f.StringVar(&localRepositoryURL, "local-repo-url", localRepositoryURL, "URL for local repository") - f.BoolVar(&i.opts.EnableHostNetwork, "net-host", false, "install Tiller with net=host") - f.StringVar(&i.serviceAccount, "service-account", "", "name of service account") - f.IntVar(&i.maxHistory, "history-max", 0, "limit the maximum number of revisions saved per release. Use 0 for no limit.") - f.IntVar(&i.replicas, "replicas", 1, "amount of tiller instances to run on the cluster") + f.BoolVar(&i.opts.EnableHostNetwork, "net-host", false, "Install Tiller with net=host") + f.StringVar(&i.serviceAccount, "service-account", "", "Name of service account") + f.IntVar(&i.maxHistory, "history-max", 0, "Limit the maximum number of revisions saved per release. Use 0 for no limit.") + f.IntVar(&i.replicas, "replicas", 1, "Amount of tiller instances to run on the cluster") - f.StringVar(&i.opts.NodeSelectors, "node-selectors", "", "labels to specify the node on which Tiller is installed (app=tiller,helm=rocks)") - f.VarP(&i.opts.Output, "output", "o", "skip installation and output Tiller's manifest in specified format (json or yaml)") - f.StringArrayVar(&i.opts.Values, "override", []string{}, "override values for the Tiller Deployment manifest (can specify multiple or separate values with commas: key1=val1,key2=val2)") - f.BoolVar(&i.opts.AutoMountServiceAccountToken, "automount-service-account-token", true, "auto-mount the given service account to tiller") + f.StringVar(&i.opts.NodeSelectors, "node-selectors", "", "Labels to specify the node on which Tiller is installed (app=tiller,helm=rocks)") + f.VarP(&i.opts.Output, "output", "o", "Skip installation and output Tiller's manifest in specified format (json or yaml)") + f.StringArrayVar(&i.opts.Values, "override", []string{}, "Override values for the Tiller Deployment manifest (can specify multiple or separate values with commas: key1=val1,key2=val2)") + f.BoolVar(&i.opts.AutoMountServiceAccountToken, "automount-service-account-token", true, "Auto-mount the given service account to tiller") return cmd } diff --git a/cmd/helm/inspect.go b/cmd/helm/inspect.go index 9330b900f..d8ac6b2ef 100644 --- a/cmd/helm/inspect.go +++ b/cmd/helm/inspect.go @@ -82,7 +82,7 @@ func newInspectCmd(out io.Writer) *cobra.Command { inspectCommand := &cobra.Command{ Use: "inspect [CHART]", - Short: "inspect a chart", + Short: "Inspect a chart", Long: inspectDesc, RunE: func(cmd *cobra.Command, args []string) error { if err := checkArgsLength(len(args), "chart name"); err != nil { @@ -145,62 +145,62 @@ func newInspectCmd(out io.Writer) *cobra.Command { cmds := []*cobra.Command{inspectCommand, readmeSubCmd, valuesSubCmd, chartSubCmd} vflag := "verify" - vdesc := "verify the provenance data for this chart" + vdesc := "Verify the provenance data for this chart" for _, subCmd := range cmds { subCmd.Flags().BoolVar(&insp.verify, vflag, false, vdesc) } kflag := "keyring" - kdesc := "path to the keyring containing public verification keys" + kdesc := "Path to the keyring containing public verification keys" kdefault := defaultKeyring() for _, subCmd := range cmds { subCmd.Flags().StringVar(&insp.keyring, kflag, kdefault, kdesc) } verflag := "version" - verdesc := "version of the chart. By default, the newest chart is shown" + verdesc := "Version of the chart. By default, the newest chart is shown" for _, subCmd := range cmds { subCmd.Flags().StringVar(&insp.version, verflag, "", verdesc) } repoURL := "repo" - repoURLdesc := "chart repository url where to locate the requested chart" + repoURLdesc := "Chart repository url where to locate the requested chart" for _, subCmd := range cmds { subCmd.Flags().StringVar(&insp.repoURL, repoURL, "", repoURLdesc) } username := "username" - usernamedesc := "chart repository username where to locate the requested chart" + usernamedesc := "Chart repository username where to locate the requested chart" inspectCommand.Flags().StringVar(&insp.username, username, "", usernamedesc) valuesSubCmd.Flags().StringVar(&insp.username, username, "", usernamedesc) chartSubCmd.Flags().StringVar(&insp.username, username, "", usernamedesc) password := "password" - passworddesc := "chart repository password where to locate the requested chart" + passworddesc := "Chart repository password where to locate the requested chart" inspectCommand.Flags().StringVar(&insp.password, password, "", passworddesc) valuesSubCmd.Flags().StringVar(&insp.password, password, "", passworddesc) chartSubCmd.Flags().StringVar(&insp.password, password, "", passworddesc) develFlag := "devel" - develDesc := "use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored." + develDesc := "Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored." for _, subCmd := range cmds { subCmd.Flags().BoolVar(&insp.devel, develFlag, false, develDesc) } certFile := "cert-file" - certFiledesc := "verify certificates of HTTPS-enabled servers using this CA bundle" + certFiledesc := "Verify certificates of HTTPS-enabled servers using this CA bundle" for _, subCmd := range cmds { subCmd.Flags().StringVar(&insp.certFile, certFile, "", certFiledesc) } keyFile := "key-file" - keyFiledesc := "identify HTTPS client using this SSL key file" + keyFiledesc := "Identify HTTPS client using this SSL key file" for _, subCmd := range cmds { subCmd.Flags().StringVar(&insp.keyFile, keyFile, "", keyFiledesc) } caFile := "ca-file" - caFiledesc := "chart repository url where to locate the requested chart" + caFiledesc := "Chart repository url where to locate the requested chart" for _, subCmd := range cmds { subCmd.Flags().StringVar(&insp.caFile, caFile, "", caFiledesc) } diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 4602ea9fd..23f307564 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -170,7 +170,7 @@ func newInstallCmd(c helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "install [CHART]", - Short: "install a chart archive", + Short: "Install a chart archive", Long: installDesc, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -199,33 +199,33 @@ func newInstallCmd(c helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.VarP(&inst.valueFiles, "values", "f", "specify values in a YAML file or a URL(can specify multiple)") - f.StringVarP(&inst.name, "name", "n", "", "release name. If unspecified, it will autogenerate one for you") - f.StringVar(&inst.namespace, "namespace", "", "namespace to install the release into. Defaults to the current kube config namespace.") - f.BoolVar(&inst.dryRun, "dry-run", false, "simulate an install") - f.BoolVar(&inst.disableHooks, "no-hooks", false, "prevent hooks from running during install") - f.BoolVar(&inst.disableCRDHook, "no-crd-hook", false, "prevent CRD hooks from running, but run other hooks") - f.BoolVar(&inst.replace, "replace", false, "re-use the given name, even if that name is already used. This is unsafe in production") - f.StringArrayVar(&inst.values, "set", []string{}, "set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - f.StringArrayVar(&inst.stringValues, "set-string", []string{}, "set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - f.StringArrayVar(&inst.fileValues, "set-file", []string{}, "set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") - f.StringVar(&inst.nameTemplate, "name-template", "", "specify template used to name the release") - f.BoolVar(&inst.verify, "verify", false, "verify the package before installing it") - f.StringVar(&inst.keyring, "keyring", defaultKeyring(), "location of public keys used for verification") - f.StringVar(&inst.version, "version", "", "specify the exact chart version to install. If this is not specified, the latest version is installed") - f.Int64Var(&inst.timeout, "timeout", 300, "time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") - f.BoolVar(&inst.wait, "wait", false, "if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout") - f.BoolVar(&inst.atomic, "atomic", false, "if set, installation process purges chart on fail, also sets --wait flag") - f.StringVar(&inst.repoURL, "repo", "", "chart repository url where to locate the requested chart") - f.StringVar(&inst.username, "username", "", "chart repository username where to locate the requested chart") - f.StringVar(&inst.password, "password", "", "chart repository password where to locate the requested chart") - f.StringVar(&inst.certFile, "cert-file", "", "identify HTTPS client using this SSL certificate file") - f.StringVar(&inst.keyFile, "key-file", "", "identify HTTPS client using this SSL key file") - f.StringVar(&inst.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") - f.BoolVar(&inst.devel, "devel", false, "use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored.") - f.BoolVar(&inst.depUp, "dep-up", false, "run helm dependency update before installing the chart") - f.BoolVar(&inst.subNotes, "render-subchart-notes", false, "render subchart notes along with the parent") - f.StringVar(&inst.description, "description", "", "specify a description for the release") + f.VarP(&inst.valueFiles, "values", "f", "Specify values in a YAML file or a URL(can specify multiple)") + f.StringVarP(&inst.name, "name", "n", "", "The release name. If unspecified, it will autogenerate one for you") + f.StringVar(&inst.namespace, "namespace", "", "Namespace to install the release into. Defaults to the current kube config namespace.") + f.BoolVar(&inst.dryRun, "dry-run", false, "Simulate an install") + f.BoolVar(&inst.disableHooks, "no-hooks", false, "Prevent hooks from running during install") + f.BoolVar(&inst.disableCRDHook, "no-crd-hook", false, "Prevent CRD hooks from running, but run other hooks") + f.BoolVar(&inst.replace, "replace", false, "Re-use the given name, even if that name is already used. This is unsafe in production") + f.StringArrayVar(&inst.values, "set", []string{}, "Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") + f.StringArrayVar(&inst.stringValues, "set-string", []string{}, "Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") + f.StringArrayVar(&inst.fileValues, "set-file", []string{}, "Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") + f.StringVar(&inst.nameTemplate, "name-template", "", "Specify template used to name the release") + f.BoolVar(&inst.verify, "verify", false, "Verify the package before installing it") + f.StringVar(&inst.keyring, "keyring", defaultKeyring(), "Location of public keys used for verification") + f.StringVar(&inst.version, "version", "", "Specify the exact chart version to install. If this is not specified, the latest version is installed") + f.Int64Var(&inst.timeout, "timeout", 300, "Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") + f.BoolVar(&inst.wait, "wait", false, "If set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout") + f.BoolVar(&inst.atomic, "atomic", false, "If set, installation process purges chart on fail, also sets --wait flag") + f.StringVar(&inst.repoURL, "repo", "", "Chart repository url where to locate the requested chart") + f.StringVar(&inst.username, "username", "", "Chart repository username where to locate the requested chart") + f.StringVar(&inst.password, "password", "", "Chart repository password where to locate the requested chart") + f.StringVar(&inst.certFile, "cert-file", "", "Identify HTTPS client using this SSL certificate file") + f.StringVar(&inst.keyFile, "key-file", "", "Identify HTTPS client using this SSL key file") + f.StringVar(&inst.caFile, "ca-file", "", "Verify certificates of HTTPS-enabled servers using this CA bundle") + f.BoolVar(&inst.devel, "devel", false, "Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored.") + f.BoolVar(&inst.depUp, "dep-up", false, "Run helm dependency update before installing the chart") + f.BoolVar(&inst.subNotes, "render-subchart-notes", false, "Render subchart notes along with the parent") + f.StringVar(&inst.description, "description", "", "Specify a description for the release") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/installer/install.go b/cmd/helm/installer/install.go index 5c3369c7d..42c7132db 100644 --- a/cmd/helm/installer/install.go +++ b/cmd/helm/installer/install.go @@ -125,7 +125,7 @@ func Deployment(opts *Options) (*v1beta1.Deployment, error) { } dep.TypeMeta = metav1.TypeMeta{ Kind: "Deployment", - APIVersion: "extensions/v1beta1", + APIVersion: "apps/v1", } return dep, nil } diff --git a/cmd/helm/lint.go b/cmd/helm/lint.go index d0159d34b..710221bf5 100644 --- a/cmd/helm/lint.go +++ b/cmd/helm/lint.go @@ -61,7 +61,7 @@ func newLintCmd(out io.Writer) *cobra.Command { } cmd := &cobra.Command{ Use: "lint [flags] PATH", - Short: "examines a chart for possible issues", + Short: "Examines a chart for possible issues", Long: longLintHelp, RunE: func(cmd *cobra.Command, args []string) error { if len(args) > 0 { @@ -71,12 +71,12 @@ func newLintCmd(out io.Writer) *cobra.Command { }, } - cmd.Flags().VarP(&l.valueFiles, "values", "f", "specify values in a YAML file (can specify multiple)") - cmd.Flags().StringArrayVar(&l.values, "set", []string{}, "set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - cmd.Flags().StringArrayVar(&l.sValues, "set-string", []string{}, "set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - cmd.Flags().StringArrayVar(&l.fValues, "set-file", []string{}, "set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") - cmd.Flags().StringVar(&l.namespace, "namespace", "default", "namespace to put the release into") - cmd.Flags().BoolVar(&l.strict, "strict", false, "fail on lint warnings") + cmd.Flags().VarP(&l.valueFiles, "values", "f", "Specify values in a YAML file (can specify multiple)") + cmd.Flags().StringArrayVar(&l.values, "set", []string{}, "Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") + cmd.Flags().StringArrayVar(&l.sValues, "set-string", []string{}, "Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") + cmd.Flags().StringArrayVar(&l.fValues, "set-file", []string{}, "Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") + cmd.Flags().StringVar(&l.namespace, "namespace", "default", "Namespace to put the release into") + cmd.Flags().BoolVar(&l.strict, "strict", false, "Fail on lint warnings") return cmd } @@ -166,7 +166,7 @@ func lintChart(path string, vals []byte, namespace string, strict bool) (support chartPath = path } - // Guard: Error out of this is not a chart. + // Guard: Error out if this is not a chart. if _, err := os.Stat(filepath.Join(chartPath, "Chart.yaml")); err != nil { return linter, errLintNoChart } @@ -177,7 +177,7 @@ func lintChart(path string, vals []byte, namespace string, strict bool) (support // vals merges values from files specified via -f/--values and // directly via --set or --set-string or --set-file, marshaling them to YAML // -// This func is implemented intentionally and separately from the `vals` func for the `install` and `upgrade` comammdsn. +// This func is implemented intentionally and separately from the `vals` func for the `install` and `upgrade` commands. // Compared to the alternative func, this func lacks the parameters for tls opts - ca key, cert, and ca cert. // That's because this command, `lint`, is explicitly forbidden from making server connections. func (l *lintCmd) vals() ([]byte, error) { diff --git a/cmd/helm/list.go b/cmd/helm/list.go index 3ca3fbbfa..87b3ce54d 100644 --- a/cmd/helm/list.go +++ b/cmd/helm/list.go @@ -104,7 +104,7 @@ func newListCmd(client helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "list [flags] [FILTER]", - Short: "list releases", + Short: "List releases", Long: listHelp, Aliases: []string{"ls"}, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, @@ -121,21 +121,21 @@ func newListCmd(client helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.BoolVarP(&list.short, "short", "q", false, "output short (quiet) listing format") - f.BoolVarP(&list.byDate, "date", "d", false, "sort by release date") - f.BoolVarP(&list.sortDesc, "reverse", "r", false, "reverse the sort order") - f.IntVarP(&list.limit, "max", "m", 256, "maximum number of releases to fetch") - f.StringVarP(&list.offset, "offset", "o", "", "next release name in the list, used to offset from start value") - f.BoolVarP(&list.all, "all", "a", false, "show all releases, not just the ones marked DEPLOYED") - f.BoolVar(&list.deleted, "deleted", false, "show deleted releases") - f.BoolVar(&list.deleting, "deleting", false, "show releases that are currently being deleted") - f.BoolVar(&list.deployed, "deployed", false, "show deployed releases. If no other is specified, this will be automatically enabled") - f.BoolVar(&list.failed, "failed", false, "show failed releases") - f.BoolVar(&list.pending, "pending", false, "show pending releases") - f.StringVar(&list.namespace, "namespace", "", "show releases within a specific namespace") - f.UintVar(&list.colWidth, "col-width", 60, "specifies the max column width of output") - f.StringVar(&list.output, "output", "", "output the specified format (json or yaml)") - f.BoolVarP(&list.byChartName, "chart-name", "c", false, "sort by chart name") + f.BoolVarP(&list.short, "short", "q", false, "Output short (quiet) listing format") + f.BoolVarP(&list.byDate, "date", "d", false, "Sort by release date") + f.BoolVarP(&list.sortDesc, "reverse", "r", false, "Reverse the sort order") + f.IntVarP(&list.limit, "max", "m", 256, "Maximum number of releases to fetch") + f.StringVarP(&list.offset, "offset", "o", "", "Next release name in the list, used to offset from start value") + f.BoolVarP(&list.all, "all", "a", false, "Show all releases, not just the ones marked DEPLOYED") + f.BoolVar(&list.deleted, "deleted", false, "Show deleted releases") + f.BoolVar(&list.deleting, "deleting", false, "Show releases that are currently being deleted") + f.BoolVar(&list.deployed, "deployed", false, "Show deployed releases. If no other is specified, this will be automatically enabled") + f.BoolVar(&list.failed, "failed", false, "Show failed releases") + f.BoolVar(&list.pending, "pending", false, "Show pending releases") + f.StringVar(&list.namespace, "namespace", "", "Show releases within a specific namespace") + f.UintVar(&list.colWidth, "col-width", 60, "Specifies the max column width of output") + f.StringVar(&list.output, "output", "", "Output the specified format (json or yaml)") + f.BoolVarP(&list.byChartName, "chart-name", "c", false, "Sort by chart name") // TODO: Do we want this as a feature of 'helm list'? //f.BoolVar(&list.superseded, "history", true, "show historical releases") diff --git a/cmd/helm/package.go b/cmd/helm/package.go index 05fdf02f8..c3643e9b5 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -70,7 +70,7 @@ func newPackageCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "package [flags] [CHART_PATH] [...]", - Short: "package a chart directory into a chart archive", + Short: "Package a chart directory into a chart archive", Long: packageDesc, RunE: func(cmd *cobra.Command, args []string) error { pkg.home = settings.Home @@ -96,14 +96,14 @@ func newPackageCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.BoolVar(&pkg.save, "save", true, "save packaged chart to local chart repository") - f.BoolVar(&pkg.sign, "sign", false, "use a PGP private key to sign this package") - f.StringVar(&pkg.key, "key", "", "name of the key to use when signing. Used if --sign is true") - f.StringVar(&pkg.keyring, "keyring", defaultKeyring(), "location of a public keyring") - f.StringVar(&pkg.version, "version", "", "set the version on the chart to this semver version") - f.StringVar(&pkg.appVersion, "app-version", "", "set the appVersion on the chart to this version") - f.StringVarP(&pkg.destination, "destination", "d", ".", "location to write the chart.") - f.BoolVarP(&pkg.dependencyUpdate, "dependency-update", "u", false, `update dependencies from "requirements.yaml" to dir "charts/" before packaging`) + f.BoolVar(&pkg.save, "save", true, "Save packaged chart to local chart repository") + f.BoolVar(&pkg.sign, "sign", false, "Use a PGP private key to sign this package") + f.StringVar(&pkg.key, "key", "", "Name of the key to use when signing. Used if --sign is true") + f.StringVar(&pkg.keyring, "keyring", defaultKeyring(), "Location of a public keyring") + f.StringVar(&pkg.version, "version", "", "Set the version on the chart to this semver version") + f.StringVar(&pkg.appVersion, "app-version", "", "Set the appVersion on the chart to this version") + f.StringVarP(&pkg.destination, "destination", "d", ".", "Location to write the chart.") + f.BoolVarP(&pkg.dependencyUpdate, "dependency-update", "u", false, `Update dependencies from "requirements.yaml" to dir "charts/" before packaging`) return cmd } diff --git a/cmd/helm/plugin.go b/cmd/helm/plugin.go index fbdd1245b..99117dbb2 100644 --- a/cmd/helm/plugin.go +++ b/cmd/helm/plugin.go @@ -33,7 +33,7 @@ Manage client-side Helm plugins. func newPluginCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "plugin", - Short: "add, list, or remove Helm plugins", + Short: "Add, list, or remove Helm plugins", Long: pluginHelp, } cmd.AddCommand( diff --git a/cmd/helm/plugin_install.go b/cmd/helm/plugin_install.go index 7d77be3fc..abf60537b 100644 --- a/cmd/helm/plugin_install.go +++ b/cmd/helm/plugin_install.go @@ -44,7 +44,7 @@ func newPluginInstallCmd(out io.Writer) *cobra.Command { pcmd := &pluginInstallCmd{out: out} cmd := &cobra.Command{ Use: "install [options] ...", - Short: "install one or more Helm plugins", + Short: "Install one or more Helm plugins", Long: pluginInstallDesc, PreRunE: func(cmd *cobra.Command, args []string) error { return pcmd.complete(args) @@ -53,7 +53,7 @@ func newPluginInstallCmd(out io.Writer) *cobra.Command { return pcmd.run() }, } - cmd.Flags().StringVar(&pcmd.version, "version", "", "specify a version constraint. If this is not specified, the latest version is installed") + cmd.Flags().StringVar(&pcmd.version, "version", "", "Specify a version constraint. If this is not specified, the latest version is installed") return cmd } diff --git a/cmd/helm/plugin_list.go b/cmd/helm/plugin_list.go index 9693baaa2..efaac164e 100644 --- a/cmd/helm/plugin_list.go +++ b/cmd/helm/plugin_list.go @@ -34,7 +34,7 @@ func newPluginListCmd(out io.Writer) *cobra.Command { pcmd := &pluginListCmd{out: out} cmd := &cobra.Command{ Use: "list", - Short: "list installed Helm plugins", + Short: "List installed Helm plugins", RunE: func(cmd *cobra.Command, args []string) error { pcmd.home = settings.Home return pcmd.run() diff --git a/cmd/helm/plugin_remove.go b/cmd/helm/plugin_remove.go index f30e5b516..d4321558a 100644 --- a/cmd/helm/plugin_remove.go +++ b/cmd/helm/plugin_remove.go @@ -38,7 +38,7 @@ func newPluginRemoveCmd(out io.Writer) *cobra.Command { pcmd := &pluginRemoveCmd{out: out} cmd := &cobra.Command{ Use: "remove ...", - Short: "remove one or more Helm plugins", + Short: "Remove one or more Helm plugins", PreRunE: func(cmd *cobra.Command, args []string) error { return pcmd.complete(args) }, diff --git a/cmd/helm/plugin_update.go b/cmd/helm/plugin_update.go index f9d5a3fac..285572824 100644 --- a/cmd/helm/plugin_update.go +++ b/cmd/helm/plugin_update.go @@ -39,7 +39,7 @@ func newPluginUpdateCmd(out io.Writer) *cobra.Command { pcmd := &pluginUpdateCmd{out: out} cmd := &cobra.Command{ Use: "update ...", - Short: "update one or more Helm plugins", + Short: "Update one or more Helm plugins", PreRunE: func(cmd *cobra.Command, args []string) error { return pcmd.complete(args) }, diff --git a/cmd/helm/release_testing.go b/cmd/helm/release_testing.go index 91c0d7189..e108ade81 100644 --- a/cmd/helm/release_testing.go +++ b/cmd/helm/release_testing.go @@ -50,7 +50,7 @@ func newReleaseTestCmd(c helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "test [RELEASE]", - Short: "test a release", + Short: "Test a release", Long: releaseTestDesc, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -66,9 +66,9 @@ func newReleaseTestCmd(c helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.Int64Var(&rlsTest.timeout, "timeout", 300, "time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") - f.BoolVar(&rlsTest.cleanup, "cleanup", false, "delete test pods upon completion") - f.BoolVar(&rlsTest.parallel, "parallel", false, "run test pods in parallel") + f.Int64Var(&rlsTest.timeout, "timeout", 300, "Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") + f.BoolVar(&rlsTest.cleanup, "cleanup", false, "Delete test pods upon completion") + f.BoolVar(&rlsTest.parallel, "parallel", false, "Run test pods in parallel") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/repo.go b/cmd/helm/repo.go index 9f1dc8928..9eac9237d 100644 --- a/cmd/helm/repo.go +++ b/cmd/helm/repo.go @@ -33,7 +33,7 @@ Example usage: func newRepoCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "repo [FLAGS] add|remove|list|index|update [ARGS]", - Short: "add, list, remove, update, and index chart repositories", + Short: "Add, list, remove, update, and index chart repositories", Long: repoHelm, } diff --git a/cmd/helm/repo_add.go b/cmd/helm/repo_add.go index bfb3f0174..15d4c842e 100644 --- a/cmd/helm/repo_add.go +++ b/cmd/helm/repo_add.go @@ -49,7 +49,7 @@ func newRepoAddCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "add [flags] [NAME] [URL]", - Short: "add a chart repository", + Short: "Add a chart repository", RunE: func(cmd *cobra.Command, args []string) error { if err := checkArgsLength(len(args), "name for the chart repository", "the url of the chart repository"); err != nil { return err @@ -64,12 +64,12 @@ func newRepoAddCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.StringVar(&add.username, "username", "", "chart repository username") - f.StringVar(&add.password, "password", "", "chart repository password") - f.BoolVar(&add.noupdate, "no-update", false, "raise error if repo is already registered") - f.StringVar(&add.certFile, "cert-file", "", "identify HTTPS client using this SSL certificate file") - f.StringVar(&add.keyFile, "key-file", "", "identify HTTPS client using this SSL key file") - f.StringVar(&add.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") + f.StringVar(&add.username, "username", "", "Chart repository username") + f.StringVar(&add.password, "password", "", "Chart repository password") + f.BoolVar(&add.noupdate, "no-update", false, "Raise error if repo is already registered") + f.StringVar(&add.certFile, "cert-file", "", "Identify HTTPS client using this SSL certificate file") + f.StringVar(&add.keyFile, "key-file", "", "Identify HTTPS client using this SSL key file") + f.StringVar(&add.caFile, "ca-file", "", "Verify certificates of HTTPS-enabled servers using this CA bundle") return cmd } diff --git a/cmd/helm/repo_index.go b/cmd/helm/repo_index.go index b3f49fb97..cd7b2aea0 100644 --- a/cmd/helm/repo_index.go +++ b/cmd/helm/repo_index.go @@ -50,7 +50,7 @@ func newRepoIndexCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "index [flags] [DIR]", - Short: "generate an index file given a directory containing packaged charts", + Short: "Generate an index file given a directory containing packaged charts", Long: repoIndexDesc, RunE: func(cmd *cobra.Command, args []string) error { if err := checkArgsLength(len(args), "path to a directory"); err != nil { @@ -64,8 +64,8 @@ func newRepoIndexCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.StringVar(&index.url, "url", "", "url of chart repository") - f.StringVar(&index.merge, "merge", "", "merge the generated index into the given index") + f.StringVar(&index.url, "url", "", "URL of the chart repository") + f.StringVar(&index.merge, "merge", "", "Merge the generated index into the given index") return cmd } diff --git a/cmd/helm/repo_list.go b/cmd/helm/repo_list.go index 36887c69b..5983bca97 100644 --- a/cmd/helm/repo_list.go +++ b/cmd/helm/repo_list.go @@ -38,7 +38,7 @@ func newRepoListCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "list [flags]", - Short: "list chart repositories", + Short: "List chart repositories", RunE: func(cmd *cobra.Command, args []string) error { list.home = settings.Home return list.run() diff --git a/cmd/helm/repo_remove.go b/cmd/helm/repo_remove.go index f13b8dadb..98b801151 100644 --- a/cmd/helm/repo_remove.go +++ b/cmd/helm/repo_remove.go @@ -39,7 +39,7 @@ func newRepoRemoveCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "remove [flags] [NAME]", Aliases: []string{"rm"}, - Short: "remove a chart repository", + Short: "Remove a chart repository", RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { return fmt.Errorf("need at least one argument, name of chart repository") diff --git a/cmd/helm/repo_update.go b/cmd/helm/repo_update.go index 592ad4b7d..9d5e04b5d 100644 --- a/cmd/helm/repo_update.go +++ b/cmd/helm/repo_update.go @@ -55,7 +55,7 @@ func newRepoUpdateCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "update", Aliases: []string{"up"}, - Short: "update information of available charts locally from chart repositories", + Short: "Update information of available charts locally from chart repositories", Long: updateDesc, RunE: func(cmd *cobra.Command, args []string) error { u.home = settings.Home @@ -64,7 +64,7 @@ func newRepoUpdateCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.BoolVar(&u.strict, "strict", false, "fail on update warnings") + f.BoolVar(&u.strict, "strict", false, "Fail on update warnings") return cmd } diff --git a/cmd/helm/reset.go b/cmd/helm/reset.go index 887ce34d0..cbe1795db 100644 --- a/cmd/helm/reset.go +++ b/cmd/helm/reset.go @@ -21,6 +21,7 @@ import ( "fmt" "io" "os" + "strings" "github.com/spf13/cobra" @@ -56,10 +57,14 @@ func newResetCmd(client helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "reset", - Short: "uninstalls Tiller from a cluster", + Short: "Uninstalls Tiller from a cluster", Long: resetDesc, PreRunE: func(cmd *cobra.Command, args []string) error { - if err := setupConnection(); !d.force && err != nil { + err := setupConnection() + if !d.force && err != nil { + return err + } + if d.force && err != nil && strings.EqualFold(err.Error(), "could not find tiller") { return err } return nil @@ -79,8 +84,8 @@ func newResetCmd(client helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.BoolVarP(&d.force, "force", "f", false, "forces Tiller uninstall even if there are releases installed, or if Tiller is not in ready state. Releases are not deleted.)") - f.BoolVar(&d.removeHelmHome, "remove-helm-home", false, "if set deletes $HELM_HOME") + f.BoolVarP(&d.force, "force", "f", false, "Forces Tiller uninstall even if there are releases installed, or if Tiller is not in ready state. Releases are not deleted.)") + f.BoolVar(&d.removeHelmHome, "remove-helm-home", false, "If set, deletes $HELM_HOME") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/rollback.go b/cmd/helm/rollback.go index 95a2b2c8c..970afef32 100644 --- a/cmd/helm/rollback.go +++ b/cmd/helm/rollback.go @@ -58,7 +58,7 @@ func newRollbackCmd(c helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "rollback [flags] [RELEASE] [REVISION]", - Short: "roll back a release to a previous revision", + Short: "Rollback a release to a previous revision", Long: rollbackDesc, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -81,14 +81,14 @@ func newRollbackCmd(c helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.BoolVar(&rollback.dryRun, "dry-run", false, "simulate a rollback") - f.BoolVar(&rollback.recreate, "recreate-pods", false, "performs pods restart for the resource if applicable") - f.BoolVar(&rollback.force, "force", false, "force resource update through delete/recreate if needed") - f.BoolVar(&rollback.disableHooks, "no-hooks", false, "prevent hooks from running during rollback") - f.Int64Var(&rollback.timeout, "timeout", 300, "time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") - f.BoolVar(&rollback.wait, "wait", false, "if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout") - f.StringVar(&rollback.description, "description", "", "specify a description for the release") - f.BoolVar(&rollback.cleanupOnFail, "cleanup-on-fail", false, "allow deletion of new resources created in this rollback when rollback failed") + f.BoolVar(&rollback.dryRun, "dry-run", false, "Simulate a rollback") + f.BoolVar(&rollback.recreate, "recreate-pods", false, "Performs pods restart for the resource if applicable") + f.BoolVar(&rollback.force, "force", false, "Force resource update through delete/recreate if needed") + f.BoolVar(&rollback.disableHooks, "no-hooks", false, "Prevent hooks from running during rollback") + f.Int64Var(&rollback.timeout, "timeout", 300, "Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") + f.BoolVar(&rollback.wait, "wait", false, "If set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout") + f.StringVar(&rollback.description, "description", "", "Specify a description for the release") + f.BoolVar(&rollback.cleanupOnFail, "cleanup-on-fail", false, "Allow deletion of new resources created in this rollback when rollback failed") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/search.go b/cmd/helm/search.go index 2e7611609..99ffafbd3 100644 --- a/cmd/helm/search.go +++ b/cmd/helm/search.go @@ -55,7 +55,7 @@ func newSearchCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "search [keyword]", - Short: "search for a keyword in charts", + Short: "Search for a keyword in charts", Long: searchDesc, RunE: func(cmd *cobra.Command, args []string) error { sc.helmhome = settings.Home @@ -64,10 +64,10 @@ func newSearchCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.BoolVarP(&sc.regexp, "regexp", "r", false, "use regular expressions for searching") - f.BoolVarP(&sc.versions, "versions", "l", false, "show the long listing, with each version of each chart on its own line") - f.StringVarP(&sc.version, "version", "v", "", "search using semantic versioning constraints") - f.UintVar(&sc.colWidth, "col-width", 60, "specifies the max column width of output") + f.BoolVarP(&sc.regexp, "regexp", "r", false, "Use regular expressions for searching") + f.BoolVarP(&sc.versions, "versions", "l", false, "Show the long listing, with each version of each chart on its own line") + f.StringVarP(&sc.version, "version", "v", "", "Search using semantic versioning constraints") + f.UintVar(&sc.colWidth, "col-width", 60, "Specifies the max column width of output") return cmd } diff --git a/cmd/helm/serve.go b/cmd/helm/serve.go index 7ddae6ca2..f1ffdcb15 100644 --- a/cmd/helm/serve.go +++ b/cmd/helm/serve.go @@ -53,7 +53,7 @@ func newServeCmd(out io.Writer) *cobra.Command { srv := &serveCmd{out: out} cmd := &cobra.Command{ Use: "serve", - Short: "start a local http web server", + Short: "Start a local http web server", Long: serveDesc, PreRunE: func(cmd *cobra.Command, args []string) error { return srv.complete() @@ -64,9 +64,9 @@ func newServeCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.StringVar(&srv.repoPath, "repo-path", "", "local directory path from which to serve charts") - f.StringVar(&srv.address, "address", "127.0.0.1:8879", "address to listen on") - f.StringVar(&srv.url, "url", "", "external URL of chart repository") + f.StringVar(&srv.repoPath, "repo-path", "", "Local directory path from which to serve charts") + f.StringVar(&srv.address, "address", "127.0.0.1:8879", "Address to listen on") + f.StringVar(&srv.url, "url", "", "External URL of chart repository") return cmd } diff --git a/cmd/helm/status.go b/cmd/helm/status.go index b03453adc..dac91916b 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -61,7 +61,7 @@ func newStatusCmd(client helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "status [flags] RELEASE_NAME", - Short: "displays the status of the named release", + Short: "Displays the status of the named release", Long: statusHelp, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -78,8 +78,8 @@ func newStatusCmd(client helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.Int32Var(&status.version, "revision", 0, "if set, display the status of the named release with revision") - f.StringVarP(&status.outfmt, "output", "o", "", "output the status in the specified format (json or yaml)") + f.Int32Var(&status.version, "revision", 0, "If set, display the status of the named release with revision") + f.StringVarP(&status.outfmt, "output", "o", "", "Output the status in the specified format (json or yaml)") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/template.go b/cmd/helm/template.go index 1838bb758..cef55b4f2 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -86,24 +86,24 @@ func newTemplateCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "template [flags] CHART", - Short: fmt.Sprintf("locally render templates"), + Short: "Locally render templates", Long: templateDesc, RunE: t.run, } f := cmd.Flags() - f.BoolVar(&t.showNotes, "notes", false, "show the computed NOTES.txt file as well") - f.StringVarP(&t.releaseName, "name", "n", "release-name", "release name") - f.BoolVar(&t.releaseIsUpgrade, "is-upgrade", false, "set .Release.IsUpgrade instead of .Release.IsInstall") - f.StringArrayVarP(&t.renderFiles, "execute", "x", []string{}, "only execute the given templates") - f.VarP(&t.valueFiles, "values", "f", "specify values in a YAML file (can specify multiple)") - f.StringVar(&t.namespace, "namespace", "", "namespace to install the release into") - f.StringArrayVar(&t.values, "set", []string{}, "set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - f.StringArrayVar(&t.stringValues, "set-string", []string{}, "set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - f.StringArrayVar(&t.fileValues, "set-file", []string{}, "set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") - f.StringVar(&t.nameTemplate, "name-template", "", "specify template used to name the release") - f.StringVar(&t.kubeVersion, "kube-version", defaultKubeVersion, "kubernetes version used as Capabilities.KubeVersion.Major/Minor") - f.StringVar(&t.outputDir, "output-dir", "", "writes the executed templates to files in output-dir instead of stdout") + f.BoolVar(&t.showNotes, "notes", false, "Show the computed NOTES.txt file as well") + f.StringVarP(&t.releaseName, "name", "n", "release-name", "Release name") + f.BoolVar(&t.releaseIsUpgrade, "is-upgrade", false, "Set .Release.IsUpgrade instead of .Release.IsInstall") + f.StringArrayVarP(&t.renderFiles, "execute", "x", []string{}, "Only execute the given templates") + f.VarP(&t.valueFiles, "values", "f", "Specify values in a YAML file (can specify multiple)") + f.StringVar(&t.namespace, "namespace", "", "Namespace to install the release into") + f.StringArrayVar(&t.values, "set", []string{}, "Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") + f.StringArrayVar(&t.stringValues, "set-string", []string{}, "Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") + f.StringArrayVar(&t.fileValues, "set-file", []string{}, "Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") + f.StringVar(&t.nameTemplate, "name-template", "", "Specify template used to name the release") + f.StringVar(&t.kubeVersion, "kube-version", defaultKubeVersion, "Kubernetes version used as Capabilities.KubeVersion.Major/Minor") + f.StringVar(&t.outputDir, "output-dir", "", "Writes the executed templates to files in output-dir instead of stdout") return cmd } diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 683b1f54d..aa4bebeef 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -128,7 +128,7 @@ func newUpgradeCmd(client helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "upgrade [RELEASE] [CHART]", - Short: "upgrade a release", + Short: "Upgrade a release", Long: upgradeDesc, PreRunE: func(_ *cobra.Command, _ []string) error { return setupConnection() }, RunE: func(cmd *cobra.Command, args []string) error { @@ -152,37 +152,37 @@ func newUpgradeCmd(client helm.Interface, out io.Writer) *cobra.Command { f := cmd.Flags() settings.AddFlagsTLS(f) - f.VarP(&upgrade.valueFiles, "values", "f", "specify values in a YAML file or a URL(can specify multiple)") - f.BoolVar(&upgrade.dryRun, "dry-run", false, "simulate an upgrade") - f.BoolVar(&upgrade.recreate, "recreate-pods", false, "performs pods restart for the resource if applicable") - f.BoolVar(&upgrade.force, "force", false, "force resource update through delete/recreate if needed") - f.StringArrayVar(&upgrade.values, "set", []string{}, "set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - f.StringArrayVar(&upgrade.stringValues, "set-string", []string{}, "set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - f.StringArrayVar(&upgrade.fileValues, "set-file", []string{}, "set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") - f.BoolVar(&upgrade.disableHooks, "disable-hooks", false, "disable pre/post upgrade hooks. DEPRECATED. Use no-hooks") - f.BoolVar(&upgrade.disableHooks, "no-hooks", false, "disable pre/post upgrade hooks") - f.BoolVar(&upgrade.verify, "verify", false, "verify the provenance of the chart before upgrading") - f.StringVar(&upgrade.keyring, "keyring", defaultKeyring(), "path to the keyring that contains public signing keys") - f.BoolVarP(&upgrade.install, "install", "i", false, "if a release by this name doesn't already exist, run an install") - f.StringVar(&upgrade.namespace, "namespace", "", "namespace to install the release into (only used if --install is set). Defaults to the current kube config namespace") - f.StringVar(&upgrade.version, "version", "", "specify the exact chart version to use. If this is not specified, the latest version is used") - f.Int64Var(&upgrade.timeout, "timeout", 300, "time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") - f.BoolVar(&upgrade.resetValues, "reset-values", false, "when upgrading, reset the values to the ones built into the chart") - f.BoolVar(&upgrade.reuseValues, "reuse-values", false, "when upgrading, reuse the last release's values and merge in any overrides from the command line via --set and -f. If '--reset-values' is specified, this is ignored.") - f.BoolVar(&upgrade.wait, "wait", false, "if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout") - f.BoolVar(&upgrade.atomic, "atomic", false, "if set, upgrade process rolls back changes made in case of failed upgrade, also sets --wait flag") - f.StringVar(&upgrade.repoURL, "repo", "", "chart repository url where to locate the requested chart") - f.StringVar(&upgrade.username, "username", "", "chart repository username where to locate the requested chart") - f.StringVar(&upgrade.password, "password", "", "chart repository password where to locate the requested chart") - f.StringVar(&upgrade.certFile, "cert-file", "", "identify HTTPS client using this SSL certificate file") - f.StringVar(&upgrade.keyFile, "key-file", "", "identify HTTPS client using this SSL key file") - f.StringVar(&upgrade.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") - f.BoolVar(&upgrade.devel, "devel", false, "use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored.") - f.BoolVar(&upgrade.subNotes, "render-subchart-notes", false, "render subchart notes along with parent") - f.StringVar(&upgrade.description, "description", "", "specify the description to use for the upgrade, rather than the default") - f.BoolVar(&upgrade.cleanupOnFail, "cleanup-on-fail", false, "allow deletion of new resources created in this upgrade when upgrade failed") - - f.MarkDeprecated("disable-hooks", "use --no-hooks instead") + f.VarP(&upgrade.valueFiles, "values", "f", "Specify values in a YAML file or a URL(can specify multiple)") + f.BoolVar(&upgrade.dryRun, "dry-run", false, "Simulate an upgrade") + f.BoolVar(&upgrade.recreate, "recreate-pods", false, "Performs pods restart for the resource if applicable") + f.BoolVar(&upgrade.force, "force", false, "Force resource update through delete/recreate if needed") + f.StringArrayVar(&upgrade.values, "set", []string{}, "Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") + f.StringArrayVar(&upgrade.stringValues, "set-string", []string{}, "Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") + f.StringArrayVar(&upgrade.fileValues, "set-file", []string{}, "Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") + f.BoolVar(&upgrade.disableHooks, "disable-hooks", false, "Disable pre/post upgrade hooks. DEPRECATED. Use no-hooks") + f.BoolVar(&upgrade.disableHooks, "no-hooks", false, "Disable pre/post upgrade hooks") + f.BoolVar(&upgrade.verify, "verify", false, "Verify the provenance of the chart before upgrading") + f.StringVar(&upgrade.keyring, "keyring", defaultKeyring(), "Path to the keyring that contains public signing keys") + f.BoolVarP(&upgrade.install, "install", "i", false, "If a release by this name doesn't already exist, run an install") + f.StringVar(&upgrade.namespace, "namespace", "", "Namespace to install the release into (only used if --install is set). Defaults to the current kube config namespace") + f.StringVar(&upgrade.version, "version", "", "Specify the exact chart version to use. If this is not specified, the latest version is used") + f.Int64Var(&upgrade.timeout, "timeout", 300, "Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)") + f.BoolVar(&upgrade.resetValues, "reset-values", false, "When upgrading, reset the values to the ones built into the chart") + f.BoolVar(&upgrade.reuseValues, "reuse-values", false, "When upgrading, reuse the last release's values and merge in any overrides from the command line via --set and -f. If '--reset-values' is specified, this is ignored.") + f.BoolVar(&upgrade.wait, "wait", false, "If set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout") + f.BoolVar(&upgrade.atomic, "atomic", false, "If set, upgrade process rolls back changes made in case of failed upgrade, also sets --wait flag") + f.StringVar(&upgrade.repoURL, "repo", "", "Chart repository url where to locate the requested chart") + f.StringVar(&upgrade.username, "username", "", "Chart repository username where to locate the requested chart") + f.StringVar(&upgrade.password, "password", "", "Chart repository password where to locate the requested chart") + f.StringVar(&upgrade.certFile, "cert-file", "", "Identify HTTPS client using this SSL certificate file") + f.StringVar(&upgrade.keyFile, "key-file", "", "Identify HTTPS client using this SSL key file") + f.StringVar(&upgrade.caFile, "ca-file", "", "Verify certificates of HTTPS-enabled servers using this CA bundle") + f.BoolVar(&upgrade.devel, "devel", false, "Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored.") + f.BoolVar(&upgrade.subNotes, "render-subchart-notes", false, "Render subchart notes along with parent") + f.StringVar(&upgrade.description, "description", "", "Specify the description to use for the upgrade, rather than the default") + f.BoolVar(&upgrade.cleanupOnFail, "cleanup-on-fail", false, "Allow deletion of new resources created in this upgrade when upgrade failed") + + f.MarkDeprecated("disable-hooks", "Use --no-hooks instead") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/helm/verify.go b/cmd/helm/verify.go index 6b8e6895d..377f511f6 100644 --- a/cmd/helm/verify.go +++ b/cmd/helm/verify.go @@ -47,7 +47,7 @@ func newVerifyCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "verify [flags] PATH", - Short: "verify that a chart at the given path has been signed and is valid", + Short: "Verify that a chart at the given path has been signed and is valid", Long: verifyDesc, RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { @@ -59,7 +59,7 @@ func newVerifyCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.StringVar(&vc.keyring, "keyring", defaultKeyring(), "keyring containing public keys") + f.StringVar(&vc.keyring, "keyring", defaultKeyring(), "Keyring containing public keys") return cmd } diff --git a/cmd/helm/version.go b/cmd/helm/version.go index a5360ea36..c1a05e0c1 100644 --- a/cmd/helm/version.go +++ b/cmd/helm/version.go @@ -66,7 +66,7 @@ func newVersionCmd(c helm.Interface, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "version", - Short: "print the client/server version information", + Short: "Print the client/server version information", Long: versionDesc, RunE: func(cmd *cobra.Command, args []string) error { // If neither is explicitly set, show both. @@ -78,10 +78,10 @@ func newVersionCmd(c helm.Interface, out io.Writer) *cobra.Command { } f := cmd.Flags() settings.AddFlagsTLS(f) - f.BoolVarP(&version.showClient, "client", "c", false, "client version only") - f.BoolVarP(&version.showServer, "server", "s", false, "server version only") - f.BoolVar(&version.short, "short", false, "print the version number") - f.StringVar(&version.template, "template", "", "template for version string format") + f.BoolVarP(&version.showClient, "client", "c", false, "Client version only") + f.BoolVarP(&version.showServer, "server", "s", false, "Server version only") + f.BoolVar(&version.short, "short", false, "Print the version number") + f.StringVar(&version.template, "template", "", "Template for version string format") // set defaults from environment settings.InitTLS(f) diff --git a/cmd/tiller/tiller.go b/cmd/tiller/tiller.go index ba26cc238..a2ef2764b 100644 --- a/cmd/tiller/tiller.go +++ b/cmd/tiller/tiller.go @@ -66,6 +66,7 @@ const ( storageMemory = "memory" storageConfigMap = "configmap" storageSecret = "secret" + storageSQL = "sql" traceAddr = ":44136" @@ -74,18 +75,23 @@ const ( ) var ( - grpcAddr = flag.String("listen", fmt.Sprintf(":%v", environment.DefaultTillerPort), "address:port to listen on") - probeAddr = flag.String("probe-listen", fmt.Sprintf(":%v", environment.DefaultTillerProbePort), "address:port to listen on for probes") - enableTracing = flag.Bool("trace", false, "enable rpc tracing") - store = flag.String("storage", storageConfigMap, "storage driver to use. One of 'configmap', 'memory', or 'secret'") + grpcAddr = flag.String("listen", fmt.Sprintf(":%v", environment.DefaultTillerPort), "address:port to listen on") + probeAddr = flag.String("probe-listen", fmt.Sprintf(":%v", environment.DefaultTillerProbePort), "address:port to listen on for probes") + enableTracing = flag.Bool("trace", false, "enable rpc tracing") + store = flag.String("storage", storageConfigMap, "storage driver to use. One of 'configmap', 'memory', 'sql' or 'secret'") + + sqlDialect = flag.String("sql-dialect", "postgres", "SQL dialect to use (only postgres is supported for now") + sqlConnectionString = flag.String("sql-connection-string", "", "SQL connection string to use") + remoteReleaseModules = flag.Bool("experimental-release", false, "enable experimental release modules") - tlsEnable = flag.Bool("tls", tlsEnableEnvVarDefault(), "enable TLS") - tlsVerify = flag.Bool("tls-verify", tlsVerifyEnvVarDefault(), "enable TLS and verify remote certificate") - keyFile = flag.String("tls-key", tlsDefaultsFromEnv("tls-key"), "path to TLS private key file") - certFile = flag.String("tls-cert", tlsDefaultsFromEnv("tls-cert"), "path to TLS certificate file") - caCertFile = flag.String("tls-ca-cert", tlsDefaultsFromEnv("tls-ca-cert"), "trust certificates signed by this CA") - maxHistory = flag.Int("history-max", historyMaxFromEnv(), "maximum number of releases kept in release history, with 0 meaning no limit") - printVersion = flag.Bool("version", false, "print the version number") + + tlsEnable = flag.Bool("tls", tlsEnableEnvVarDefault(), "enable TLS") + tlsVerify = flag.Bool("tls-verify", tlsVerifyEnvVarDefault(), "enable TLS and verify remote certificate") + keyFile = flag.String("tls-key", tlsDefaultsFromEnv("tls-key"), "path to TLS private key file") + certFile = flag.String("tls-cert", tlsDefaultsFromEnv("tls-cert"), "path to TLS certificate file") + caCertFile = flag.String("tls-ca-cert", tlsDefaultsFromEnv("tls-ca-cert"), "trust certificates signed by this CA") + maxHistory = flag.Int("history-max", historyMaxFromEnv(), "maximum number of releases kept in release history, with 0 meaning no limit") + printVersion = flag.Bool("version", false, "print the version number") // rootServer is the root gRPC server. // @@ -143,6 +149,18 @@ func start() { env.Releases = storage.Init(secrets) env.Releases.Log = newLogger("storage").Printf + case storageSQL: + sqlDriver, err := driver.NewSQL( + *sqlDialect, + *sqlConnectionString, + newLogger("storage/driver").Printf, + ) + if err != nil { + logger.Fatalf("Cannot initialize SQL storage driver: %v", err) + } + + env.Releases = storage.Init(sqlDriver) + env.Releases.Log = newLogger("storage").Printf } if *maxHistory > 0 { diff --git a/docs/chart_repository.md b/docs/chart_repository.md index e3bbe3c7d..c0b3d0609 100644 --- a/docs/chart_repository.md +++ b/docs/chart_repository.md @@ -182,6 +182,10 @@ Charts repository hosts its charts, so you may want to take a You can also set up chart repositories using JFrog Artifactory. Read more about chart repositories with JFrog Artifactory [here](https://www.jfrog.com/confluence/display/RTF/Helm+Chart+Repositories) +### ProGet + +Helm chart repositories are supported by ProGet. For more information, visit the [Helm repository documentation](https://inedo.com/support/documentation/proget/feeds/helm) on the Inedo website. + ### Github Pages example In a similar way you can create charts repository using GitHub Pages. diff --git a/docs/chart_template_guide/values_files.md b/docs/chart_template_guide/values_files.md index 0a72b6bc2..a6b179970 100644 --- a/docs/chart_template_guide/values_files.md +++ b/docs/chart_template_guide/values_files.md @@ -1,6 +1,6 @@ # Values Files -In the previous section we looked at the built-in objects that Helm templates offer. One of the four built-in objects is `Values`. This object provides access to values passed into the chart. Its contents come from four sources: +In the previous section we looked at the built-in objects that Helm templates offer. One of these built-in objects is `Values`. This object provides access to values passed into the chart. Its contents come from four sources: - The `values.yaml` file in the chart - If this is a subchart, the `values.yaml` file of a parent chart diff --git a/docs/charts_hooks.md b/docs/charts_hooks.md index 3044414c3..9fb08d676 100644 --- a/docs/charts_hooks.md +++ b/docs/charts_hooks.md @@ -49,6 +49,10 @@ The following hooks are defined: have been modified. - crd-install: Adds CRD resources before any other checks are run. This is used only on CRD definitions that are used by other manifests in the chart. +- test-success: Executes when running `helm test` and expects the pod to + return successfully (return code == 0). +- test-failure: Executes when running `helm test` and expects the pod to + fail (return code != 0). ## Hooks and the Release Lifecycle diff --git a/docs/examples/nginx/templates/deployment.yaml b/docs/examples/nginx/templates/deployment.yaml index 5bb30f9af..139d780cd 100644 --- a/docs/examples/nginx/templates/deployment.yaml +++ b/docs/examples/nginx/templates/deployment.yaml @@ -1,4 +1,4 @@ -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: # This uses a "fullname" template (see _helpers) diff --git a/docs/helm/helm.md b/docs/helm/helm.md index b57be9f9d..ef9b729ab 100644 --- a/docs/helm/helm.md +++ b/docs/helm/helm.md @@ -15,68 +15,68 @@ It will also set up any necessary local configuration. Common actions from this point include: -- helm search: search for charts -- helm fetch: download a chart to your local directory to view -- helm install: upload the chart to Kubernetes -- helm list: list releases of charts +- helm search: Search for charts +- helm fetch: Download a chart to your local directory to view +- helm install: Upload the chart to Kubernetes +- helm list: List releases of charts Environment: -- $HELM_HOME: set an alternative location for Helm files. By default, these are stored in ~/.helm -- $HELM_HOST: set an alternative Tiller host. The format is host:port -- $HELM_NO_PLUGINS: disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins. -- $TILLER_NAMESPACE: set an alternative Tiller namespace (default "kube-system") -- $KUBECONFIG: set an alternative Kubernetes configuration file (default "~/.kube/config") -- $HELM_TLS_CA_CERT: path to TLS CA certificate used to verify the Helm client and Tiller server certificates (default "$HELM_HOME/ca.pem") -- $HELM_TLS_CERT: path to TLS client certificate file for authenticating to Tiller (default "$HELM_HOME/cert.pem") -- $HELM_TLS_KEY: path to TLS client key file for authenticating to Tiller (default "$HELM_HOME/key.pem") -- $HELM_TLS_ENABLE: enable TLS connection between Helm and Tiller (default "false") -- $HELM_TLS_VERIFY: enable TLS connection between Helm and Tiller and verify Tiller server certificate (default "false") -- $HELM_TLS_HOSTNAME: the hostname or IP address used to verify the Tiller server certificate (default "127.0.0.1") -- $HELM_KEY_PASSPHRASE: set HELM_KEY_PASSPHRASE to the passphrase of your PGP private key. If set, you will not be prompted for the passphrase while signing helm charts +- $HELM_HOME: Set an alternative location for Helm files. By default, these are stored in ~/.helm +- $HELM_HOST: Set an alternative Tiller host. The format is host:port +- $HELM_NO_PLUGINS: Disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins. +- $TILLER_NAMESPACE: Set an alternative Tiller namespace (default "kube-system") +- $KUBECONFIG: Set an alternative Kubernetes configuration file (default "~/.kube/config") +- $HELM_TLS_CA_CERT: Path to TLS CA certificate used to verify the Helm client and Tiller server certificates (default "$HELM_HOME/ca.pem") +- $HELM_TLS_CERT: Path to TLS client certificate file for authenticating to Tiller (default "$HELM_HOME/cert.pem") +- $HELM_TLS_KEY: Path to TLS client key file for authenticating to Tiller (default "$HELM_HOME/key.pem") +- $HELM_TLS_ENABLE: Enable TLS connection between Helm and Tiller (default "false") +- $HELM_TLS_VERIFY: Enable TLS connection between Helm and Tiller and verify Tiller server certificate (default "false") +- $HELM_TLS_HOSTNAME: The hostname or IP address used to verify the Tiller server certificate (default "127.0.0.1") +- $HELM_KEY_PASSPHRASE: Set HELM_KEY_PASSPHRASE to the passphrase of your PGP private key. If set, you will not be prompted for the passphrase while signing helm charts ### Options ``` - --debug enable verbose output + --debug Enable verbose output -h, --help help for helm - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm completion](helm_completion.md) - Generate autocompletions script for the specified shell (bash or zsh) -* [helm create](helm_create.md) - create a new chart with the given name -* [helm delete](helm_delete.md) - given a release name, delete the release from Kubernetes -* [helm dependency](helm_dependency.md) - manage a chart's dependencies -* [helm fetch](helm_fetch.md) - download a chart from a repository and (optionally) unpack it in local directory -* [helm get](helm_get.md) - download a named release -* [helm history](helm_history.md) - fetch release history -* [helm home](helm_home.md) - displays the location of HELM_HOME -* [helm init](helm_init.md) - initialize Helm on both client and server -* [helm inspect](helm_inspect.md) - inspect a chart -* [helm install](helm_install.md) - install a chart archive -* [helm lint](helm_lint.md) - examines a chart for possible issues -* [helm list](helm_list.md) - list releases -* [helm package](helm_package.md) - package a chart directory into a chart archive -* [helm plugin](helm_plugin.md) - add, list, or remove Helm plugins -* [helm repo](helm_repo.md) - add, list, remove, update, and index chart repositories -* [helm reset](helm_reset.md) - uninstalls Tiller from a cluster -* [helm rollback](helm_rollback.md) - roll back a release to a previous revision -* [helm search](helm_search.md) - search for a keyword in charts -* [helm serve](helm_serve.md) - start a local http web server -* [helm status](helm_status.md) - displays the status of the named release -* [helm template](helm_template.md) - locally render templates -* [helm test](helm_test.md) - test a release -* [helm upgrade](helm_upgrade.md) - upgrade a release -* [helm verify](helm_verify.md) - verify that a chart at the given path has been signed and is valid -* [helm version](helm_version.md) - print the client/server version information - -###### Auto generated by spf13/cobra on 25-Apr-2019 +* [helm create](helm_create.md) - Create a new chart with the given name +* [helm delete](helm_delete.md) - Given a release name, delete the release from Kubernetes +* [helm dependency](helm_dependency.md) - Manage a chart's dependencies +* [helm fetch](helm_fetch.md) - Download a chart from a repository and (optionally) unpack it in local directory +* [helm get](helm_get.md) - Download a named release +* [helm history](helm_history.md) - Fetch release history +* [helm home](helm_home.md) - Displays the location of HELM_HOME +* [helm init](helm_init.md) - Initialize Helm on both client and server +* [helm inspect](helm_inspect.md) - Inspect a chart +* [helm install](helm_install.md) - Install a chart archive +* [helm lint](helm_lint.md) - Examines a chart for possible issues +* [helm list](helm_list.md) - List releases +* [helm package](helm_package.md) - Package a chart directory into a chart archive +* [helm plugin](helm_plugin.md) - Add, list, or remove Helm plugins +* [helm repo](helm_repo.md) - Add, list, remove, update, and index chart repositories +* [helm reset](helm_reset.md) - Uninstalls Tiller from a cluster +* [helm rollback](helm_rollback.md) - Rollback a release to a previous revision +* [helm search](helm_search.md) - Search for a keyword in charts +* [helm serve](helm_serve.md) - Start a local http web server +* [helm status](helm_status.md) - Displays the status of the named release +* [helm template](helm_template.md) - Locally render templates +* [helm test](helm_test.md) - Test a release +* [helm upgrade](helm_upgrade.md) - Upgrade a release +* [helm verify](helm_verify.md) - Verify that a chart at the given path has been signed and is valid +* [helm version](helm_version.md) - Print the client/server version information + +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_completion.md b/docs/helm/helm_completion.md index 440393076..01f7fedb8 100644 --- a/docs/helm/helm_completion.md +++ b/docs/helm/helm_completion.md @@ -29,17 +29,17 @@ helm completion SHELL [flags] ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_create.md b/docs/helm/helm_create.md index 2dc45a77c..0bf526a22 100644 --- a/docs/helm/helm_create.md +++ b/docs/helm/helm_create.md @@ -1,12 +1,13 @@ ## helm create -create a new chart with the given name +Create a new chart with the given name ### Synopsis This command creates a chart directory along with the common files and -directories used in a chart. +directories used in a chart. It provides a basic example and is not +meant to cover all Kubernetes resources. For example, 'helm create foo' will create a directory structure that looks something like this: @@ -30,6 +31,10 @@ do not exist, Helm will attempt to create them as it goes. If the given destination exists and there are files in that directory, conflicting files will be overwritten, but other files will be left alone. +The chart that is created by invoking this command contains a Deployment, Ingress +and a Service. To use other Kubernetes resources with your chart, refer to +[The Chart Template Developer's Guide](https://helm.sh/docs/chart_template_guide). + ``` helm create NAME [flags] @@ -39,23 +44,23 @@ helm create NAME [flags] ``` -h, --help help for create - -p, --starter string the named Helm starter scaffold + -p, --starter string The named Helm starter scaffold ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 18-Sep-2018 +###### Auto generated by spf13/cobra on 5-Jun-2019 diff --git a/docs/helm/helm_delete.md b/docs/helm/helm_delete.md index 3c6a46844..afe8852a9 100644 --- a/docs/helm/helm_delete.md +++ b/docs/helm/helm_delete.md @@ -1,6 +1,6 @@ ## helm delete -given a release name, delete the release from Kubernetes +Given a release name, delete the release from Kubernetes ### Synopsis @@ -19,34 +19,34 @@ helm delete [flags] RELEASE_NAME [...] ### Options ``` - --description string specify a description for the release - --dry-run simulate a delete + --description string Specify a description for the release + --dry-run Simulate a delete -h, --help help for delete - --no-hooks prevent hooks from running during deletion - --purge remove the release from the store and make its name free for later use - --timeout int time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --no-hooks Prevent hooks from running during deletion + --purge Remove the release from the store and make its name free for later use + --timeout int Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 10-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_dependency.md b/docs/helm/helm_dependency.md index 8c7d7d65f..3a508764c 100644 --- a/docs/helm/helm_dependency.md +++ b/docs/helm/helm_dependency.md @@ -1,6 +1,6 @@ ## helm dependency -manage a chart's dependencies +Manage a chart's dependencies ### Synopsis @@ -62,20 +62,20 @@ for this case. ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -* [helm dependency build](helm_dependency_build.md) - rebuild the charts/ directory based on the requirements.lock file -* [helm dependency list](helm_dependency_list.md) - list the dependencies for the given chart -* [helm dependency update](helm_dependency_update.md) - update charts/ based on the contents of requirements.yaml +* [helm dependency build](helm_dependency_build.md) - Rebuild the charts/ directory based on the requirements.lock file +* [helm dependency list](helm_dependency_list.md) - List the dependencies for the given chart +* [helm dependency update](helm_dependency_update.md) - Update charts/ based on the contents of requirements.yaml -###### Auto generated by spf13/cobra on 26-Mar-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_dependency_build.md b/docs/helm/helm_dependency_build.md index 1df32d9ab..281b03418 100644 --- a/docs/helm/helm_dependency_build.md +++ b/docs/helm/helm_dependency_build.md @@ -1,6 +1,6 @@ ## helm dependency build -rebuild the charts/ directory based on the requirements.lock file +Rebuild the charts/ directory based on the requirements.lock file ### Synopsis @@ -14,6 +14,7 @@ If no lock file is found, 'helm dependency build' will mirror the behavior of the 'helm dependency update' command. This means it will update the on-disk dependencies to mirror the requirements.yaml file and generate a lock file. + ``` helm dependency build [flags] CHART ``` @@ -22,24 +23,24 @@ helm dependency build [flags] CHART ``` -h, --help help for build - --keyring string keyring containing public keys (default "~/.gnupg/pubring.gpg") - --verify verify the packages against signatures + --keyring string Keyring containing public keys (default "~/.gnupg/pubring.gpg") + --verify Verify the packages against signatures ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm dependency](helm_dependency.md) - manage a chart's dependencies +* [helm dependency](helm_dependency.md) - Manage a chart's dependencies -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_dependency_list.md b/docs/helm/helm_dependency_list.md index da754c5d1..449aad202 100644 --- a/docs/helm/helm_dependency_list.md +++ b/docs/helm/helm_dependency_list.md @@ -1,6 +1,6 @@ ## helm dependency list -list the dependencies for the given chart +List the dependencies for the given chart ### Synopsis @@ -27,17 +27,17 @@ helm dependency list [flags] CHART ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm dependency](helm_dependency.md) - manage a chart's dependencies +* [helm dependency](helm_dependency.md) - Manage a chart's dependencies -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_dependency_update.md b/docs/helm/helm_dependency_update.md index 88bf3fafd..2dc5a03e1 100644 --- a/docs/helm/helm_dependency_update.md +++ b/docs/helm/helm_dependency_update.md @@ -1,6 +1,6 @@ ## helm dependency update -update charts/ based on the contents of requirements.yaml +Update charts/ based on the contents of requirements.yaml ### Synopsis @@ -27,25 +27,25 @@ helm dependency update [flags] CHART ``` -h, --help help for update - --keyring string keyring containing public keys (default "~/.gnupg/pubring.gpg") - --skip-refresh do not refresh the local repository cache - --verify verify the packages against signatures + --keyring string Keyring containing public keys (default "~/.gnupg/pubring.gpg") + --skip-refresh Do not refresh the local repository cache + --verify Verify the packages against signatures ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm dependency](helm_dependency.md) - manage a chart's dependencies +* [helm dependency](helm_dependency.md) - Manage a chart's dependencies -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_fetch.md b/docs/helm/helm_fetch.md index 81c0a9596..056068786 100644 --- a/docs/helm/helm_fetch.md +++ b/docs/helm/helm_fetch.md @@ -1,6 +1,6 @@ ## helm fetch -download a chart from a repository and (optionally) unpack it in local directory +Download a chart from a repository and (optionally) unpack it in local directory ### Synopsis @@ -26,37 +26,37 @@ helm fetch [flags] [chart URL | repo/chartname] [...] ### Options ``` - --ca-file string verify certificates of HTTPS-enabled servers using this CA bundle - --cert-file string identify HTTPS client using this SSL certificate file - -d, --destination string location to write the chart. If this and tardir are specified, tardir is appended to this (default ".") - --devel use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. + --ca-file string Verify certificates of HTTPS-enabled servers using this CA bundle + --cert-file string Identify HTTPS client using this SSL certificate file + -d, --destination string Location to write the chart. If this and tardir are specified, tardir is appended to this (default ".") + --devel Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. -h, --help help for fetch - --key-file string identify HTTPS client using this SSL key file - --keyring string keyring containing public keys (default "~/.gnupg/pubring.gpg") - --password string chart repository password - --prov fetch the provenance file, but don't perform verification - --repo string chart repository url where to locate the requested chart - --untar if set to true, will untar the chart after downloading it - --untardir string if untar is specified, this flag specifies the name of the directory into which the chart is expanded (default ".") - --username string chart repository username - --verify verify the package against its signature - --version string specific version of a chart. Without this, the latest version is fetched + --key-file string Identify HTTPS client using this SSL key file + --keyring string Keyring containing public keys (default "~/.gnupg/pubring.gpg") + --password string Chart repository password + --prov Fetch the provenance file, but don't perform verification + --repo string Chart repository url where to locate the requested chart + --untar If set to true, will untar the chart after downloading it + --untardir string If untar is specified, this flag specifies the name of the directory into which the chart is expanded (default ".") + --username string Chart repository username + --verify Verify the package against its signature + --version string Specific version of a chart. Without this, the latest version is fetched ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_get.md b/docs/helm/helm_get.md index 3ce0ff191..3d2dca608 100644 --- a/docs/helm/helm_get.md +++ b/docs/helm/helm_get.md @@ -1,6 +1,6 @@ ## helm get -download a named release +Download a named release ### Synopsis @@ -25,34 +25,34 @@ helm get [flags] RELEASE_NAME ``` -h, --help help for get - --revision int32 get the named release with revision - --template string go template for formatting the output, eg: {{.Release.Name}} - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --revision int32 Get the named release with revision + --template string Go template for formatting the output, eg: {{.Release.Name}} + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -* [helm get hooks](helm_get_hooks.md) - download all hooks for a named release -* [helm get manifest](helm_get_manifest.md) - download the manifest for a named release -* [helm get notes](helm_get_notes.md) - displays the notes of the named release -* [helm get values](helm_get_values.md) - download the values file for a named release +* [helm get hooks](helm_get_hooks.md) - Download all hooks for a named release +* [helm get manifest](helm_get_manifest.md) - Download the manifest for a named release +* [helm get notes](helm_get_notes.md) - Displays the notes of the named release +* [helm get values](helm_get_values.md) - Download the values file for a named release -###### Auto generated by spf13/cobra on 25-Mar-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_get_hooks.md b/docs/helm/helm_get_hooks.md index d7097fd59..716e0f692 100644 --- a/docs/helm/helm_get_hooks.md +++ b/docs/helm/helm_get_hooks.md @@ -1,6 +1,6 @@ ## helm get hooks -download all hooks for a named release +Download all hooks for a named release ### Synopsis @@ -18,29 +18,29 @@ helm get hooks [flags] RELEASE_NAME ``` -h, --help help for hooks - --revision int32 get the named release with revision - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --revision int32 Get the named release with revision + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm get](helm_get.md) - download a named release +* [helm get](helm_get.md) - Download a named release -###### Auto generated by spf13/cobra on 10-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_get_manifest.md b/docs/helm/helm_get_manifest.md index 60bfeac0b..ec3987108 100644 --- a/docs/helm/helm_get_manifest.md +++ b/docs/helm/helm_get_manifest.md @@ -1,6 +1,6 @@ ## helm get manifest -download the manifest for a named release +Download the manifest for a named release ### Synopsis @@ -20,29 +20,29 @@ helm get manifest [flags] RELEASE_NAME ``` -h, --help help for manifest - --revision int32 get the named release with revision - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --revision int32 Get the named release with revision + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm get](helm_get.md) - download a named release +* [helm get](helm_get.md) - Download a named release -###### Auto generated by spf13/cobra on 10-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_get_notes.md b/docs/helm/helm_get_notes.md index 076aaaa59..b7859533f 100644 --- a/docs/helm/helm_get_notes.md +++ b/docs/helm/helm_get_notes.md @@ -1,6 +1,6 @@ ## helm get notes -displays the notes of the named release +Displays the notes of the named release ### Synopsis @@ -16,29 +16,29 @@ helm get notes [flags] RELEASE_NAME ``` -h, --help help for notes - --revision int32 get the notes of the named release with revision - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --revision int32 Get the notes of the named release with revision + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm get](helm_get.md) - download a named release +* [helm get](helm_get.md) - Download a named release -###### Auto generated by spf13/cobra on 1-Sep-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_get_values.md b/docs/helm/helm_get_values.md index 87d21b954..ab4a4494e 100644 --- a/docs/helm/helm_get_values.md +++ b/docs/helm/helm_get_values.md @@ -1,6 +1,6 @@ ## helm get values -download the values file for a named release +Download the values file for a named release ### Synopsis @@ -15,32 +15,32 @@ helm get values [flags] RELEASE_NAME ### Options ``` - -a, --all dump all (computed) values + -a, --all Dump all (computed) values -h, --help help for values - --output string output the specified format (json or yaml) (default "yaml") - --revision int32 get the named release with revision - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --output string Output the specified format (json or yaml) (default "yaml") + --revision int32 Get the named release with revision + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm get](helm_get.md) - download a named release +* [helm get](helm_get.md) - Download a named release -###### Auto generated by spf13/cobra on 7-Sep-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_history.md b/docs/helm/helm_history.md index 7f0a68928..2c93adebc 100755 --- a/docs/helm/helm_history.md +++ b/docs/helm/helm_history.md @@ -1,6 +1,6 @@ ## helm history -fetch release history +Fetch release history ### Synopsis @@ -27,32 +27,32 @@ helm history [flags] RELEASE_NAME ### Options ``` - --col-width uint specifies the max column width of output (default 60) + --col-width uint Specifies the max column width of output (default 60) -h, --help help for history - --max int32 maximum number of revision to include in history (default 256) - -o, --output string prints the output in the specified format (json|table|yaml) (default "table") - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --max int32 Maximum number of revisions to include in history (default 256) + -o, --output string Prints the output in the specified format (json|table|yaml) (default "table") + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 10-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_home.md b/docs/helm/helm_home.md index 192302424..050251cc1 100644 --- a/docs/helm/helm_home.md +++ b/docs/helm/helm_home.md @@ -1,6 +1,6 @@ ## helm home -displays the location of HELM_HOME +Displays the location of HELM_HOME ### Synopsis @@ -22,17 +22,17 @@ helm home [flags] ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_init.md b/docs/helm/helm_init.md index 72fd9e86b..64f8bcf62 100644 --- a/docs/helm/helm_init.md +++ b/docs/helm/helm_init.md @@ -1,6 +1,6 @@ ## helm init -initialize Helm on both client and server +Initialize Helm on both client and server ### Synopsis @@ -32,47 +32,47 @@ helm init [flags] ### Options ``` - --automount-service-account-token auto-mount the given service account to tiller (default true) - --canary-image use the canary Tiller image - -c, --client-only if set does not install Tiller - --dry-run do not install local or remote - --force-upgrade force upgrade of Tiller to the current helm version + --automount-service-account-token Auto-mount the given service account to tiller (default true) + --canary-image Use the canary Tiller image + -c, --client-only If set does not install Tiller + --dry-run Do not install local or remote + --force-upgrade Force upgrade of Tiller to the current helm version -h, --help help for init - --history-max int limit the maximum number of revisions saved per release. Use 0 for no limit. + --history-max int Limit the maximum number of revisions saved per release. Use 0 for no limit. --local-repo-url string URL for local repository (default "http://127.0.0.1:8879/charts") - --net-host install Tiller with net=host - --node-selectors string labels to specify the node on which Tiller is installed (app=tiller,helm=rocks) - -o, --output OutputFormat skip installation and output Tiller's manifest in specified format (json or yaml) - --override stringArray override values for the Tiller Deployment manifest (can specify multiple or separate values with commas: key1=val1,key2=val2) - --replicas int amount of tiller instances to run on the cluster (default 1) - --service-account string name of service account - --skip-refresh do not refresh (download) the local repository cache + --net-host Install Tiller with net=host + --node-selectors string Labels to specify the node on which Tiller is installed (app=tiller,helm=rocks) + -o, --output OutputFormat Skip installation and output Tiller's manifest in specified format (json or yaml) + --override stringArray Override values for the Tiller Deployment manifest (can specify multiple or separate values with commas: key1=val1,key2=val2) + --replicas int Amount of tiller instances to run on the cluster (default 1) + --service-account string Name of service account + --skip-refresh Do not refresh (download) the local repository cache --stable-repo-url string URL for stable repository (default "https://kubernetes-charts.storage.googleapis.com") - -i, --tiller-image string override Tiller image - --tiller-tls install Tiller with TLS enabled - --tiller-tls-cert string path to TLS certificate file to install with Tiller - --tiller-tls-hostname string the server name used to verify the hostname on the returned certificates from Tiller - --tiller-tls-key string path to TLS key file to install with Tiller - --tiller-tls-verify install Tiller with TLS enabled and to verify remote certificates - --tls-ca-cert string path to CA root certificate - --upgrade upgrade if Tiller is already installed - --wait block until Tiller is running and ready to receive requests + -i, --tiller-image string Override Tiller image + --tiller-tls Install Tiller with TLS enabled + --tiller-tls-cert string Path to TLS certificate file to install with Tiller + --tiller-tls-hostname string The server name used to verify the hostname on the returned certificates from Tiller + --tiller-tls-key string Path to TLS key file to install with Tiller + --tiller-tls-verify Install Tiller with TLS enabled and to verify remote certificates + --tls-ca-cert string Path to CA root certificate + --upgrade Upgrade if Tiller is already installed + --wait Block until Tiller is running and ready to receive requests ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 4-Sep-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_inspect.md b/docs/helm/helm_inspect.md index 8bdf1092d..d5845c78c 100644 --- a/docs/helm/helm_inspect.md +++ b/docs/helm/helm_inspect.md @@ -1,6 +1,6 @@ ## helm inspect -inspect a chart +Inspect a chart ### Synopsis @@ -18,29 +18,29 @@ helm inspect [CHART] [flags] ### Options ``` - --ca-file string chart repository url where to locate the requested chart - --cert-file string verify certificates of HTTPS-enabled servers using this CA bundle - --devel use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. + --ca-file string Chart repository url where to locate the requested chart + --cert-file string Verify certificates of HTTPS-enabled servers using this CA bundle + --devel Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. -h, --help help for inspect - --key-file string identify HTTPS client using this SSL key file - --keyring string path to the keyring containing public verification keys (default "~/.gnupg/pubring.gpg") - --password string chart repository password where to locate the requested chart - --repo string chart repository url where to locate the requested chart - --username string chart repository username where to locate the requested chart - --verify verify the provenance data for this chart - --version string version of the chart. By default, the newest chart is shown + --key-file string Identify HTTPS client using this SSL key file + --keyring string Path to the keyring containing public verification keys (default "~/.gnupg/pubring.gpg") + --password string Chart repository password where to locate the requested chart + --repo string Chart repository url where to locate the requested chart + --username string Chart repository username where to locate the requested chart + --verify Verify the provenance data for this chart + --version string Version of the chart. By default, the newest chart is shown ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO @@ -50,4 +50,4 @@ helm inspect [CHART] [flags] * [helm inspect readme](helm_inspect_readme.md) - shows inspect readme * [helm inspect values](helm_inspect_values.md) - shows inspect values -###### Auto generated by spf13/cobra on 8-Jan-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_inspect_chart.md b/docs/helm/helm_inspect_chart.md index 1cd13fc72..447de556b 100644 --- a/docs/helm/helm_inspect_chart.md +++ b/docs/helm/helm_inspect_chart.md @@ -16,33 +16,33 @@ helm inspect chart [CHART] [flags] ### Options ``` - --ca-file string chart repository url where to locate the requested chart - --cert-file string verify certificates of HTTPS-enabled servers using this CA bundle - --devel use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. + --ca-file string Chart repository url where to locate the requested chart + --cert-file string Verify certificates of HTTPS-enabled servers using this CA bundle + --devel Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. -h, --help help for chart - --key-file string identify HTTPS client using this SSL key file - --keyring string path to the keyring containing public verification keys (default "~/.gnupg/pubring.gpg") - --password string chart repository password where to locate the requested chart - --repo string chart repository url where to locate the requested chart - --username string chart repository username where to locate the requested chart - --verify verify the provenance data for this chart - --version string version of the chart. By default, the newest chart is shown + --key-file string Identify HTTPS client using this SSL key file + --keyring string Path to the keyring containing public verification keys (default "~/.gnupg/pubring.gpg") + --password string Chart repository password where to locate the requested chart + --repo string Chart repository url where to locate the requested chart + --username string Chart repository username where to locate the requested chart + --verify Verify the provenance data for this chart + --version string Version of the chart. By default, the newest chart is shown ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm inspect](helm_inspect.md) - inspect a chart +* [helm inspect](helm_inspect.md) - Inspect a chart -###### Auto generated by spf13/cobra on 8-Jan-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_inspect_readme.md b/docs/helm/helm_inspect_readme.md index 9570d19d6..5cfe73de2 100644 --- a/docs/helm/helm_inspect_readme.md +++ b/docs/helm/helm_inspect_readme.md @@ -16,31 +16,31 @@ helm inspect readme [CHART] [flags] ### Options ``` - --ca-file string chart repository url where to locate the requested chart - --cert-file string verify certificates of HTTPS-enabled servers using this CA bundle - --devel use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. + --ca-file string Chart repository url where to locate the requested chart + --cert-file string Verify certificates of HTTPS-enabled servers using this CA bundle + --devel Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. -h, --help help for readme - --key-file string identify HTTPS client using this SSL key file - --keyring string path to the keyring containing public verification keys (default "~/.gnupg/pubring.gpg") - --repo string chart repository url where to locate the requested chart - --verify verify the provenance data for this chart - --version string version of the chart. By default, the newest chart is shown + --key-file string Identify HTTPS client using this SSL key file + --keyring string Path to the keyring containing public verification keys (default "~/.gnupg/pubring.gpg") + --repo string Chart repository url where to locate the requested chart + --verify Verify the provenance data for this chart + --version string Version of the chart. By default, the newest chart is shown ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm inspect](helm_inspect.md) - inspect a chart +* [helm inspect](helm_inspect.md) - Inspect a chart -###### Auto generated by spf13/cobra on 8-Jan-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_inspect_values.md b/docs/helm/helm_inspect_values.md index a634134dd..34d76a7ba 100644 --- a/docs/helm/helm_inspect_values.md +++ b/docs/helm/helm_inspect_values.md @@ -16,33 +16,33 @@ helm inspect values [CHART] [flags] ### Options ``` - --ca-file string chart repository url where to locate the requested chart - --cert-file string verify certificates of HTTPS-enabled servers using this CA bundle - --devel use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. + --ca-file string Chart repository url where to locate the requested chart + --cert-file string Verify certificates of HTTPS-enabled servers using this CA bundle + --devel Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. -h, --help help for values - --key-file string identify HTTPS client using this SSL key file - --keyring string path to the keyring containing public verification keys (default "~/.gnupg/pubring.gpg") - --password string chart repository password where to locate the requested chart - --repo string chart repository url where to locate the requested chart - --username string chart repository username where to locate the requested chart - --verify verify the provenance data for this chart - --version string version of the chart. By default, the newest chart is shown + --key-file string Identify HTTPS client using this SSL key file + --keyring string Path to the keyring containing public verification keys (default "~/.gnupg/pubring.gpg") + --password string Chart repository password where to locate the requested chart + --repo string Chart repository url where to locate the requested chart + --username string Chart repository username where to locate the requested chart + --verify Verify the provenance data for this chart + --version string Version of the chart. By default, the newest chart is shown ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm inspect](helm_inspect.md) - inspect a chart +* [helm inspect](helm_inspect.md) - Inspect a chart -###### Auto generated by spf13/cobra on 8-Jan-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_install.md b/docs/helm/helm_install.md index 12ae81b78..d988dfcdd 100644 --- a/docs/helm/helm_install.md +++ b/docs/helm/helm_install.md @@ -1,6 +1,6 @@ ## helm install -install a chart archive +Install a chart archive ### Synopsis @@ -78,56 +78,56 @@ helm install [CHART] [flags] ### Options ``` - --atomic if set, installation process purges chart on fail, also sets --wait flag - --ca-file string verify certificates of HTTPS-enabled servers using this CA bundle - --cert-file string identify HTTPS client using this SSL certificate file - --dep-up run helm dependency update before installing the chart - --description string specify a description for the release - --devel use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. - --dry-run simulate an install + --atomic If set, installation process purges chart on fail, also sets --wait flag + --ca-file string Verify certificates of HTTPS-enabled servers using this CA bundle + --cert-file string Identify HTTPS client using this SSL certificate file + --dep-up Run helm dependency update before installing the chart + --description string Specify a description for the release + --devel Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. + --dry-run Simulate an install -h, --help help for install - --key-file string identify HTTPS client using this SSL key file - --keyring string location of public keys used for verification (default "~/.gnupg/pubring.gpg") - -n, --name string release name. If unspecified, it will autogenerate one for you - --name-template string specify template used to name the release - --namespace string namespace to install the release into. Defaults to the current kube config namespace. - --no-crd-hook prevent CRD hooks from running, but run other hooks - --no-hooks prevent hooks from running during install - --password string chart repository password where to locate the requested chart - --render-subchart-notes render subchart notes along with the parent - --replace re-use the given name, even if that name is already used. This is unsafe in production - --repo string chart repository url where to locate the requested chart - --set stringArray set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --set-file stringArray set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2) - --set-string stringArray set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --timeout int time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote - --username string chart repository username where to locate the requested chart - -f, --values valueFiles specify values in a YAML file or a URL(can specify multiple) (default []) - --verify verify the package before installing it - --version string specify the exact chart version to install. If this is not specified, the latest version is installed - --wait if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout + --key-file string Identify HTTPS client using this SSL key file + --keyring string Location of public keys used for verification (default "~/.gnupg/pubring.gpg") + -n, --name string The release name. If unspecified, it will autogenerate one for you + --name-template string Specify template used to name the release + --namespace string Namespace to install the release into. Defaults to the current kube config namespace. + --no-crd-hook Prevent CRD hooks from running, but run other hooks + --no-hooks Prevent hooks from running during install + --password string Chart repository password where to locate the requested chart + --render-subchart-notes Render subchart notes along with the parent + --replace Re-use the given name, even if that name is already used. This is unsafe in production + --repo string Chart repository url where to locate the requested chart + --set stringArray Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) + --set-file stringArray Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2) + --set-string stringArray Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) + --timeout int Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote + --username string Chart repository username where to locate the requested chart + -f, --values valueFiles Specify values in a YAML file or a URL(can specify multiple) (default []) + --verify Verify the package before installing it + --version string Specify the exact chart version to install. If this is not specified, the latest version is installed + --wait If set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 28-Jan-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_lint.md b/docs/helm/helm_lint.md index bf168184e..e341975b7 100644 --- a/docs/helm/helm_lint.md +++ b/docs/helm/helm_lint.md @@ -1,6 +1,6 @@ ## helm lint -examines a chart for possible issues +Examines a chart for possible issues ### Synopsis @@ -21,28 +21,28 @@ helm lint [flags] PATH ``` -h, --help help for lint - --namespace string namespace to put the release into (default "default") - --set stringArray set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --set-file stringArray set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2) - --set-string stringArray set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --strict fail on lint warnings - -f, --values valueFiles specify values in a YAML file (can specify multiple) (default []) + --namespace string Namespace to put the release into (default "default") + --set stringArray Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) + --set-file stringArray Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2) + --set-string stringArray Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) + --strict Fail on lint warnings + -f, --values valueFiles Specify values in a YAML file (can specify multiple) (default []) ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_list.md b/docs/helm/helm_list.md index 5087c8a59..568a3c7be 100755 --- a/docs/helm/helm_list.md +++ b/docs/helm/helm_list.md @@ -1,6 +1,6 @@ ## helm list -list releases +List releases ### Synopsis @@ -38,44 +38,44 @@ helm list [flags] [FILTER] ### Options ``` - -a, --all show all releases, not just the ones marked DEPLOYED - -c, --chart-name sort by chart name - --col-width uint specifies the max column width of output (default 60) - -d, --date sort by release date - --deleted show deleted releases - --deleting show releases that are currently being deleted - --deployed show deployed releases. If no other is specified, this will be automatically enabled - --failed show failed releases + -a, --all Show all releases, not just the ones marked DEPLOYED + -c, --chart-name Sort by chart name + --col-width uint Specifies the max column width of output (default 60) + -d, --date Sort by release date + --deleted Show deleted releases + --deleting Show releases that are currently being deleted + --deployed Show deployed releases. If no other is specified, this will be automatically enabled + --failed Show failed releases -h, --help help for list - -m, --max int maximum number of releases to fetch (default 256) - --namespace string show releases within a specific namespace - -o, --offset string next release name in the list, used to offset from start value - --output string output the specified format (json or yaml) - --pending show pending releases - -r, --reverse reverse the sort order - -q, --short output short (quiet) listing format - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + -m, --max int Maximum number of releases to fetch (default 256) + --namespace string Show releases within a specific namespace + -o, --offset string Next release name in the list, used to offset from start value + --output string Output the specified format (json or yaml) + --pending Show pending releases + -r, --reverse Reverse the sort order + -q, --short Output short (quiet) listing format + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Sep-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_package.md b/docs/helm/helm_package.md index b772fa70c..a3db8bec8 100644 --- a/docs/helm/helm_package.md +++ b/docs/helm/helm_package.md @@ -1,6 +1,6 @@ ## helm package -package a chart directory into a chart archive +Package a chart directory into a chart archive ### Synopsis @@ -22,31 +22,31 @@ helm package [flags] [CHART_PATH] [...] ### Options ``` - --app-version string set the appVersion on the chart to this version - -u, --dependency-update update dependencies from "requirements.yaml" to dir "charts/" before packaging - -d, --destination string location to write the chart. (default ".") + --app-version string Set the appVersion on the chart to this version + -u, --dependency-update Update dependencies from "requirements.yaml" to dir "charts/" before packaging + -d, --destination string Location to write the chart. (default ".") -h, --help help for package - --key string name of the key to use when signing. Used if --sign is true - --keyring string location of a public keyring (default "~/.gnupg/pubring.gpg") - --save save packaged chart to local chart repository (default true) - --sign use a PGP private key to sign this package - --version string set the version on the chart to this semver version + --key string Name of the key to use when signing. Used if --sign is true + --keyring string Location of a public keyring (default "~/.gnupg/pubring.gpg") + --save Save packaged chart to local chart repository (default true) + --sign Use a PGP private key to sign this package + --version string Set the version on the chart to this semver version ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_plugin.md b/docs/helm/helm_plugin.md index 5aa57b69c..ab66d7a05 100644 --- a/docs/helm/helm_plugin.md +++ b/docs/helm/helm_plugin.md @@ -1,6 +1,6 @@ ## helm plugin -add, list, or remove Helm plugins +Add, list, or remove Helm plugins ### Synopsis @@ -17,21 +17,21 @@ Manage client-side Helm plugins. ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -* [helm plugin install](helm_plugin_install.md) - install one or more Helm plugins -* [helm plugin list](helm_plugin_list.md) - list installed Helm plugins -* [helm plugin remove](helm_plugin_remove.md) - remove one or more Helm plugins -* [helm plugin update](helm_plugin_update.md) - update one or more Helm plugins +* [helm plugin install](helm_plugin_install.md) - Install one or more Helm plugins +* [helm plugin list](helm_plugin_list.md) - List installed Helm plugins +* [helm plugin remove](helm_plugin_remove.md) - Remove one or more Helm plugins +* [helm plugin update](helm_plugin_update.md) - Update one or more Helm plugins -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_plugin_install.md b/docs/helm/helm_plugin_install.md index f30bfff55..47f4ea4ca 100644 --- a/docs/helm/helm_plugin_install.md +++ b/docs/helm/helm_plugin_install.md @@ -1,6 +1,6 @@ ## helm plugin install -install one or more Helm plugins +Install one or more Helm plugins ### Synopsis @@ -19,23 +19,23 @@ helm plugin install [options] ... [flags] ``` -h, --help help for install - --version string specify a version constraint. If this is not specified, the latest version is installed + --version string Specify a version constraint. If this is not specified, the latest version is installed ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm plugin](helm_plugin.md) - add, list, or remove Helm plugins +* [helm plugin](helm_plugin.md) - Add, list, or remove Helm plugins -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_plugin_list.md b/docs/helm/helm_plugin_list.md index 373462e2b..897a6b5d0 100644 --- a/docs/helm/helm_plugin_list.md +++ b/docs/helm/helm_plugin_list.md @@ -1,10 +1,10 @@ ## helm plugin list -list installed Helm plugins +List installed Helm plugins ### Synopsis -list installed Helm plugins +List installed Helm plugins ``` helm plugin list [flags] @@ -19,17 +19,17 @@ helm plugin list [flags] ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm plugin](helm_plugin.md) - add, list, or remove Helm plugins +* [helm plugin](helm_plugin.md) - Add, list, or remove Helm plugins -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_plugin_remove.md b/docs/helm/helm_plugin_remove.md index 30f222c9f..e1a017f9a 100644 --- a/docs/helm/helm_plugin_remove.md +++ b/docs/helm/helm_plugin_remove.md @@ -1,10 +1,10 @@ ## helm plugin remove -remove one or more Helm plugins +Remove one or more Helm plugins ### Synopsis -remove one or more Helm plugins +Remove one or more Helm plugins ``` helm plugin remove ... [flags] @@ -19,17 +19,17 @@ helm plugin remove ... [flags] ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm plugin](helm_plugin.md) - add, list, or remove Helm plugins +* [helm plugin](helm_plugin.md) - Add, list, or remove Helm plugins -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_plugin_update.md b/docs/helm/helm_plugin_update.md index 65b16cd9d..bedae44a3 100644 --- a/docs/helm/helm_plugin_update.md +++ b/docs/helm/helm_plugin_update.md @@ -1,10 +1,10 @@ ## helm plugin update -update one or more Helm plugins +Update one or more Helm plugins ### Synopsis -update one or more Helm plugins +Update one or more Helm plugins ``` helm plugin update ... [flags] @@ -19,17 +19,17 @@ helm plugin update ... [flags] ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm plugin](helm_plugin.md) - add, list, or remove Helm plugins +* [helm plugin](helm_plugin.md) - Add, list, or remove Helm plugins -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_repo.md b/docs/helm/helm_repo.md index 0b73fbcd0..9f9a6a921 100644 --- a/docs/helm/helm_repo.md +++ b/docs/helm/helm_repo.md @@ -1,6 +1,6 @@ ## helm repo -add, list, remove, update, and index chart repositories +Add, list, remove, update, and index chart repositories ### Synopsis @@ -21,22 +21,22 @@ Example usage: ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -* [helm repo add](helm_repo_add.md) - add a chart repository -* [helm repo index](helm_repo_index.md) - generate an index file given a directory containing packaged charts -* [helm repo list](helm_repo_list.md) - list chart repositories -* [helm repo remove](helm_repo_remove.md) - remove a chart repository -* [helm repo update](helm_repo_update.md) - update information of available charts locally from chart repositories +* [helm repo add](helm_repo_add.md) - Add a chart repository +* [helm repo index](helm_repo_index.md) - Generate an index file given a directory containing packaged charts +* [helm repo list](helm_repo_list.md) - List chart repositories +* [helm repo remove](helm_repo_remove.md) - Remove a chart repository +* [helm repo update](helm_repo_update.md) - Update information of available charts locally from chart repositories -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_repo_add.md b/docs/helm/helm_repo_add.md index 29947147d..f985a32c3 100644 --- a/docs/helm/helm_repo_add.md +++ b/docs/helm/helm_repo_add.md @@ -1,10 +1,10 @@ ## helm repo add -add a chart repository +Add a chart repository ### Synopsis -add a chart repository +Add a chart repository ``` helm repo add [flags] [NAME] [URL] @@ -13,29 +13,29 @@ helm repo add [flags] [NAME] [URL] ### Options ``` - --ca-file string verify certificates of HTTPS-enabled servers using this CA bundle - --cert-file string identify HTTPS client using this SSL certificate file + --ca-file string Verify certificates of HTTPS-enabled servers using this CA bundle + --cert-file string Identify HTTPS client using this SSL certificate file -h, --help help for add - --key-file string identify HTTPS client using this SSL key file - --no-update raise error if repo is already registered - --password string chart repository password - --username string chart repository username + --key-file string Identify HTTPS client using this SSL key file + --no-update Raise error if repo is already registered + --password string Chart repository password + --username string Chart repository username ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm repo](helm_repo.md) - add, list, remove, update, and index chart repositories +* [helm repo](helm_repo.md) - Add, list, remove, update, and index chart repositories -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_repo_index.md b/docs/helm/helm_repo_index.md index 4660489f9..e57fd29ff 100644 --- a/docs/helm/helm_repo_index.md +++ b/docs/helm/helm_repo_index.md @@ -1,6 +1,6 @@ ## helm repo index -generate an index file given a directory containing packaged charts +Generate an index file given a directory containing packaged charts ### Synopsis @@ -23,24 +23,24 @@ helm repo index [flags] [DIR] ``` -h, --help help for index - --merge string merge the generated index into the given index - --url string url of chart repository + --merge string Merge the generated index into the given index + --url string URL of the chart repository ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm repo](helm_repo.md) - add, list, remove, update, and index chart repositories +* [helm repo](helm_repo.md) - Add, list, remove, update, and index chart repositories -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_repo_list.md b/docs/helm/helm_repo_list.md index bebaa6333..9a544a6ba 100644 --- a/docs/helm/helm_repo_list.md +++ b/docs/helm/helm_repo_list.md @@ -1,10 +1,10 @@ ## helm repo list -list chart repositories +List chart repositories ### Synopsis -list chart repositories +List chart repositories ``` helm repo list [flags] @@ -19,17 +19,17 @@ helm repo list [flags] ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm repo](helm_repo.md) - add, list, remove, update, and index chart repositories +* [helm repo](helm_repo.md) - Add, list, remove, update, and index chart repositories -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_repo_remove.md b/docs/helm/helm_repo_remove.md index 89f43a130..87b35b5be 100644 --- a/docs/helm/helm_repo_remove.md +++ b/docs/helm/helm_repo_remove.md @@ -1,10 +1,10 @@ ## helm repo remove -remove a chart repository +Remove a chart repository ### Synopsis -remove a chart repository +Remove a chart repository ``` helm repo remove [flags] [NAME] @@ -19,17 +19,17 @@ helm repo remove [flags] [NAME] ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm repo](helm_repo.md) - add, list, remove, update, and index chart repositories +* [helm repo](helm_repo.md) - Add, list, remove, update, and index chart repositories -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_repo_update.md b/docs/helm/helm_repo_update.md index 381c12fb3..e374620ac 100644 --- a/docs/helm/helm_repo_update.md +++ b/docs/helm/helm_repo_update.md @@ -1,6 +1,6 @@ ## helm repo update -update information of available charts locally from chart repositories +Update information of available charts locally from chart repositories ### Synopsis @@ -20,23 +20,23 @@ helm repo update [flags] ``` -h, --help help for update - --strict fail on update warnings + --strict Fail on update warnings ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO -* [helm repo](helm_repo.md) - add, list, remove, update, and index chart repositories +* [helm repo](helm_repo.md) - Add, list, remove, update, and index chart repositories -###### Auto generated by spf13/cobra on 15-Nov-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_reset.md b/docs/helm/helm_reset.md index 772ac42c3..929a64088 100644 --- a/docs/helm/helm_reset.md +++ b/docs/helm/helm_reset.md @@ -1,6 +1,6 @@ ## helm reset -uninstalls Tiller from a cluster +Uninstalls Tiller from a cluster ### Synopsis @@ -17,31 +17,31 @@ helm reset [flags] ### Options ``` - -f, --force forces Tiller uninstall even if there are releases installed, or if Tiller is not in ready state. Releases are not deleted.) + -f, --force Forces Tiller uninstall even if there are releases installed, or if Tiller is not in ready state. Releases are not deleted.) -h, --help help for reset - --remove-helm-home if set deletes $HELM_HOME - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --remove-helm-home If set, deletes $HELM_HOME + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 10-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_rollback.md b/docs/helm/helm_rollback.md index 87c68f6c8..e50960504 100644 --- a/docs/helm/helm_rollback.md +++ b/docs/helm/helm_rollback.md @@ -1,6 +1,6 @@ ## helm rollback -roll back a release to a previous revision +Rollback a release to a previous revision ### Synopsis @@ -20,37 +20,37 @@ helm rollback [flags] [RELEASE] [REVISION] ### Options ``` - --cleanup-on-fail allow deletion of new resources created in this rollback when rollback failed - --description string specify a description for the release - --dry-run simulate a rollback - --force force resource update through delete/recreate if needed + --cleanup-on-fail Allow deletion of new resources created in this rollback when rollback failed + --description string Specify a description for the release + --dry-run Simulate a rollback + --force Force resource update through delete/recreate if needed -h, --help help for rollback - --no-hooks prevent hooks from running during rollback - --recreate-pods performs pods restart for the resource if applicable - --timeout int time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote - --wait if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout + --no-hooks Prevent hooks from running during rollback + --recreate-pods Performs pods restart for the resource if applicable + --timeout int Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote + --wait If set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 5-Feb-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_search.md b/docs/helm/helm_search.md index c45a397e3..b1a89c4f9 100644 --- a/docs/helm/helm_search.md +++ b/docs/helm/helm_search.md @@ -1,6 +1,6 @@ ## helm search -search for a keyword in charts +Search for a keyword in charts ### Synopsis @@ -18,27 +18,27 @@ helm search [keyword] [flags] ### Options ``` - --col-width uint specifies the max column width of output (default 60) + --col-width uint Specifies the max column width of output (default 60) -h, --help help for search - -r, --regexp use regular expressions for searching - -v, --version string search using semantic versioning constraints - -l, --versions show the long listing, with each version of each chart on its own line + -r, --regexp Use regular expressions for searching + -v, --version string Search using semantic versioning constraints + -l, --versions Show the long listing, with each version of each chart on its own line ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_serve.md b/docs/helm/helm_serve.md index 62a68595a..f9b24e7af 100644 --- a/docs/helm/helm_serve.md +++ b/docs/helm/helm_serve.md @@ -1,6 +1,6 @@ ## helm serve -start a local http web server +Start a local http web server ### Synopsis @@ -26,26 +26,26 @@ helm serve [flags] ### Options ``` - --address string address to listen on (default "127.0.0.1:8879") + --address string Address to listen on (default "127.0.0.1:8879") -h, --help help for serve - --repo-path string local directory path from which to serve charts - --url string external URL of chart repository + --repo-path string Local directory path from which to serve charts + --url string External URL of chart repository ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_status.md b/docs/helm/helm_status.md index 9dca005fd..38e774b8f 100644 --- a/docs/helm/helm_status.md +++ b/docs/helm/helm_status.md @@ -1,6 +1,6 @@ ## helm status -displays the status of the named release +Displays the status of the named release ### Synopsis @@ -23,30 +23,30 @@ helm status [flags] RELEASE_NAME ``` -h, --help help for status - -o, --output string output the status in the specified format (json or yaml) - --revision int32 if set, display the status of the named release with revision - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + -o, --output string Output the status in the specified format (json or yaml) + --revision int32 If set, display the status of the named release with revision + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 10-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_template.md b/docs/helm/helm_template.md index 805556096..ffc0ecc83 100644 --- a/docs/helm/helm_template.md +++ b/docs/helm/helm_template.md @@ -1,6 +1,6 @@ ## helm template -locally render templates +Locally render templates ### Synopsis @@ -24,35 +24,35 @@ helm template [flags] CHART ### Options ``` - -x, --execute stringArray only execute the given templates + -x, --execute stringArray Only execute the given templates -h, --help help for template - --is-upgrade set .Release.IsUpgrade instead of .Release.IsInstall - --kube-version string kubernetes version used as Capabilities.KubeVersion.Major/Minor (default "1.9") - -n, --name string release name (default "release-name") - --name-template string specify template used to name the release - --namespace string namespace to install the release into - --notes show the computed NOTES.txt file as well - --output-dir string writes the executed templates to files in output-dir instead of stdout - --set stringArray set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --set-file stringArray set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2) - --set-string stringArray set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - -f, --values valueFiles specify values in a YAML file (can specify multiple) (default []) + --is-upgrade Set .Release.IsUpgrade instead of .Release.IsInstall + --kube-version string Kubernetes version used as Capabilities.KubeVersion.Major/Minor (default "1.9") + -n, --name string Release name (default "release-name") + --name-template string Specify template used to name the release + --namespace string Namespace to install the release into + --notes Show the computed NOTES.txt file as well + --output-dir string Writes the executed templates to files in output-dir instead of stdout + --set stringArray Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) + --set-file stringArray Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2) + --set-string stringArray Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) + -f, --values valueFiles Specify values in a YAML file (can specify multiple) (default []) ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 1-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_test.md b/docs/helm/helm_test.md index e8ddfbc9b..3e1b53120 100644 --- a/docs/helm/helm_test.md +++ b/docs/helm/helm_test.md @@ -1,6 +1,6 @@ ## helm test -test a release +Test a release ### Synopsis @@ -18,32 +18,32 @@ helm test [RELEASE] [flags] ### Options ``` - --cleanup delete test pods upon completion + --cleanup Delete test pods upon completion -h, --help help for test - --parallel run test pods in parallel - --timeout int time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + --parallel Run test pods in parallel + --timeout int Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 9-Nov-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_upgrade.md b/docs/helm/helm_upgrade.md index d54b7c3a2..0aa52565b 100644 --- a/docs/helm/helm_upgrade.md +++ b/docs/helm/helm_upgrade.md @@ -1,6 +1,6 @@ ## helm upgrade -upgrade a release +Upgrade a release ### Synopsis @@ -65,57 +65,57 @@ helm upgrade [RELEASE] [CHART] [flags] ### Options ``` - --atomic if set, upgrade process rolls back changes made in case of failed upgrade, also sets --wait flag - --ca-file string verify certificates of HTTPS-enabled servers using this CA bundle - --cert-file string identify HTTPS client using this SSL certificate file - --cleanup-on-fail allow deletion of new resources created in this upgrade when upgrade failed - --description string specify the description to use for the upgrade, rather than the default - --devel use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. - --dry-run simulate an upgrade - --force force resource update through delete/recreate if needed + --atomic If set, upgrade process rolls back changes made in case of failed upgrade, also sets --wait flag + --ca-file string Verify certificates of HTTPS-enabled servers using this CA bundle + --cert-file string Identify HTTPS client using this SSL certificate file + --cleanup-on-fail Allow deletion of new resources created in this upgrade when upgrade failed + --description string Specify the description to use for the upgrade, rather than the default + --devel Use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored. + --dry-run Simulate an upgrade + --force Force resource update through delete/recreate if needed -h, --help help for upgrade - -i, --install if a release by this name doesn't already exist, run an install - --key-file string identify HTTPS client using this SSL key file - --keyring string path to the keyring that contains public signing keys (default "~/.gnupg/pubring.gpg") - --namespace string namespace to install the release into (only used if --install is set). Defaults to the current kube config namespace - --no-hooks disable pre/post upgrade hooks - --password string chart repository password where to locate the requested chart - --recreate-pods performs pods restart for the resource if applicable - --render-subchart-notes render subchart notes along with parent - --repo string chart repository url where to locate the requested chart - --reset-values when upgrading, reset the values to the ones built into the chart - --reuse-values when upgrading, reuse the last release's values and merge in any overrides from the command line via --set and -f. If '--reset-values' is specified, this is ignored. - --set stringArray set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --set-file stringArray set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2) - --set-string stringArray set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --timeout int time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote - --username string chart repository username where to locate the requested chart - -f, --values valueFiles specify values in a YAML file or a URL(can specify multiple) (default []) - --verify verify the provenance of the chart before upgrading - --version string specify the exact chart version to use. If this is not specified, the latest version is used - --wait if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout + -i, --install If a release by this name doesn't already exist, run an install + --key-file string Identify HTTPS client using this SSL key file + --keyring string Path to the keyring that contains public signing keys (default "~/.gnupg/pubring.gpg") + --namespace string Namespace to install the release into (only used if --install is set). Defaults to the current kube config namespace + --no-hooks Disable pre/post upgrade hooks + --password string Chart repository password where to locate the requested chart + --recreate-pods Performs pods restart for the resource if applicable + --render-subchart-notes Render subchart notes along with parent + --repo string Chart repository url where to locate the requested chart + --reset-values When upgrading, reset the values to the ones built into the chart + --reuse-values When upgrading, reuse the last release's values and merge in any overrides from the command line via --set and -f. If '--reset-values' is specified, this is ignored. + --set stringArray Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) + --set-file stringArray Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2) + --set-string stringArray Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) + --timeout int Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300) + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote + --username string Chart repository username where to locate the requested chart + -f, --values valueFiles Specify values in a YAML file or a URL(can specify multiple) (default []) + --verify Verify the provenance of the chart before upgrading + --version string Specify the exact chart version to use. If this is not specified, the latest version is used + --wait If set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 5-Feb-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_verify.md b/docs/helm/helm_verify.md index e6d683dfb..98e8bda4f 100644 --- a/docs/helm/helm_verify.md +++ b/docs/helm/helm_verify.md @@ -1,6 +1,6 @@ ## helm verify -verify that a chart at the given path has been signed and is valid +Verify that a chart at the given path has been signed and is valid ### Synopsis @@ -23,23 +23,23 @@ helm verify [flags] PATH ``` -h, --help help for verify - --keyring string keyring containing public keys (default "~/.gnupg/pubring.gpg") + --keyring string Keyring containing public keys (default "~/.gnupg/pubring.gpg") ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 25-Feb-2019 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/helm/helm_version.md b/docs/helm/helm_version.md index 33d33cf12..8be50ac96 100644 --- a/docs/helm/helm_version.md +++ b/docs/helm/helm_version.md @@ -1,6 +1,6 @@ ## helm version -print the client/server version information +Print the client/server version information ### Synopsis @@ -29,33 +29,33 @@ helm version [flags] ### Options ``` - -c, --client client version only + -c, --client Client version only -h, --help help for version - -s, --server server version only - --short print the version number - --template string template for version string format - --tls enable TLS for request - --tls-ca-cert string path to TLS CA certificate file (default "$HELM_HOME/ca.pem") - --tls-cert string path to TLS certificate file (default "$HELM_HOME/cert.pem") - --tls-hostname string the server name used to verify the hostname on the returned certificates from the server - --tls-key string path to TLS key file (default "$HELM_HOME/key.pem") - --tls-verify enable TLS for request and verify remote + -s, --server Server version only + --short Print the version number + --template string Template for version string format + --tls Enable TLS for request + --tls-ca-cert string Path to TLS CA certificate file (default "$HELM_HOME/ca.pem") + --tls-cert string Path to TLS certificate file (default "$HELM_HOME/cert.pem") + --tls-hostname string The server name used to verify the hostname on the returned certificates from the server + --tls-key string Path to TLS key file (default "$HELM_HOME/key.pem") + --tls-verify Enable TLS for request and verify remote ``` ### Options inherited from parent commands ``` - --debug enable verbose output - --home string location of your Helm config. Overrides $HELM_HOME (default "~/.helm") - --host string address of Tiller. Overrides $HELM_HOST - --kube-context string name of the kubeconfig context to use - --kubeconfig string absolute path to the kubeconfig file to use - --tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300) - --tiller-namespace string namespace of Tiller (default "kube-system") + --debug Enable verbose output + --home string Location of your Helm config. Overrides $HELM_HOME (default "~/.helm") + --host string Address of Tiller. Overrides $HELM_HOST + --kube-context string Name of the kubeconfig context to use + --kubeconfig string Absolute path of the kubeconfig file to be used + --tiller-connection-timeout int The duration (in seconds) Helm will wait to establish a connection to Tiller (default 300) + --tiller-namespace string Namespace of Tiller (default "kube-system") ``` ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 10-Aug-2018 +###### Auto generated by spf13/cobra on 16-May-2019 diff --git a/docs/install.md b/docs/install.md index 985189b85..d9a345f80 100755 --- a/docs/install.md +++ b/docs/install.md @@ -83,12 +83,12 @@ the latest master branch. They are not official releases, and may not be stable. However, they offer the opportunity to test the cutting edge features. -Canary Helm binaries are stored in the [Kubernetes Helm GCS bucket](https://kubernetes-helm.storage.googleapis.com). +Canary Helm binaries are stored at [get.helm.sh](https://get.helm.sh). Here are links to the common builds: -- [Linux AMD64](https://kubernetes-helm.storage.googleapis.com/helm-canary-linux-amd64.tar.gz) -- [macOS AMD64](https://kubernetes-helm.storage.googleapis.com/helm-canary-darwin-amd64.tar.gz) -- [Experimental Windows AMD64](https://kubernetes-helm.storage.googleapis.com/helm-canary-windows-amd64.zip) +- [Linux AMD64](https://get.helm.sh/helm-canary-linux-amd64.tar.gz) +- [macOS AMD64](https://get.helm.sh/helm-canary-darwin-amd64.tar.gz) +- [Experimental Windows AMD64](https://get.helm.sh/helm-canary-windows-amd64.zip) ### From Source (Linux, macOS) @@ -280,7 +280,7 @@ helm init --override metadata.annotations."deployment\.kubernetes\.io/revision"= Output: ``` -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: annotations: @@ -337,7 +337,7 @@ The Tiller installation is skipped and the manifest is output to stdout in JSON format. ``` -"apiVersion": "extensions/v1beta1", +"apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "creationTimestamp": null, @@ -353,10 +353,13 @@ in JSON format. ### Storage backends By default, `tiller` stores release information in `ConfigMaps` in the namespace -where it is running. As of Helm 2.7.0, there is now a beta storage backend that +where it is running. + +#### Secret storage backend +As of Helm 2.7.0, there is now a beta storage backend that uses `Secrets` for storing release information. This was added for additional -security in protecting charts in conjunction with the release of `Secret` -encryption in Kubernetes. +security in protecting charts in conjunction with the release of `Secret` +encryption in Kubernetes. To enable the secrets backend, you'll need to init Tiller with the following options: @@ -369,6 +372,31 @@ Currently, if you want to switch from the default backend to the secrets backend, you'll have to do the migration for this on your own. When this backend graduates from beta, there will be a more official path of migration +#### SQL storage backend +As of Helm 2.14.0 there is now a beta SQL storage backend that stores release +information in an SQL database (only postgres has been tested so far). + +Using such a storage backend is particularly useful if your release information +weighs more than 1MB (in which case, it can't be stored in ConfigMaps/Secrets +because of internal limits in Kubernetes' underlying etcd key-value store). + +To enable the SQL backend, you'll need to deploy a SQL database and init Tiller +with the following options: + +```shell +helm init \ + --override \ + 'spec.template.spec.containers[0].args'='{--storage=sql,--sql-dialect=postgres,--sql-connection-string=postgresql://tiller-postgres:5432/helm?user=helm&password=changeme}' +``` + +**PRODUCTION NOTES**: it's recommended to change the username and password of +the SQL database in production deployments. Enabling SSL is also a good idea. +Last, but not least, perform regular backups/snapshots of your SQL database. + +Currently, if you want to switch from the default backend to the SQL backend, +you'll have to do the migration for this on your own. When this backend +graduates from beta, there will be a more official migration path. + ## Conclusion In most cases, installation is as simple as getting a pre-built `helm` binary diff --git a/docs/install_faq.md b/docs/install_faq.md index d4840417f..c1ac5e6af 100644 --- a/docs/install_faq.md +++ b/docs/install_faq.md @@ -13,8 +13,7 @@ I want to know more about my downloading options. **Q: I can't get to GitHub releases of the newest Helm. Where are they?** -A: We no longer use GitHub releases. Binaries are now stored in a -[GCS public bucket](https://kubernetes-helm.storage.googleapis.com). +Binaries are stored at [get.helm.sh](https://get.helm.sh). **Q: Why aren't there Debian/Fedora/... native packages of Helm?** diff --git a/docs/related.md b/docs/related.md index 3f8c73d4a..dc8d62091 100644 --- a/docs/related.md +++ b/docs/related.md @@ -19,6 +19,7 @@ or [pull request](https://github.com/helm/helm/pulls). - [Writing a Helm Chart](https://www.influxdata.com/packaged-kubernetes-deployments-writing-helm-chart/) - [A basic walk through Kubernetes Helm](https://github.com/muffin87/helm-tutorial) - [Tillerless Helm v2](https://rimusz.net/tillerless-helm/) +- [Generating Certificate Authorities and Certificates using Terraform](https://github.com/jbussdieker/tiller-ssl-terraform) ## Video, Audio, and Podcast @@ -37,7 +38,7 @@ or [pull request](https://github.com/helm/helm/pulls). - [helm-cos](https://github.com/imroc/helm-cos) - Plugin to manage repositories on Tencent Cloud Object Storage - [helm-edit](https://github.com/mstrzele/helm-edit) - Plugin for editing release's values - [helm-env](https://github.com/adamreese/helm-env) - Plugin to show current environment -- [helm-gcs](https://github.com/nouney/helm-gcs) - Plugin to manage repositories on Google Cloud Storage +- [helm-gcs](https://github.com/hayorov/helm-gcs) - Plugin to manage repositories on Google Cloud Storage - [helm-github](https://github.com/sagansystems/helm-github) - Plugin to install Helm Charts from Github repositories - [helm-hashtag](https://github.com/balboah/helm-hashtag) - Plugin for tracking docker tag hash digests as values - [helm-inject](https://github.com/maorfr/helm-inject) - Plugin for injecting additional configurations during release upgrade @@ -50,6 +51,7 @@ or [pull request](https://github.com/helm/helm/pulls). - [helm-plugin-utils](https://github.com/maorfr/helm-plugin-utils) - Utility functions to be used within Helm plugins - [helm-restore](https://github.com/maorfr/helm-restore) - Plugin to restore a deployed release to its original state - [helm-secrets](https://github.com/futuresimple/helm-secrets) - Plugin to manage and store secrets safely +- [helm-ssm](https://github.com/codacy/helm-ssm) - Plugin to inject values coming from AWS SSM parameters on the `values.yaml` file - [helm-stop](https://github.com/IBM/helm-stop) - Plugin for stopping a release pods - [helm-template](https://github.com/technosophos/helm-template) - Debug/render templates client-side - [helm-tiller](https://github.com/adamreese/helm-tiller) - Additional commands to work with Tiller diff --git a/docs/release_checklist.md b/docs/release_checklist.md index bddb50ffb..7474a01a6 100644 --- a/docs/release_checklist.md +++ b/docs/release_checklist.md @@ -77,6 +77,15 @@ export RELEASE_BRANCH_NAME="release-X.Y" export RELEASE_CANDIDATE_NAME="$RELEASE_NAME-rc.1" ``` +We are also going to be adding security and verification of the release process by +hashing the binaries and providing signature files. We perform this using +[GitHub and GPG](https://help.github.com/en/articles/about-commit-signature-verification). +If you do not have GPG already setup you can follow these steps: +1. [Install GPG](https://gnupg.org/index.html) +2. [Generate GPG key](https://help.github.com/en/articles/generating-a-new-gpg-key) +3. [Add key to GitHub account](https://help.github.com/en/articles/adding-a-new-gpg-key-to-your-github-account) +4. [Set signing key in Git](https://help.github.com/en/articles/telling-git-about-your-signing-key) + ## 1. Create the Release Branch ### Major/Minor Releases @@ -147,6 +156,24 @@ git add . git commit -m "bump version to $RELEASE_CANDIDATE_NAME" ``` +This will update it for the $RELEASE_BRANCH_NAME only. You will also need to pull +this change into the master branch for when the next release is being created. + +```shell +# get the last commit id i.e. commit to bump the version +git log --format="%H" -n 1 + +# create new branch off master +git checkout master +git checkout -b bump-version- + +# cherry pick the commit using id from first command +git cherry-pick -x + +# commit the change +git push origin bump-version- +``` + ## 3. Commit and Push the Release Branch In order for others to start testing, we can now push the release branch @@ -177,25 +204,24 @@ CircleCI will automatically create a tagged release image and client binary to test with. For testers, the process to start testing after CircleCI finishes building the -artifacts involves the following steps to grab the client from Google Cloud -Storage: +artifacts involves the following steps to grab the client: linux/amd64, using /bin/bash: ```shell -wget https://kubernetes-helm.storage.googleapis.com/helm-$RELEASE_CANDIDATE_NAME-linux-amd64.tar.gz +wget https://get.helm.sh/helm-$RELEASE_CANDIDATE_NAME-linux-amd64.tar.gz ``` darwin/amd64, using Terminal.app: ```shell -wget https://kubernetes-helm.storage.googleapis.com/helm-$RELEASE_CANDIDATE_NAME-darwin-amd64.tar.gz +wget https://get.helm.sh/helm-$RELEASE_CANDIDATE_NAME-darwin-amd64.tar.gz ``` windows/amd64, using PowerShell: ```shell -PS C:\> Invoke-WebRequest -Uri "https://kubernetes-helm.storage.googleapis.com/helm-$RELEASE_CANDIDATE_NAME-windows-amd64.zip" -OutFile "helm-$ReleaseCandidateName-windows-amd64.zip" +PS C:\> Invoke-WebRequest -Uri "https://get.helm.sh/helm-$RELEASE_CANDIDATE_NAME-windows-amd64.zip" -OutFile "helm-$ReleaseCandidateName-windows-amd64.zip" ``` Then, unpack and move the binary to somewhere on your $PATH, or move it @@ -250,6 +276,9 @@ git tag --sign --annotate "${RELEASE_NAME}" --message "Helm release ${RELEASE_NA git push upstream $RELEASE_NAME ``` +Verify that the release succeeded in CI. If not, you will need to fix the +release and push the release again. + ## 7. PGP Sign the downloads While hashes provide a signature that the content of the downloads is what it @@ -259,6 +288,7 @@ from. To do this, run the following `make` commands: ```shell +export VERSION="$RELEASE_NAME" make clean make fetch-dist make sign @@ -304,14 +334,14 @@ The community keeps growing, and we'd love to see you there! Download Helm X.Y. The common platform binaries are here: -- [MacOS amd64](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-darwin-amd64.tar.gz) ([checksum](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-darwin-amd64.tar.gz.sha256) / CHECKSUM_VAL) -- [Linux amd64](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-amd64.tar.gz) ([checksum](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-amd64.tar.gz.sha256) / CHECKSUM_VAL) -- [Linux arm](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-arm.tar.gz) ([checksum](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-arm.tar.gz.sha256) / CHECKSUM_VAL) -- [Linux arm64](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-arm64.tar.gz) ([checksum](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-arm64.tar.gz.sha256) / CHECKSUM_VAL) -- [Linux i386](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-386.tar.gz) ([checksum](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-386.tar.gz.sha256) / CHECKSUM_VAL) -- [Linux ppc64le](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-ppc64le.tar.gz) ([checksum](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-ppc64le.tar.gz.sha256) / CHECKSUM_VAL) -- [Linux s390x](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-s390x.tar.gz) ([checksum](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-linux-s390x.tar.gz.sha256) / CHECKSUM_VAL) -- [Windows amd64](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-windows-amd64.zip) ([checksum](https://storage.googleapis.com/kubernetes-helm/helm-vX.Y.Z-windows-amd64.zip.sha256) / CHECKSUM_VAL) +- [MacOS amd64](https://get.helm.sh/helm-vX.Y.Z-darwin-amd64.tar.gz) ([checksum](https://get.helm.sh/helm-vX.Y.Z-darwin-amd64.tar.gz.sha256) / CHECKSUM_VAL) +- [Linux amd64](https://get.helm.sh/helm-vX.Y.Z-linux-amd64.tar.gz) ([checksum](https://get.helm.sh/helm-vX.Y.Z-linux-amd64.tar.gz.sha256) / CHECKSUM_VAL) +- [Linux arm](https://get.helm.sh/helm-vX.Y.Z-linux-arm.tar.gz) ([checksum](https://get.helm.sh/helm-vX.Y.Z-linux-arm.tar.gz.sha256) / CHECKSUM_VAL) +- [Linux arm64](https://get.helm.sh/helm-vX.Y.Z-linux-arm64.tar.gz) ([checksum](https://get.helm.sh/helm-vX.Y.Z-linux-arm64.tar.gz.sha256) / CHECKSUM_VAL) +- [Linux i386](https://get.helm.sh/helm-vX.Y.Z-linux-386.tar.gz) ([checksum](https://get.helm.sh/helm-vX.Y.Z-linux-386.tar.gz.sha256) / CHECKSUM_VAL) +- [Linux ppc64le](https://get.helm.sh/helm-vX.Y.Z-linux-ppc64le.tar.gz) ([checksum](https://get.helm.sh/helm-vX.Y.Z-linux-ppc64le.tar.gz.sha256) / CHECKSUM_VAL) +- [Linux s390x](https://get.helm.sh/helm-vX.Y.Z-linux-s390x.tar.gz) ([checksum](https://get.helm.sh/helm-vX.Y.Z-linux-s390x.tar.gz.sha256) / CHECKSUM_VAL) +- [Windows amd64](https://get.helm.sh/helm-vX.Y.Z-windows-amd64.zip) ([checksum](https://get.helm.sh/helm-vX.Y.Z-windows-amd64.zip.sha256) / CHECKSUM_VAL) Once you have the client installed, upgrade Tiller with `helm init --upgrade`. @@ -354,16 +384,19 @@ Once finished, go into GitHub and edit the release notes for the tagged release Remember to attach the ascii armored signatures generated in the previous step to the release notes. +It is now worth getting other people to take a look at the release notes before the release is published. Send +a request out to [#helm-dev](https://kubernetes.slack.com/messages/C51E88VDG) for review. It is always +beneficial as it can be easy to miss something. + +When you are ready to go, hit `publish`. + ## 9. Evangelize Congratulations! You're done. Go grab yourself a $DRINK_OF_CHOICE. You've earned it. After enjoying a nice $DRINK_OF_CHOICE, go forth and announce the glad tidings -of the new release in Slack and on Twitter. You should also notify any key -partners in the helm community such as the homebrew formula maintainers, the -owners of incubator projects (e.g. ChartMuseum) and any other interested -parties. +of the new release in Slack and on Twitter. Optionally, write a blog post about the new release and showcase some of the new features on there! diff --git a/docs/tiller_ssl.md b/docs/tiller_ssl.md index 3d64635ae..3705723fa 100644 --- a/docs/tiller_ssl.md +++ b/docs/tiller_ssl.md @@ -42,6 +42,8 @@ on getting ready within a small amount of time. For production configurations, we urge readers to read [the official documentation](https://www.openssl.org) and consult other resources. +There are other alternative ways to generating SSL CAs in addition to `openssl`, for example Terraform. They are not documented here but you can find links to these alternative means in [Related Projects and Documentation](https://helm.sh/docs/related/). + ### Generate a Certificate Authority The simplest way to generate a certificate authority is to run two commands: diff --git a/glide.lock b/glide.lock index 5d4a6a9f8..c8b75c737 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: d92d7faee5c7ecbb241dadcd993e5dd8dfba226739d20d97fabf23168613f3ac -updated: 2019-04-16T15:32:58.609105-07:00 +hash: d633cc94d6f7fd656b85a64cd1eccffdeed7c45848369ce55ed9a4ae731dd843 +updated: 2019-06-04T12:50:58.563587342-07:00 imports: - name: cloud.google.com/go version: 3b1ae45394a234c385be014e9a488f2bb6eef821 @@ -173,8 +173,16 @@ imports: version: 9316a62528ac99aaecb4e47eadd6dc8aa6533d58 - name: github.com/inconshreveable/mousetrap version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75 +- name: github.com/jmoiron/sqlx + version: d161d7a76b5661016ad0b085869f77fd410f3e6a + subpackages: + - reflectx - name: github.com/json-iterator/go version: ab8a2e0c74be9d3be70b3184d9acc634935ded82 +- name: github.com/lib/pq + version: 88edab0803230a3898347e77b474f8c1820a1f20 + subpackages: + - oid - name: github.com/liggitt/tabwriter version: 89fcab3d43de07060e4fd4c1547430ed57e87f24 - name: github.com/mailru/easyjson @@ -188,7 +196,7 @@ imports: - name: github.com/Masterminds/goutils version: 41ac8693c5c10a92ea1ff5ac3a7f95646f6123b0 - name: github.com/Masterminds/semver - version: 517734cc7d6470c0d07130e40fd40bdeb9bcd3fd + version: c7af12943936e8c39859482e61f0574c2fd7fc75 - name: github.com/Masterminds/sprig version: 9f8fceff796fb9f4e992cd2bece016be0121ab74 - name: github.com/Masterminds/vcs @@ -235,6 +243,10 @@ imports: version: 8a290539e2e8629dbc4e6bad948158f790ec31f4 - name: github.com/PuerkitoBio/urlesc version: 5bd2802263f21d8788851d5305584c82a5c75d7e +- name: github.com/rubenv/sql-migrate + version: 1007f53448d75fe14190968f5de4d95ed63ebb83 + subpackages: + - sqlparse - name: github.com/russross/blackfriday version: 300106c228d52c8941d4b3de6054a6062a86dda3 - name: github.com/shurcooL/sanitized_anchor_name @@ -366,6 +378,8 @@ imports: - stats - status - tap +- name: gopkg.in/gorp.v1 + version: 6a667da9c028871f98598d85413e3fc4c6daa52e - name: gopkg.in/inf.v0 version: 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 - name: gopkg.in/square/go-jose.v2 @@ -377,7 +391,7 @@ imports: - name: gopkg.in/yaml.v2 version: 5420a8b6744d3b0345ab293f6fcba19c978f1183 - name: k8s.io/api - version: 6e4e0e4f393bf5e8bbff570acd13217aa5a770cd + version: a675ac48af67cf21d815b5f8df288462096eb9c9 subpackages: - admission/v1beta1 - admissionregistration/v1beta1 @@ -418,7 +432,7 @@ imports: - storage/v1alpha1 - storage/v1beta1 - name: k8s.io/apiextensions-apiserver - version: 727a075fdec8319bf095330e344b3ccc668abc73 + version: bf6753f2aa24fe1d69a2abeea1c106042bcf3f5f subpackages: - pkg/apis/apiextensions - pkg/apis/apiextensions/v1beta1 @@ -480,7 +494,7 @@ imports: - third_party/forked/golang/netutil - third_party/forked/golang/reflect - name: k8s.io/apiserver - version: 1ec86e4da56ce0573788fc12bb3a5530600c0e5d + version: f89599b3f64533b7e94fa4d169acbc861b464f2e subpackages: - pkg/authentication/authenticator - pkg/authentication/serviceaccount @@ -488,7 +502,7 @@ imports: - pkg/features - pkg/util/feature - name: k8s.io/cli-runtime - version: d644b00f3b79346b7627329269bb25f2135f941c + version: 17bc0b7fcef59215541144136f75284656a789fb subpackages: - pkg/genericclioptions - pkg/kustomize @@ -503,7 +517,7 @@ imports: - pkg/printers - pkg/resource - name: k8s.io/client-go - version: 1a26190bd76a9017e289958b9fba936430aa3704 + version: ae8359b20417914b73a4b514b7a3d642597700bb subpackages: - discovery - discovery/cached/disk @@ -647,7 +661,7 @@ imports: - pkg/util/proto/testing - pkg/util/proto/validation - name: k8s.io/kubernetes - version: 3c949c7d419670cd99fe92f60e6f4d251898bdf2 + version: 66049e3b21efe110454d67df4fa62b08ea79a19b subpackages: - pkg/api/legacyscheme - pkg/api/service @@ -807,6 +821,8 @@ imports: subpackages: - sortorder testImports: +- name: github.com/DATA-DOG/go-sqlmock + version: 472e287dbafe67e526a3797165b64cb14f34705a - name: github.com/pmezard/go-difflib version: 5d4384ee4fb2527b0a1256a821ebfc92f91efefc subpackages: diff --git a/glide.yaml b/glide.yaml index 19024aecf..565ba1069 100644 --- a/glide.yaml +++ b/glide.yaml @@ -2,11 +2,10 @@ package: k8s.io/helm import: - package: golang.org/x/net subpackages: - - context + - context - package: golang.org/x/sync subpackages: - semaphore - # This is temporary and can probably be removed the next time gRPC is updated - package: golang.org/x/sys version: b90733256f2e882e81d52f9126de08df5615afd9 subpackages: @@ -17,22 +16,21 @@ import: - package: github.com/spf13/pflag version: ~1.0.1 - package: github.com/Masterminds/vcs - # Pin version of mergo that is compatible with both sprig and Kubernetes - package: github.com/imdario/mergo version: v0.3.5 - package: github.com/Masterminds/sprig version: ^2.19.0 - package: github.com/ghodss/yaml - package: github.com/Masterminds/semver - version: ~1.3.1 + version: ~1.4.2 - package: github.com/technosophos/moniker version: ~0.2 - package: github.com/golang/protobuf version: 1.2.0 subpackages: - - proto - - ptypes/any - - ptypes/timestamp + - proto + - ptypes/any + - ptypes/timestamp - package: google.golang.org/grpc version: 1.18.0 - package: github.com/gosuri/uitable @@ -40,8 +38,8 @@ import: version: ^4.0.0 - package: golang.org/x/crypto subpackages: - - openpgp - - ssh/terminal + - openpgp + - ssh/terminal - package: github.com/gobwas/glob version: ^0.2.1 - package: github.com/evanphx/json-patch @@ -51,24 +49,29 @@ import: version: 0.9.2 - package: github.com/grpc-ecosystem/go-grpc-prometheus - package: k8s.io/kubernetes - version: release-1.14 + version: v1.14.2 - package: k8s.io/client-go - version: kubernetes-1.14.1 + version: kubernetes-1.14.2 - package: k8s.io/api - version: kubernetes-1.14.1 + version: kubernetes-1.14.2 - package: k8s.io/apimachinery - version: kubernetes-1.14.1 + version: kubernetes-1.14.2 - package: k8s.io/apiserver - version: kubernetes-1.14.1 + version: kubernetes-1.14.2 - package: k8s.io/cli-runtime - version: kubernetes-1.14.1 + version: kubernetes-1.14.2 - package: k8s.io/apiextensions-apiserver - version: kubernetes-1.14.1 + version: kubernetes-1.14.2 - package: github.com/cyphar/filepath-securejoin version: ^0.2.1 + - package: github.com/jmoiron/sqlx + version: ^1.2.0 + - package: github.com/rubenv/sql-migrate testImports: - package: github.com/stretchr/testify version: ^1.1.4 subpackages: - assert + - package: github.com/DATA-DOG/go-sqlmock + version: ^1.3.2 diff --git a/pkg/chartutil/create.go b/pkg/chartutil/create.go index f8e0356e4..74607aff2 100644 --- a/pkg/chartutil/create.go +++ b/pkg/chartutil/create.go @@ -130,6 +130,7 @@ const defaultIgnore = `# Patterns to ignore when building packages. const defaultIngress = `{{- if .Values.ingress.enabled -}} {{- $fullName := include ".fullname" . -}} +{{- $svcPort := .Values.service.port -}} apiVersion: extensions/v1beta1 kind: Ingress metadata: @@ -160,7 +161,7 @@ spec: - path: {{ . }} backend: serviceName: {{ $fullName }} - servicePort: http + servicePort: {{ $svcPort }} {{- end }} {{- end }} {{- end }} diff --git a/pkg/chartutil/testdata/moby/values.yaml b/pkg/chartutil/testdata/moby/values.yaml index 54e1ce463..ecf22b563 100644 --- a/pkg/chartutil/testdata/moby/values.yaml +++ b/pkg/chartutil/testdata/moby/values.yaml @@ -7,3 +7,18 @@ right: exists left: exists front: exists back: exists + +# nested tables for null coalesce testing +web: + livenessProbe: + failureThreshold: 5 + httpGet: + path: /api/v1/info + port: atc + initialDelaySeconds: 10 + periodSeconds: 15 + timeoutSeconds: 3 + readinessProbe: + httpGet: + path: /api/v1/info + port: atc diff --git a/pkg/chartutil/values.go b/pkg/chartutil/values.go index 352524c13..6270531d7 100644 --- a/pkg/chartutil/values.go +++ b/pkg/chartutil/values.go @@ -327,16 +327,21 @@ func coalesceTables(dst, src map[string]interface{}, chartName string) map[strin // Because dest has higher precedence than src, dest values override src // values. for key, val := range src { + dv, ok := dst[key] + if ok && dv == nil { + // skip here, we delete at end + continue + } if istable(val) { - if innerdst, ok := dst[key]; !ok { + if !ok { dst[key] = val - } else if istable(innerdst) { - coalesceTables(innerdst.(map[string]interface{}), val.(map[string]interface{}), chartName) + } else if istable(dv) { + coalesceTables(dv.(map[string]interface{}), val.(map[string]interface{}), chartName) } else { log.Printf("Warning: Merging destination map for chart '%s'. Cannot overwrite table item '%s', with non table value: %v", chartName, key, val) } continue - } else if dv, ok := dst[key]; ok && istable(dv) { + } else if ok && istable(dv) { log.Printf("Warning: Merging destination map for chart '%s'. The destination item '%s' is a table and ignoring the source '%s' as it has a non-table value of: %v", chartName, key, key, val) continue } else if !ok { // <- ok is still in scope from preceding conditional. @@ -344,6 +349,12 @@ func coalesceTables(dst, src map[string]interface{}, chartName string) map[strin continue } } + // never return a nil value, rather delete the key + for k, v := range dst { + if v == nil { + delete(dst, k) + } + } return dst } diff --git a/pkg/chartutil/values_test.go b/pkg/chartutil/values_test.go index 3fea14c3a..af6c77d27 100644 --- a/pkg/chartutil/values_test.go +++ b/pkg/chartutil/values_test.go @@ -21,6 +21,7 @@ import ( "encoding/json" "fmt" "reflect" + "strings" "testing" "text/template" @@ -300,6 +301,25 @@ pequod: sail: true ahab: scope: whale + +# test coalesce with nested null values +web: + livenessProbe: + httpGet: null + exec: + command: + - curl + - -f + - http://localhost:8080/api/v1/info + timeoutSeconds: null + readinessProbe: + httpGet: null + exec: + command: + - curl + - -f + - http://localhost:8080/api/v1/info + timeoutSeconds: null # catches the case where this wasn't defined in the original source... ` func TestCoalesceValues(t *testing.T) { @@ -344,6 +364,13 @@ func TestCoalesceValues(t *testing.T) { {"{{.spouter.global.nested.boat}}", "true"}, {"{{.pequod.global.nested.sail}}", "true"}, {"{{.spouter.global.nested.sail}}", ""}, + + {"{{.web.livenessProbe.failureThreshold}}", "5"}, + {"{{.web.livenessProbe.initialDelaySeconds}}", "10"}, + {"{{.web.livenessProbe.periodSeconds}}", "15"}, + {"{{.web.livenessProbe.exec}}", "map[command:[curl -f http://localhost:8080/api/v1/info]]"}, + + {"{{.web.readinessProbe.exec}}", "map[command:[curl -f http://localhost:8080/api/v1/info]]"}, } for _, tt := range tests { @@ -352,10 +379,29 @@ func TestCoalesceValues(t *testing.T) { } } - nullKeys := []string{"bottom", "right", "left", "front"} + nullKeys := []string{"bottom", "right", "left", "front", + "web.livenessProbe.httpGet", "web.readinessProbe.httpGet", "web.livenessProbe.timeoutSeconds", "web.readinessProbe.timeoutSeconds"} for _, nullKey := range nullKeys { - if _, ok := v[nullKey]; ok { - t.Errorf("Expected key %q to be removed, still present", nullKey) + parts := strings.Split(nullKey, ".") + curMap := v + for partIdx, part := range parts { + nextVal, ok := curMap[part] + if partIdx == len(parts)-1 { // are we the last? + if ok { + t.Errorf("Expected key %q to be removed, still present", nullKey) + break + } + } else { // we are not the last + if !ok { + t.Errorf("Expected key %q to be removed, but partial parent path was not found", nullKey) + break + } + curMap, ok = nextVal.(map[string]interface{}) + if !ok { + t.Errorf("Expected key %q to be removed, but partial parent path did not result in a map", nullKey) + break + } + } } } } @@ -386,7 +432,7 @@ func TestCoalesceTables(t *testing.T) { // What we expect is that anything in dst overrides anything in src, but that // otherwise the values are coalesced. - coalesceTables(dst, src, "") + dst = coalesceTables(dst, src, "") if dst["name"] != "Ishmael" { t.Errorf("Unexpected name: %s", dst["name"]) diff --git a/pkg/helm/environment/environment.go b/pkg/helm/environment/environment.go index 6d40fb846..9cfe80a1d 100644 --- a/pkg/helm/environment/environment.go +++ b/pkg/helm/environment/environment.go @@ -80,23 +80,23 @@ type EnvSettings struct { // AddFlags binds flags to the given flagset. func (s *EnvSettings) AddFlags(fs *pflag.FlagSet) { - fs.StringVar((*string)(&s.Home), "home", DefaultHelmHome, "location of your Helm config. Overrides $HELM_HOME") - fs.StringVar(&s.TillerHost, "host", "", "address of Tiller. Overrides $HELM_HOST") - fs.StringVar(&s.KubeContext, "kube-context", "", "name of the kubeconfig context to use") - fs.StringVar(&s.KubeConfig, "kubeconfig", "", "absolute path to the kubeconfig file to use") - fs.BoolVar(&s.Debug, "debug", false, "enable verbose output") - fs.StringVar(&s.TillerNamespace, "tiller-namespace", "kube-system", "namespace of Tiller") - fs.Int64Var(&s.TillerConnectionTimeout, "tiller-connection-timeout", int64(300), "the duration (in seconds) Helm will wait to establish a connection to tiller") + fs.StringVar((*string)(&s.Home), "home", DefaultHelmHome, "Location of your Helm config. Overrides $HELM_HOME") + fs.StringVar(&s.TillerHost, "host", "", "Address of Tiller. Overrides $HELM_HOST") + fs.StringVar(&s.KubeContext, "kube-context", "", "Name of the kubeconfig context to use") + fs.StringVar(&s.KubeConfig, "kubeconfig", "", "Absolute path of the kubeconfig file to be used") + fs.BoolVar(&s.Debug, "debug", false, "Enable verbose output") + fs.StringVar(&s.TillerNamespace, "tiller-namespace", "kube-system", "Namespace of Tiller") + fs.Int64Var(&s.TillerConnectionTimeout, "tiller-connection-timeout", int64(300), "The duration (in seconds) Helm will wait to establish a connection to Tiller") } // AddFlagsTLS adds the flags for supporting client side TLS to the given flagset. func (s *EnvSettings) AddFlagsTLS(fs *pflag.FlagSet) { - fs.StringVar(&s.TLSServerName, "tls-hostname", s.TillerHost, "the server name used to verify the hostname on the returned certificates from the server") - fs.StringVar(&s.TLSCaCertFile, "tls-ca-cert", DefaultTLSCaCert, "path to TLS CA certificate file") - fs.StringVar(&s.TLSCertFile, "tls-cert", DefaultTLSCert, "path to TLS certificate file") - fs.StringVar(&s.TLSKeyFile, "tls-key", DefaultTLSKeyFile, "path to TLS key file") - fs.BoolVar(&s.TLSVerify, "tls-verify", DefaultTLSVerify, "enable TLS for request and verify remote") - fs.BoolVar(&s.TLSEnable, "tls", DefaultTLSEnable, "enable TLS for request") + fs.StringVar(&s.TLSServerName, "tls-hostname", s.TillerHost, "The server name used to verify the hostname on the returned certificates from the server") + fs.StringVar(&s.TLSCaCertFile, "tls-ca-cert", DefaultTLSCaCert, "Path to TLS CA certificate file") + fs.StringVar(&s.TLSCertFile, "tls-cert", DefaultTLSCert, "Path to TLS certificate file") + fs.StringVar(&s.TLSKeyFile, "tls-key", DefaultTLSKeyFile, "Path to TLS key file") + fs.BoolVar(&s.TLSVerify, "tls-verify", DefaultTLSVerify, "Enable TLS for request and verify remote") + fs.BoolVar(&s.TLSEnable, "tls", DefaultTLSEnable, "Enable TLS for request") } // Init sets values from the environment. diff --git a/pkg/kube/client.go b/pkg/kube/client.go index aa025eb0a..dfce2aaff 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -141,7 +141,7 @@ func (c *Client) validator() validation.Schema { return schema } -// BuildUnstructured validates for Kubernetes objects and returns unstructured infos. +// BuildUnstructured reads Kubernetes objects and returns unstructured infos. func (c *Client) BuildUnstructured(namespace string, reader io.Reader) (Result, error) { var result Result @@ -150,13 +150,29 @@ func (c *Client) BuildUnstructured(namespace string, reader io.Reader) (Result, ContinueOnError(). NamespaceParam(namespace). DefaultNamespace(). - Schema(c.validator()). Stream(reader, ""). Flatten(). Do().Infos() return result, scrubValidationError(err) } +// Validate reads Kubernetes manifests and validates the content. +// +// This function does not actually do schema validation of manifests. Adding +// validation now breaks existing clients of helm: https://github.com/helm/helm/issues/5750 +func (c *Client) Validate(namespace string, reader io.Reader) error { + _, err := c.NewBuilder(). + Unstructured(). + ContinueOnError(). + NamespaceParam(namespace). + DefaultNamespace(). + // Schema(c.validator()). // No schema validation + Stream(reader, ""). + Flatten(). + Do().Infos() + return scrubValidationError(err) +} + // Build validates for Kubernetes objects and returns resource Infos from a io.Reader. func (c *Client) Build(namespace string, reader io.Reader) (Result, error) { var result Result diff --git a/pkg/kube/client_test.go b/pkg/kube/client_test.go index 810abdf17..561aa8acb 100644 --- a/pkg/kube/client_test.go +++ b/pkg/kube/client_test.go @@ -700,7 +700,7 @@ spec: tier: backend role: master --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: redis-master @@ -740,7 +740,7 @@ spec: tier: backend role: slave --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: redis-slave @@ -780,7 +780,7 @@ spec: app: guestbook tier: frontend --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: frontend diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index 8bf5a0927..7204f36b9 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -37,12 +37,12 @@ const ( func TestBadChart(t *testing.T) { m := All(badChartDir, values, namespace, strict).Messages - if len(m) != 5 { + if len(m) != 6 { t.Errorf("Number of errors %v", len(m)) t.Errorf("All didn't fail with expected errors, got %#v", m) } // There should be one INFO, 2 WARNINGs and one ERROR messages, check for them - var i, w, e, e2, e3 bool + var i, w, e, e2, e3, e4 bool for _, msg := range m { if msg.Severity == support.InfoSev { if strings.Contains(msg.Err.Error(), "icon is recommended") { @@ -64,9 +64,13 @@ func TestBadChart(t *testing.T) { if strings.Contains(msg.Err.Error(), "directory name (badchartfile) and chart name () must be the same") { e3 = true } + + if strings.Contains(msg.Err.Error(), "apiVersion is required") { + e4 = true + } } } - if !e || !e2 || !e3 || !w || !i { + if !e || !e2 || !e3 || !e4 || !w || !i { t.Errorf("Didn't find all the expected errors, got %#v", m) } } diff --git a/pkg/lint/rules/chartfile.go b/pkg/lint/rules/chartfile.go index 95ee38f0b..8ef33d0c5 100644 --- a/pkg/lint/rules/chartfile.go +++ b/pkg/lint/rules/chartfile.go @@ -51,6 +51,7 @@ func Chartfile(linter *support.Linter) { linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartNameDirMatch(linter.ChartDir, chartFile)) // Chart metadata + linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartApiVersion(chartFile)) linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartVersion(chartFile)) linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartEngine(chartFile)) linter.RunLinterRule(support.ErrorSev, chartFileName, validateChartMaintainer(chartFile)) @@ -96,6 +97,18 @@ func validateChartNameDirMatch(chartDir string, cf *chart.Metadata) error { return nil } +func validateChartApiVersion(cf *chart.Metadata) error { + if cf.ApiVersion == "" { + return errors.New("apiVersion is required") + } + + if cf.ApiVersion != "v1" { + return fmt.Errorf("apiVersion '%s' is not valid. The value must be \"v1\"", cf.ApiVersion) + } + + return nil +} + func validateChartVersion(cf *chart.Metadata) error { if cf.Version == "" { return errors.New("version is required") diff --git a/pkg/lint/rules/chartfile_test.go b/pkg/lint/rules/chartfile_test.go index 2422a2d10..a44129acf 100644 --- a/pkg/lint/rules/chartfile_test.go +++ b/pkg/lint/rules/chartfile_test.go @@ -236,8 +236,8 @@ func TestChartfile(t *testing.T) { Chartfile(&linter) msgs := linter.Messages - if len(msgs) != 4 { - t.Errorf("Expected 3 errors, got %d", len(msgs)) + if len(msgs) != 5 { + t.Errorf("Expected 4 errors, got %d", len(msgs)) } if !strings.Contains(msgs[0].Err.Error(), "name is required") { @@ -248,12 +248,16 @@ func TestChartfile(t *testing.T) { t.Errorf("Unexpected message 1: %s", msgs[1].Err) } - if !strings.Contains(msgs[2].Err.Error(), "version 0.0.0 is less than or equal to 0") { + if !strings.Contains(msgs[2].Err.Error(), "apiVersion is required") { t.Errorf("Unexpected message 2: %s", msgs[2].Err) } - if !strings.Contains(msgs[3].Err.Error(), "icon is recommended") { - t.Errorf("Unexpected message 3: %s", msgs[3].Err) + if !strings.Contains(msgs[3].Err.Error(), "version 0.0.0 is less than or equal to 0") { + t.Errorf("Unexpected message 3: %s", msgs[2].Err) + } + + if !strings.Contains(msgs[4].Err.Error(), "icon is recommended") { + t.Errorf("Unexpected message 4: %s", msgs[3].Err) } } diff --git a/pkg/lint/rules/testdata/albatross/Chart.yaml b/pkg/lint/rules/testdata/albatross/Chart.yaml index c108fa5e5..21124acfc 100644 --- a/pkg/lint/rules/testdata/albatross/Chart.yaml +++ b/pkg/lint/rules/testdata/albatross/Chart.yaml @@ -1,3 +1,4 @@ +apiVersion: v1 name: albatross description: testing chart version: 199.44.12345-Alpha.1+cafe009 diff --git a/pkg/lint/rules/testdata/badvaluesfile/Chart.yaml b/pkg/lint/rules/testdata/badvaluesfile/Chart.yaml index bed845249..632919d03 100644 --- a/pkg/lint/rules/testdata/badvaluesfile/Chart.yaml +++ b/pkg/lint/rules/testdata/badvaluesfile/Chart.yaml @@ -1,3 +1,4 @@ +apiVersion: v1 name: badvaluesfile description: A Helm chart for Kubernetes version: 0.0.1 diff --git a/pkg/lint/rules/testdata/goodone/Chart.yaml b/pkg/lint/rules/testdata/goodone/Chart.yaml index de05463ca..cb7a4bf20 100644 --- a/pkg/lint/rules/testdata/goodone/Chart.yaml +++ b/pkg/lint/rules/testdata/goodone/Chart.yaml @@ -1,3 +1,4 @@ +apiVersion: v1 name: goodone description: good testing chart version: 199.44.12345-Alpha.1+cafe009 diff --git a/pkg/provenance/sign.go b/pkg/provenance/sign.go index 5e23c2dda..26ae26031 100644 --- a/pkg/provenance/sign.go +++ b/pkg/provenance/sign.go @@ -404,6 +404,8 @@ func DigestFile(filename string) (string, error) { // Helm uses SHA256 as its default hash for all non-cryptographic applications. func Digest(in io.Reader) (string, error) { hash := crypto.SHA256.New() - io.Copy(hash, in) + if _, err := io.Copy(hash, in); err != nil { + return "", err + } return hex.EncodeToString(hash.Sum(nil)), nil } diff --git a/pkg/storage/driver/mock_test.go b/pkg/storage/driver/mock_test.go index 0d55497e7..06f48fba3 100644 --- a/pkg/storage/driver/mock_test.go +++ b/pkg/storage/driver/mock_test.go @@ -20,6 +20,8 @@ import ( "fmt" "testing" + sqlmock "github.com/DATA-DOG/go-sqlmock" + "github.com/jmoiron/sqlx" "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -231,3 +233,17 @@ func (mock *MockSecretsInterface) Delete(name string, opts *metav1.DeleteOptions delete(mock.objects, name) return nil } + +// newTestFixtureSQL mocks the SQL database (for testing purposes) +func newTestFixtureSQL(t *testing.T, releases ...*rspb.Release) (*SQL, sqlmock.Sqlmock) { + sqlDB, mock, err := sqlmock.New() + if err != nil { + t.Fatalf("error when opening stub database connection: %v", err) + } + + sqlxDB := sqlx.NewDb(sqlDB, "sqlmock") + return &SQL{ + db: sqlxDB, + Log: func(_ string, _ ...interface{}) {}, + }, mock +} diff --git a/pkg/storage/driver/sql.go b/pkg/storage/driver/sql.go new file mode 100644 index 000000000..46bcccc32 --- /dev/null +++ b/pkg/storage/driver/sql.go @@ -0,0 +1,336 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package driver + +import ( + "fmt" + "sort" + "strings" + "time" + + "github.com/jmoiron/sqlx" + migrate "github.com/rubenv/sql-migrate" + + // Import pq for potgres dialect + _ "github.com/lib/pq" + + rspb "k8s.io/helm/pkg/proto/hapi/release" + storageerrors "k8s.io/helm/pkg/storage/errors" +) + +var _ Driver = (*SQL)(nil) + +var labelMap = map[string]string{ + "MODIFIED_AT": "modified_at", + "CREATED_AT": "created_at", + "VERSION": "version", + "STATUS": "status", + "OWNER": "owner", + "NAME": "name", +} + +var supportedSQLDialects = map[string]struct{}{ + "postgres": {}, +} + +// SQLDriverName is the string name of this driver. +const SQLDriverName = "SQL" + +// SQL is the sql storage driver implementation. +type SQL struct { + db *sqlx.DB + Log func(string, ...interface{}) +} + +// Name returns the name of the driver. +func (s *SQL) Name() string { + return SQLDriverName +} + +func (s *SQL) ensureDBSetup() error { + // Populate the database with the relations we need if they don't exist yet + migrations := &migrate.MemoryMigrationSource{ + Migrations: []*migrate.Migration{ + { + Id: "init", + Up: []string{ + ` + CREATE TABLE releases ( + key VARCHAR(67) PRIMARY KEY, + body TEXT NOT NULL, + + name VARCHAR(64) NOT NULL, + version INTEGER NOT NULL, + status TEXT NOT NULL, + owner TEXT NOT NULL, + created_at INTEGER NOT NULL, + modified_at INTEGER NOT NULL DEFAULT 0 + ); + + CREATE INDEX ON releases (key); + CREATE INDEX ON releases (version); + CREATE INDEX ON releases (status); + CREATE INDEX ON releases (owner); + CREATE INDEX ON releases (created_at); + CREATE INDEX ON releases (modified_at); + `, + }, + Down: []string{ + ` + DROP TABLE releases; + `, + }, + }, + }, + } + + _, err := migrate.Exec(s.db.DB, "postgres", migrations, migrate.Up) + return err +} + +// SQLReleaseWrapper describes how Helm releases are stored in an SQL database +type SQLReleaseWrapper struct { + // The primary key, made of {release-name}.{release-version} + Key string `db:"key"` + + // The rspb.Release body, as a base64-encoded string + Body string `db:"body"` + + // Release "labels" that can be used as filters in the storage.Query(labels map[string]string) + // we implemented. Note that allowing Helm users to filter against new dimensions will require a + // new migration to be added, and the Create and/or update functions to be updated accordingly. + Name string `db:"name"` + Version int `db:"version"` + Status string `db:"status"` + Owner string `db:"owner"` + CreatedAt int `db:"created_at"` + ModifiedAt int `db:"modified_at"` +} + +// NewSQL initializes a new memory driver. +func NewSQL(dialect, connectionString string, logger func(string, ...interface{})) (*SQL, error) { + if _, ok := supportedSQLDialects[dialect]; !ok { + return nil, fmt.Errorf("%s dialect isn't supported, only \"postgres\" is available for now", dialect) + } + + db, err := sqlx.Connect(dialect, connectionString) + if err != nil { + return nil, err + } + + driver := &SQL{ + db: db, + Log: logger, + } + + if err := driver.ensureDBSetup(); err != nil { + return nil, err + } + + return driver, nil +} + +// Get returns the release named by key. +func (s *SQL) Get(key string) (*rspb.Release, error) { + var record SQLReleaseWrapper + // Get will return an error if the result is empty + err := s.db.Get(&record, "SELECT body FROM releases WHERE key = $1", key) + if err != nil { + s.Log("got SQL error when getting release %s: %v", key, err) + return nil, storageerrors.ErrReleaseNotFound(key) + } + + release, err := decodeRelease(record.Body) + if err != nil { + s.Log("get: failed to decode data %q: %v", key, err) + return nil, err + } + + return release, nil +} + +// List returns the list of all releases such that filter(release) == true +func (s *SQL) List(filter func(*rspb.Release) bool) ([]*rspb.Release, error) { + var records = []SQLReleaseWrapper{} + if err := s.db.Select(&records, "SELECT body FROM releases WHERE owner = 'TILLER'"); err != nil { + s.Log("list: failed to list: %v", err) + return nil, err + } + + var releases []*rspb.Release + for _, record := range records { + release, err := decodeRelease(record.Body) + if err != nil { + s.Log("list: failed to decode release: %v: %v", record, err) + continue + } + if filter(release) { + releases = append(releases, release) + } + } + + return releases, nil +} + +// Query returns the set of releases that match the provided set of labels. +func (s *SQL) Query(labels map[string]string) ([]*rspb.Release, error) { + var sqlFilterKeys []string + sqlFilter := map[string]interface{}{} + for key, val := range labels { + // Build a slice of where filters e.g + // labels = map[string]string{ "foo": "foo", "bar": "bar" } + // []string{ "foo=?", "bar=?" } + if dbField, ok := labelMap[key]; ok { + sqlFilterKeys = append(sqlFilterKeys, strings.Join([]string{dbField, "=:", dbField}, "")) + sqlFilter[dbField] = val + } else { + s.Log("unknown label %s", key) + return nil, fmt.Errorf("unknow label %s", key) + } + } + sort.Strings(sqlFilterKeys) + + // Build our query + query := strings.Join([]string{ + "SELECT body FROM releases", + "WHERE", + strings.Join(sqlFilterKeys, " AND "), + }, " ") + + rows, err := s.db.NamedQuery(query, sqlFilter) + if err != nil { + s.Log("failed to query with labels: %v", err) + return nil, err + } + + var releases []*rspb.Release + for rows.Next() { + var record SQLReleaseWrapper + if err = rows.StructScan(&record); err != nil { + s.Log("failed to scan record %q: %v", record, err) + return nil, err + } + + release, err := decodeRelease(record.Body) + if err != nil { + s.Log("failed to decode release: %v", err) + continue + } + releases = append(releases, release) + } + + if len(releases) == 0 { + return nil, storageerrors.ErrReleaseNotFound(labels["NAME"]) + } + + return releases, nil +} + +// Create creates a new release. +func (s *SQL) Create(key string, rls *rspb.Release) error { + body, err := encodeRelease(rls) + if err != nil { + s.Log("failed to encode release: %v", err) + return err + } + + transaction, err := s.db.Beginx() + if err != nil { + s.Log("failed to start SQL transaction: %v", err) + return fmt.Errorf("error beginning transaction: %v", err) + } + + if _, err := transaction.NamedExec("INSERT INTO releases (key, body, name, version, status, owner, created_at) VALUES (:key, :body, :name, :version, :status, :owner, :created_at)", + &SQLReleaseWrapper{ + Key: key, + Body: body, + + Name: rls.Name, + Version: int(rls.Version), + Status: rspb.Status_Code_name[int32(rls.Info.Status.Code)], + Owner: "TILLER", + CreatedAt: int(time.Now().Unix()), + }, + ); err != nil { + defer transaction.Rollback() + var record SQLReleaseWrapper + if err := transaction.Get(&record, "SELECT key FROM releases WHERE key = ?", key); err == nil { + s.Log("release %s already exists", key) + return storageerrors.ErrReleaseExists(key) + } + + s.Log("failed to store release %s in SQL database: %v", key, err) + return err + } + defer transaction.Commit() + + return nil +} + +// Update updates a release. +func (s *SQL) Update(key string, rls *rspb.Release) error { + body, err := encodeRelease(rls) + if err != nil { + s.Log("failed to encode release: %v", err) + return err + } + + if _, err := s.db.NamedExec("UPDATE releases SET body=:body, name=:name, version=:version, status=:status, owner=:owner, modified_at=:modified_at WHERE key=:key", + &SQLReleaseWrapper{ + Key: key, + Body: body, + + Name: rls.Name, + Version: int(rls.Version), + Status: rspb.Status_Code_name[int32(rls.Info.Status.Code)], + Owner: "TILLER", + ModifiedAt: int(time.Now().Unix()), + }, + ); err != nil { + s.Log("failed to update release %s in SQL database: %v", key, err) + return err + } + + return nil +} + +// Delete deletes a release or returns ErrReleaseNotFound. +func (s *SQL) Delete(key string) (*rspb.Release, error) { + transaction, err := s.db.Beginx() + if err != nil { + s.Log("failed to start SQL transaction: %v", err) + return nil, fmt.Errorf("error beginning transaction: %v", err) + } + + var record SQLReleaseWrapper + err = transaction.Get(&record, "SELECT body FROM releases WHERE key = $1", key) + if err != nil { + s.Log("release %s not found: %v", key, err) + return nil, storageerrors.ErrReleaseNotFound(key) + } + + release, err := decodeRelease(record.Body) + if err != nil { + s.Log("failed to decode release %s: %v", key, err) + transaction.Rollback() + return nil, err + } + defer transaction.Commit() + + _, err = transaction.Exec("DELETE FROM releases WHERE key = $1", key) + return release, err +} diff --git a/pkg/storage/driver/sql_test.go b/pkg/storage/driver/sql_test.go new file mode 100644 index 000000000..b6aa08588 --- /dev/null +++ b/pkg/storage/driver/sql_test.go @@ -0,0 +1,346 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package driver + +import ( + "fmt" + "regexp" + "testing" + "time" + + sqlmock "github.com/DATA-DOG/go-sqlmock" + rspb "k8s.io/helm/pkg/proto/hapi/release" +) + +func TestSQLName(t *testing.T) { + sqlDriver, _ := newTestFixtureSQL(t) + if sqlDriver.Name() != SQLDriverName { + t.Errorf("Expected name to be %q, got %q", SQLDriverName, sqlDriver.Name()) + } +} + +func TestSQLGet(t *testing.T) { + vers := int32(1) + name := "smug-pigeon" + namespace := "default" + key := testKey(name, vers) + rel := releaseStub(name, vers, namespace, rspb.Status_DEPLOYED) + + body, err := encodeRelease(rel) + if err != nil { + t.Fatal(err) + } + + sqlDriver, mock := newTestFixtureSQL(t) + mock. + ExpectQuery("SELECT body FROM releases WHERE key = ?"). + WithArgs(key). + WillReturnRows( + mock.NewRows([]string{ + "body", + }).AddRow( + body, + ), + ).RowsWillBeClosed() + + got, err := sqlDriver.Get(key) + if err != nil { + t.Fatalf("Failed to get release: %v", err) + } + + if !shallowReleaseEqual(rel, got) { + t.Errorf("Expected release {%q}, got {%q}", rel, got) + } + + if err := mock.ExpectationsWereMet(); err != nil { + t.Errorf("sql expectations weren't met: %v", err) + } +} + +func TestSQLList(t *testing.T) { + body1, _ := encodeRelease(releaseStub("key-1", 1, "default", rspb.Status_DELETED)) + body2, _ := encodeRelease(releaseStub("key-2", 1, "default", rspb.Status_DELETED)) + body3, _ := encodeRelease(releaseStub("key-3", 1, "default", rspb.Status_DEPLOYED)) + body4, _ := encodeRelease(releaseStub("key-4", 1, "default", rspb.Status_DEPLOYED)) + body5, _ := encodeRelease(releaseStub("key-5", 1, "default", rspb.Status_SUPERSEDED)) + body6, _ := encodeRelease(releaseStub("key-6", 1, "default", rspb.Status_SUPERSEDED)) + + sqlDriver, mock := newTestFixtureSQL(t) + + for i := 0; i < 3; i++ { + mock. + ExpectQuery("SELECT body FROM releases WHERE owner = 'TILLER'"). + WillReturnRows( + mock.NewRows([]string{ + "body", + }). + AddRow(body1). + AddRow(body2). + AddRow(body3). + AddRow(body4). + AddRow(body5). + AddRow(body6), + ).RowsWillBeClosed() + } + + // list all deleted releases + del, err := sqlDriver.List(func(rel *rspb.Release) bool { + return rel.Info.Status.Code == rspb.Status_DELETED + }) + // check + if err != nil { + t.Errorf("Failed to list deleted: %v", err) + } + if len(del) != 2 { + t.Errorf("Expected 2 deleted, got %d:\n%v\n", len(del), del) + } + + // list all deployed releases + dpl, err := sqlDriver.List(func(rel *rspb.Release) bool { + return rel.Info.Status.Code == rspb.Status_DEPLOYED + }) + // check + if err != nil { + t.Errorf("Failed to list deployed: %v", err) + } + if len(dpl) != 2 { + t.Errorf("Expected 2 deployed, got %d:\n%v\n", len(dpl), dpl) + } + + // list all superseded releases + ssd, err := sqlDriver.List(func(rel *rspb.Release) bool { + return rel.Info.Status.Code == rspb.Status_SUPERSEDED + }) + // check + if err != nil { + t.Errorf("Failed to list superseded: %v", err) + } + if len(ssd) != 2 { + t.Errorf("Expected 2 superseded, got %d:\n%v\n", len(ssd), ssd) + } + + if err := mock.ExpectationsWereMet(); err != nil { + t.Errorf("sql expectations weren't met: %v", err) + } +} + +func TestSqlCreate(t *testing.T) { + vers := int32(1) + name := "smug-pigeon" + namespace := "default" + key := testKey(name, vers) + rel := releaseStub(name, vers, namespace, rspb.Status_DEPLOYED) + + sqlDriver, mock := newTestFixtureSQL(t) + body, _ := encodeRelease(rel) + + mock.ExpectBegin() + mock. + ExpectExec(regexp.QuoteMeta("INSERT INTO releases (key, body, name, version, status, owner, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)")). + WithArgs(key, body, rel.Name, int(rel.Version), rspb.Status_Code_name[int32(rel.Info.Status.Code)], "TILLER", int(time.Now().Unix())). + WillReturnResult(sqlmock.NewResult(1, 1)) + mock.ExpectCommit() + + if err := sqlDriver.Create(key, rel); err != nil { + t.Fatalf("failed to create release with key %q: %v", key, err) + } + + if err := mock.ExpectationsWereMet(); err != nil { + t.Errorf("sql expectations weren't met: %v", err) + } +} + +func TestSqlCreateAlreadyExists(t *testing.T) { + vers := int32(1) + name := "smug-pigeon" + namespace := "default" + key := testKey(name, vers) + rel := releaseStub(name, vers, namespace, rspb.Status_DEPLOYED) + + sqlDriver, mock := newTestFixtureSQL(t) + body, _ := encodeRelease(rel) + + // Insert fails (primary key already exists) + mock.ExpectBegin() + mock. + ExpectExec(regexp.QuoteMeta("INSERT INTO releases (key, body, name, version, status, owner, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)")). + WithArgs(key, body, rel.Name, int(rel.Version), rspb.Status_Code_name[int32(rel.Info.Status.Code)], "TILLER", int(time.Now().Unix())). + WillReturnError(fmt.Errorf("dialect dependent SQL error")) + + // Let's check that we do make sure the error is due to a release already existing + mock. + ExpectQuery(regexp.QuoteMeta("SELECT key FROM releases WHERE key = ?")). + WithArgs(key). + WillReturnRows( + mock.NewRows([]string{ + "body", + }).AddRow( + body, + ), + ).RowsWillBeClosed() + mock.ExpectRollback() + + if err := sqlDriver.Create(key, rel); err == nil { + t.Fatalf("failed to create release with key %q: %v", key, err) + } + + if err := mock.ExpectationsWereMet(); err != nil { + t.Errorf("sql expectations weren't met: %v", err) + } +} + +func TestSqlUpdate(t *testing.T) { + vers := int32(1) + name := "smug-pigeon" + namespace := "default" + key := testKey(name, vers) + rel := releaseStub(name, vers, namespace, rspb.Status_DEPLOYED) + + sqlDriver, mock := newTestFixtureSQL(t) + body, _ := encodeRelease(rel) + + mock. + ExpectExec(regexp.QuoteMeta("UPDATE releases SET body=?, name=?, version=?, status=?, owner=?, modified_at=? WHERE key=?")). + WithArgs(body, rel.Name, int(rel.Version), rspb.Status_Code_name[int32(rel.Info.Status.Code)], "TILLER", int(time.Now().Unix()), key). + WillReturnResult(sqlmock.NewResult(0, 1)) + + if err := sqlDriver.Update(key, rel); err != nil { + t.Fatalf("failed to update release with key %q: %v", key, err) + } + + if err := mock.ExpectationsWereMet(); err != nil { + t.Errorf("sql expectations weren't met: %v", err) + } +} + +func TestSqlQuery(t *testing.T) { + // Reflect actual use cases in ../storage.go + labelSetDeployed := map[string]string{ + "NAME": "smug-pigeon", + "OWNER": "TILLER", + "STATUS": "DEPLOYED", + } + labelSetAll := map[string]string{ + "NAME": "smug-pigeon", + "OWNER": "TILLER", + } + + supersededRelease := releaseStub("smug-pigeon", 1, "default", rspb.Status_SUPERSEDED) + supersededReleaseBody, _ := encodeRelease(supersededRelease) + deployedRelease := releaseStub("smug-pigeon", 2, "default", rspb.Status_DEPLOYED) + deployedReleaseBody, _ := encodeRelease(deployedRelease) + + // Let's actually start our test + sqlDriver, mock := newTestFixtureSQL(t) + + mock. + ExpectQuery(regexp.QuoteMeta("SELECT body FROM releases WHERE name=? AND owner=? AND status=?")). + WithArgs("smug-pigeon", "TILLER", "DEPLOYED"). + WillReturnRows( + mock.NewRows([]string{ + "body", + }).AddRow( + deployedReleaseBody, + ), + ).RowsWillBeClosed() + + mock. + ExpectQuery(regexp.QuoteMeta("SELECT body FROM releases WHERE name=? AND owner=?")). + WithArgs("smug-pigeon", "TILLER"). + WillReturnRows( + mock.NewRows([]string{ + "body", + }).AddRow( + supersededReleaseBody, + ).AddRow( + deployedReleaseBody, + ), + ).RowsWillBeClosed() + + results, err := sqlDriver.Query(labelSetDeployed) + if err != nil { + t.Fatalf("failed to query for deployed smug-pigeon release: %v", err) + } + + for _, res := range results { + if !shallowReleaseEqual(res, deployedRelease) { + t.Errorf("Expected release {%q}, got {%q}", deployedRelease, res) + } + } + + results, err = sqlDriver.Query(labelSetAll) + if err != nil { + t.Fatalf("failed to query release history for smug-pigeon: %v", err) + } + + if len(results) != 2 { + t.Errorf("expected a resultset of size 2, got %d", len(results)) + } + + for _, res := range results { + if !shallowReleaseEqual(res, deployedRelease) && !shallowReleaseEqual(res, supersededRelease) { + t.Errorf("Expected release {%q} or {%q}, got {%q}", deployedRelease, supersededRelease, res) + } + } + + if err := mock.ExpectationsWereMet(); err != nil { + t.Errorf("sql expectations weren't met: %v", err) + } +} + +func TestSqlDelete(t *testing.T) { + vers := int32(1) + name := "smug-pigeon" + namespace := "default" + key := testKey(name, vers) + rel := releaseStub(name, vers, namespace, rspb.Status_DEPLOYED) + + body, _ := encodeRelease(rel) + + sqlDriver, mock := newTestFixtureSQL(t) + + mock.ExpectBegin() + mock. + ExpectQuery("SELECT body FROM releases WHERE key = ?"). + WithArgs(key). + WillReturnRows( + mock.NewRows([]string{ + "body", + }).AddRow( + body, + ), + ).RowsWillBeClosed() + + mock. + ExpectExec(regexp.QuoteMeta("DELETE FROM releases WHERE key = $1")). + WithArgs(key). + WillReturnResult(sqlmock.NewResult(0, 1)) + mock.ExpectCommit() + + deletedRelease, err := sqlDriver.Delete(key) + if err != nil { + t.Fatalf("failed to delete release with key %q: %v", key, err) + } + + if !shallowReleaseEqual(rel, deletedRelease) { + t.Errorf("Expected release {%q}, got {%q}", rel, deletedRelease) + } + + if err := mock.ExpectationsWereMet(); err != nil { + t.Errorf("sql expectations weren't met: %v", err) + } +} diff --git a/pkg/tiller/environment/environment.go b/pkg/tiller/environment/environment.go index 21c23d421..24b93bfb3 100644 --- a/pkg/tiller/environment/environment.go +++ b/pkg/tiller/environment/environment.go @@ -147,8 +147,20 @@ type KubeClient interface { UpdateWithOptions(namespace string, originalReader, modifiedReader io.Reader, opts kube.UpdateOptions) error Build(namespace string, reader io.Reader) (kube.Result, error) + + // BuildUnstructured reads a stream of manifests from a reader and turns them into + // info objects. Manifests are not validated against the schema, but it will fail if + // any resoures types are not known by the apiserver. + // + // reader must contain a YAML stream (one or more YAML documents separated by "\n---\n"). BuildUnstructured(namespace string, reader io.Reader) (kube.Result, error) + // Validate reads a stream of manifests from a reader and validates them against + // the schema from the apiserver. It returns an error if any of the manifests does not validate. + // + // reader must contain a YAML stream (one or more YAML documents separated by "\n---\n"). + Validate(namespace string, reader io.Reader) error + // WaitAndGetCompletedPodPhase waits up to a timeout until a pod enters a completed phase // and returns said phase (PodSucceeded or PodFailed qualify). WaitAndGetCompletedPodPhase(namespace string, reader io.Reader, timeout time.Duration) (v1.PodPhase, error) @@ -214,6 +226,11 @@ func (p *PrintingKubeClient) BuildUnstructured(ns string, reader io.Reader) (kub return []*resource.Info{}, nil } +// Validate implements KubeClient Validate +func (p *PrintingKubeClient) Validate(ns string, reader io.Reader) error { + return nil +} + // WaitAndGetCompletedPodPhase implements KubeClient WaitAndGetCompletedPodPhase. func (p *PrintingKubeClient) WaitAndGetCompletedPodPhase(namespace string, reader io.Reader, timeout time.Duration) (v1.PodPhase, error) { _, err := io.Copy(p.Out, reader) diff --git a/pkg/tiller/environment/environment_test.go b/pkg/tiller/environment/environment_test.go index 24ff8b88d..1c2d5343f 100644 --- a/pkg/tiller/environment/environment_test.go +++ b/pkg/tiller/environment/environment_test.go @@ -64,6 +64,9 @@ func (k *mockKubeClient) Build(ns string, reader io.Reader) (kube.Result, error) func (k *mockKubeClient) BuildUnstructured(ns string, reader io.Reader) (kube.Result, error) { return []*resource.Info{}, nil } +func (k *mockKubeClient) Validate(ns string, reader io.Reader) error { + return nil +} func (k *mockKubeClient) WaitAndGetCompletedPodPhase(namespace string, reader io.Reader, timeout time.Duration) (v1.PodPhase, error) { return v1.PodUnknown, nil } diff --git a/pkg/tiller/release_server.go b/pkg/tiller/release_server.go index 6733035f7..c5638d20d 100644 --- a/pkg/tiller/release_server.go +++ b/pkg/tiller/release_server.go @@ -436,8 +436,7 @@ func (s *ReleaseServer) execHook(hs []*release.Hook, name, namespace, hook strin func validateManifest(c environment.KubeClient, ns string, manifest []byte) error { r := bytes.NewReader(manifest) - _, err := c.BuildUnstructured(ns, r) - return err + return c.Validate(ns, r) } func validateReleaseName(releaseName string) error { diff --git a/pkg/tiller/release_server_test.go b/pkg/tiller/release_server_test.go index 05b41be20..d70221ed1 100644 --- a/pkg/tiller/release_server_test.go +++ b/pkg/tiller/release_server_test.go @@ -650,6 +650,9 @@ func (kc *mockHooksKubeClient) Build(ns string, reader io.Reader) (kube.Result, func (kc *mockHooksKubeClient) BuildUnstructured(ns string, reader io.Reader) (kube.Result, error) { return []*resource.Info{}, nil } +func (kc *mockHooksKubeClient) Validate(ns string, reader io.Reader) error { + return nil +} func (kc *mockHooksKubeClient) WaitAndGetCompletedPodPhase(namespace string, reader io.Reader, timeout time.Duration) (v1.PodPhase, error) { return v1.PodUnknown, nil } diff --git a/pkg/version/version.go b/pkg/version/version.go index 692167b83..d32f09c4a 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -26,7 +26,7 @@ var ( // Increment major number for new feature additions and behavioral changes. // Increment minor number for bug fixes and performance enhancements. // Increment patch number for critical fixes to existing releases. - Version = "v2.12" + Version = "v2.14" // BuildMetadata is extra build time data BuildMetadata = "unreleased" diff --git a/scripts/get b/scripts/get index 5479abddb..ea2056ca6 100755 --- a/scripts/get +++ b/scripts/get @@ -111,7 +111,7 @@ checkHelmInstalledVersion() { # for that binary. downloadFile() { HELM_DIST="helm-$TAG-$OS-$ARCH.tar.gz" - DOWNLOAD_URL="https://kubernetes-helm.storage.googleapis.com/$HELM_DIST" + DOWNLOAD_URL="https://get.helm.sh/$HELM_DIST" CHECKSUM_URL="$DOWNLOAD_URL.sha256" HELM_TMP_ROOT="$(mktemp -dt helm-installer-XXXXXX)" HELM_TMP_FILE="$HELM_TMP_ROOT/$HELM_DIST"