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

8/10/2018

I have a kind: Namespace template yaml like follows,

apiVersion: v1
kind: Namespace
metadata:
  name: {{ .Values.namespace }}
  namespace: ""

How do I make helm install create the above-given namespace ({{ .Values.namespace }}) if and only if above namespace ({{ .Values.namespace }}) doesn't exits in the pointed kubernets cluster

-- Kasun Siyambalapitiya
google-cloud-platform
kubernetes
kubernetes-helm
namespaces

2 Answers

8/10/2018

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

-- Ryan Dawson
Source: StackOverflow

3/23/2020

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

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

-- Mathieu
Source: StackOverflow