首页 > 解决方案 > Helm 发布在自定义命名空间中,而不是默认的

问题描述

有没有办法可以指定要在自定义命名空间上部署的掌舵版本。所有 helm 资源都部署在我通过提及创建的自定义命名空间上

namespace: {{ template "plugin.namespace" . }}

这取自 _helper.tpl

但是该版本本身位于默认命名空间中

helm ls
NAME                        NAMESPACE   REVISION    UPDATED                                 STATUS      CHART                           APP VERSION
object-storage-plugin   default     3           2021-08-04 15:42:30.833512 +0530 IST    deployed    object-storage-plugin-2.1.2 2.1.2      

我知道通过命令行我们可以设置命名空间,但我正在从模板文件中寻找选项,其中将选择命名空间

我提到了 https://helm.sh/docs/chart_template_guide/getting_started/

使用 helm3--create-namespace创建新的命名空间,但 helm uninstall 命令不会删除这个新创建的 NS。

标签: kubernetes-helmhelmfile

解决方案


在正常使用中,您必须使用该helm install --namespace选项来指定 Helm 保存其持久数据的命名空间。无法在文件中指定它。

同样在正常使用中,您不会namespace:在单个 YAML 文件中手动指定。资源会自动安装在helm install --namespace(就像你一样kubectl apply --namespace ... -f ...)。您应该只需要namespace:在同一个图表需要在多个命名空间中安装东西的异常设置;IME 通常仅在您使用 Helm 进行集群级设置时才使用。

但是,您也将此问题标记为。如果您使用的是Helmfile,那么在helmfile.yaml文件中,您可以指定要在其中使用的命名空间。helmfile.yaml有效地在 YAML中helm install列出了选项,因此您不再需要namespace:在模板中指定。

# helmfile.yaml
# (not a plain Helm artifact)
releases:
  - name: object-storage-plugin
    namespace: object-storage-plugin       # <-- configure this
    chart: ./charts/object-storage-plugin
    values:
      - values.dev.yaml
  # `helmfile apply` will do the equivalent to
  #
  # helm install object-storage-plugin \
  #   ./charts/object-storage-plugin \
  #   -n object-storage-plugin \
  #   -f values.dev.yaml

推荐阅读