[](https://bestpractices.coreinfrastructure.org/projects/3131)
Helm is a tool for managing Charts. Charts are packages of pre-configured Kubernetes resources.
Use Helm to:
- Find and use [popular software packaged as Helm Charts](https://github.com/helm/charts) to run in Kubernetes
- Find and use [popular software packaged as Helm Charts](https://hub.helm.sh) to run in Kubernetes
- Share your own applications as Helm Charts
- Create reproducible builds of your Kubernetes applications
- Intelligently manage your Kubernetes manifest files
@ -20,8 +20,7 @@ Use Helm to:
Helm is a tool that streamlines installing and managing Kubernetes applications.
Think of it like apt/yum/homebrew for Kubernetes.
- Helm has two parts: a client (`helm`) and a library
- The library renders your templates and communicates with the Kubernetes API
- Helm renders your templates and communicates with the Kubernetes API
- Helm runs on your laptop, CI/CD, or wherever you want it to run.
- Charts are Helm packages that contain at least two things:
- A description of the package (`Chart.yaml`)
@ -38,19 +37,19 @@ Unpack the `helm` binary and add it to your PATH and you are good to go!
If you want to use a package manager:
- [Homebrew](https://brew.sh/) users can use `brew install kubernetes-helm`.
- [Homebrew](https://brew.sh/) users can use `brew install helm`.
- [Chocolatey](https://chocolatey.org/) users can use `choco install kubernetes-helm`.
- [Scoop](https://scoop.sh/) users can use `scoop install helm`.
- [GoFish](https://gofi.sh/) users can use `gofish install helm`.
To rapidly get Helm up and running, start with the [Quick Start Guide](https://docs.helm.sh/using_helm/#quickstart-guide).
See the [installation guide](https://docs.helm.sh/using_helm/#installing-helm) for more options,
See the [installation guide](https://helm.sh/docs/intro/install/) for more options,
including installing pre-releases.
## Docs
Get started with the [Quick Start guide](https://docs.helm.sh/using_helm/#quickstart-guide) or plunge into the [complete documentation](https://docs.helm.sh)
Get started with the [Quick Start guide](https://helm.sh/docs/intro/quickstart/) or plunge into the [complete documentation](https://helm.sh/docs)
cmd.Flags().Var(&postRenderer{varRef},postRenderFlag,"the path to an executable to be used for post rendering. If it exists in $PATH, the binary will be used, otherwise it will try to look for the executable at the given path")
f.BoolVar(&client.CreateNamespace,"create-namespace",false,"create the release namespace if not present")
f.BoolVar(&client.DryRun,"dry-run",false,"simulate an install")
f.BoolVar(&client.DisableHooks,"no-hooks",false,"prevent hooks from running during install")
f.BoolVar(&client.Replace,"replace",false,"re-use the given name, even if that name is already used. This is unsafe in production")
f.BoolVar(&client.Replace,"replace",false,"re-use the given name, only if that name is a deleted release which remains in the history. This is unsafe in production")
f.DurationVar(&client.Timeout,"timeout",300*time.Second,"time to wait for any individual Kubernetes operation (like Jobs for hooks)")
f.BoolVar(&client.Wait,"wait",false,"if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment, StatefulSet, or ReplicaSet are in a ready state before marking the release as successful. It will wait for as long as --timeout")
f.BoolVarP(&client.GenerateName,"generate-name","g",false,"generate the name (and omit the NAME parameter)")
f.StringVar(&client.NameTemplate,"name-template","","specify template used to name the release")
f.StringVar(&client.Description,"description","","add a custom description")
f.BoolVar(&client.Devel,"devel",false,"use development versions, too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored")
f.BoolVar(&client.DependencyUpdate,"dependency-update",false,"run helm dependency update before installing the chart")
f.BoolVar(&client.DisableOpenAPIValidation,"disable-openapi-validation",false,"if set, the installation process will not validate rendered templates against the Kubernetes OpenAPI Schema")
f.BoolVar(&client.Atomic,"atomic",false,"if set, installation process purges chart on fail. The --wait flag will be set automatically if --atomic is used")
f.BoolVar(&client.SkipCRDs,"skip-crds",false,"if set, no CRDs will be installed. By default, CRDs are installed if not already present")
f.BoolVar(&client.SubNotes,"render-subchart-notes",false,"if set, render subchart notes along with the parent")
f.BoolVar(&client.AllNamespaces,"all-namespaces",false,"list releases across all namespaces")
f.BoolVarP(&client.AllNamespaces,"all-namespaces","A",false,"list releases across all namespaces")
f.IntVarP(&client.Limit,"max","m",256,"maximum number of releases to fetch")
f.IntVar(&client.Offset,"offset",0,"next release name in the list, used to offset from start value")
f.StringVarP(&client.Filter,"filter","f","","a regular expression (Perl compatible). Any releases that match the expression will be included in the results")
f.BoolVarP(&o.regexp,"regexp","r",false,"use regular expressions for searching repositories you have added")
f.BoolVarP(&o.versions,"versions","l",false,"show the long listing, with each version of each chart on its own line, for repositories you have added")
f.BoolVar(&o.devel,"devel",false,"use development versions (alpha, beta, and release candidate releases), too. Equivalent to version '>0.0.0-0'. If --version is set, this is ignored")
f.StringVar(&o.version,"version","","search using semantic versioning constraints on repositories you have added")
f.UintVar(&o.maxColWidth,"max-col-width",50,"maximum column width for output table")
f.StringArrayVarP(&showFiles,"show-only","s",[]string{},"only show manifests rendered from the given templates")
f.StringVar(&client.OutputDir,"output-dir","","writes the executed templates to files in output-dir instead of stdout")
f.BoolVar(&validate,"validate",false,"establish a connection to Kubernetes for schema validation")
f.BoolVar(&validate,"validate",false,"validate your manifests against the Kubernetes cluster you are currently pointing at. This is the same validation performed on an install")
f.BoolVar(&includeCrds,"include-crds",false,"include CRDs in the templated output")
f.BoolVar(&client.IsUpgrade,"is-upgrade",false,"set .Release.IsUpgrade instead of .Release.IsInstall")
f.StringArrayVarP(&extraAPIs,"api-versions","a",[]string{},"Kubernetes api versions used for Capabilities.APIVersions")
f.BoolVar(&client.UseReleaseName,"release-name",false,"use release name in the output-dir path.")
# 15 (11th object within 02-b.yml, in order to test `SplitManifests` which assigns `manifest-10`
# to this object which should then come *after* `manifest-9`)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: fifteenth
spec:
podSelector: {}
policyTypes:
- Egress
- Ingress
---
# Source: object-order/templates/01-a.yml
# 4 (Deployment should come after all NetworkPolicy manifests, since 'helm template' outputs in install order)
apiVersion: apps/v1
kind: Deployment
metadata:
name: fourth
spec:
selector:
matchLabels:
pod: fourth
replicas: 1
template:
metadata:
labels:
pod: fourth
spec:
containers:
- name: hello-world
image: gcr.io/google-samples/node-hello:1.0
---
# Source: object-order/templates/02-b.yml
# 6 (implementation detail: currently, 'helm template' outputs hook manifests last; and yes, NetworkPolicy won't make a reasonable hook, this is just a dummy unit test manifest)