kubernetes 如何创建一个名称空间,如果它不存在从HELM模板?

vwoqyblh  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(4)|浏览(212)

我有一个kind: Namespace模板YAML,如下所示:

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

字符串
如何让helm install创建上面给定的命名空间({{ .Values.namespace }}),当且仅当上面的命名空间({{ .Values.namespace }})不存在于指向的Kubernetes集群中?

wljmcqd8

wljmcqd81#

此特性在helm >= 3.2(Pull Request)中实现
--namespace <namespace>外,还可使用--create-namespace

moiiocjp

moiiocjp2#

对于helm 2,最好尽可能避免将名称空间创建为图表内容的一部分,并让helm管理它。带有--namespace=<namespace_name>选项的helm install应该会自动为您创建一个命名空间。您可以使用{{ .Release.Namespace }}在图表中引用该命名空间。目前只有一个在公共helm/charts存储库中创建名称空间的示例,它使用a manual flag for checking whether to create it
对于helm 3功能已更改,并且有a github issue on this

pftdvrlh

pftdvrlh3#

由于版本的不同,Helm命令也存在一些差异。
对于Helm 2,只需使用**--命名空间**;对于Helm 3,需要使用**--命名空间--创建命名空间**。
Helm 2示例:

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

字符串
Helm 3示例:

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

lpwwtiir

lpwwtiir4#

对于terraform用户,将create_namespace属性设置为true:

resource "helm_release" "kube_prometheus_stack" {
  name       = ...
  repository = ...
  chart      = ...
  namespace  = ...
  create_namespace = true
}

字符串

相关问题