【问题标题】:How to create a namespace if it doesn't exists from HELM templates?如果 HELM 模板中不存在命名空间,如何创建它?
【发布时间】:2019-01-17 21:37:08
【问题描述】:

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

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

当且仅当上述命名空间 ({{ .Values.namespace }}) 不存在于指定的 Kubernetes 集群中时,我如何让 helm install 创建上述命名空间 ({{ .Values.namespace }})?

谢谢。

【问题讨论】:

    标签: kubernetes google-cloud-platform namespaces kubernetes-helm


    【解决方案1】:

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

    --namespace <namespace> 之外使用--create-namespace

    【讨论】:

    • 是的,但是如果命名空间已经存在则失败...
    【解决方案2】:

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

    对于 helm3 功能已经改变,有a github issue on this

    【讨论】:

    • 在舵伞部署的情况下如何处理。因为在这种情况下,我们需要多个命名空间。
    • 只有在用户这样说的情况下,你才能做一些事情来创建一个命名空间——比如github.com/helm/charts/blob/…
    • 标志 --namespace 在 3.0 版本中不会自动创建命名空间。但是这个功能将在 3.1 版本中返回
    • 我在 3.1.1 好像没有加回来
    • 如果一个图表包含多个组件,应该放置在多个命名空间中怎么办?唯一的选择是在图表“外部”创建它们?
    【解决方案3】:

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

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

    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
    

    【讨论】:

    • 如果命名空间已经存在会发生什么,但我使用了 --create-namespace
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      相关资源
      最近更新 更多