如果从HELM模板中不存在命名空间,如何创建命名空间

Kas*_*iya 8 namespaces google-cloud-platform kubernetes kubernetes-helm

我有一个kind: Namespace模板yaml如下,

apiVersion: v1
kind: Namespace
metadata:
  name: {{ .Values.namespace }}
  namespace: ""
Run Code Online (Sandbox Code Playgroud)

当且仅当上面的namespace()没有在指向的kubernets集群中退出时,如何helm install创建上面给定的namespace({{ .Values.namespace }}){{ .Values.namespace }}

Mat*_*ieu 56

此功能在 helm >= 3.2 ( Pull Request ) 中实现

使用--create-namespace--namespace <namespace>

  • 是的,但是如果命名空间已经存在,它就会失败...... (4认同)

Rya*_*son 12

我建议尽可能避免创建命名空间作为图表内容的一部分,并让掌舵管理它.helm install使用该--namespace=<namespace_name>选项应自动为您创建命名空间.您可以在图表中引用该命名空间{{ .Release.Namespace }}.目前只有一个在public helm/charts repo中创建命名空间的例子,它使用手动标志来检查是否创建它

  • 在 3.0 版本中,标志 `--namespace` 不会自动创建名称空间。不过这个功能会在3.1版本中回归 (7认同)
  • 我似乎没有在3.1.1被添加回来 (3认同)

Jer*_*ong 9

由于版本不同,Helm 命令存在一些差异。

对于 Helm 2,只需使用--namespace;对于 Helm 3,需要使用--namespace--create-namespace

头盔 2 示例:

helm install stable/nginx-ingress --name ingress-nginx --namespace ingress-nginx --wait
Run Code Online (Sandbox Code Playgroud)

掌舵 3 示例:

helm install ingress-nginx stable/nginx-ingress --namespace ingress-nginx --create-namespace --wait
Run Code Online (Sandbox Code Playgroud)

  • 如果命名空间已经存在,但我使用了 --create-namespace 会发生什么 (2认同)