How to create a namespace if it doesn't exists from HELM templates?

This feature is implemented in helm >= 3.2 (Pull Request)

Use --create-namespace in addition to --namespace <namespace>


For helm2 it's best to avoiding creating the namespace as part of your chart content if at all possible and letting helm manage it. helm install with the --namespace=<namespace_name> option should create a namespace for you automatically. You can reference that namespace in your chart with {{ .Release.Namespace }}. There's currently only one example of creating a namespace in the public helm/charts repo and it uses a manual flag for checking whether to create it

For helm3 functionality has changed and there's a github issue on this


There are some differences in Helm commands due to different versions.

For Helm 2, just use --namespace; for Helm 3, need to use --namespace and --create-namespace.

Helm 2 Example:

helm install stable/nginx-ingress --name ingress-nginx --namespace ingress-nginx --wait

Helm 3 Example:

helm install ingress-nginx stable/nginx-ingress --namespace ingress-nginx --create-namespace --wait