How to Create a Namespace If It Doesn't Exists from Helm Templates?

I have a kind: Namespace template yaml, as per below:

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 Kubernetes cluster?

Thanks.

0

4 Answers

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

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

2

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

5

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
1

For terraform users, set create_namespace attribute to true:

resource "helm_release" "kube-prometheus-stack" {
  name       = ...
  repository = ...
  chart      = ...
  namespace  = ...
  create_namespace = true
}
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest