如何为子舵图设置不同的命名空间?
How to set a different namespace for child helm charts?
当您安装带有未指定命名空间的子图表的图表时,Helm 将使用通过 --namespace
在命令行上指定的名称。是否可以为特定的子图表覆盖此标志?
例如,如果我有依赖于图表 B 的图表 A 并且我指定 --namespace foo
,我希望能够自定义图表 B 的资源以安装到其他命名空间 bar
而不是 foo
.
更新 2:
Helm 3 添加了对多命名空间的支持 https://github.com/helm/helm/issues/2060
更新 1:
如果资源模板指定 metadata.namespace
,则它将安装在该名称空间中。例如,如果我有一个带 metadata.namespace: x
和 运行 helm install mychart --namespace y
的 pod,该 pod 将安装在 x 中。我猜你可以使用带有命名空间的常规 helm 模板来参数化它。
原回答:
We do not plan on fully supporting multi-namespaced releases until Helm 3.0
https://github.com/kubernetes/helm/issues/2060#issuecomment-306847365
作为解决方法,您可以使用 --skip-dependencies
或 dependency conditions
分别为每个命名空间安装
如果您已经有不同的图表,那么您可以使用 helmfile 来实现。
步骤 1:
创建以下文件夹。
my-awesome-infrastructure/
helm
helmfile
helmfile.yaml
其中 helm 和 helmfile 是二进制可执行文件。
第二步:安装helmfile需要的helm diff插件
helm plugin install https://github.com/databus23/helm-diff
步骤 3:在 helmfile.yaml
.
中声明您的图表
helmBinary: ./helm
repositories:
- name: ingress-nginx
url: https://kubernetes.github.io/ingress-nginx
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: nginx-ingress
namespace: nginx-ingress
createNamespace: true
chart: ingress-nginx/ingress-nginx
version: ~4.1.0
- name: jupyterhub
namespace: jupyterhub
createNamespace: true
chart: bitnami/jupyterhub
version: ~1.1.12
- name: metrics-server
namespace: metrics-server
createNamespace: true
chart: bitnami/metrics-server
version: ~5.11.9
第 4 步:运行 用于部署所有图表的 helmfile。
./helmfile apply
在上面的示例中,您将三个单独的图表部署到三个单独的命名空间。
在幕后,helmfile
将 运行 调用 helm
单独安装并创建单独的版本。
当您安装带有未指定命名空间的子图表的图表时,Helm 将使用通过 --namespace
在命令行上指定的名称。是否可以为特定的子图表覆盖此标志?
例如,如果我有依赖于图表 B 的图表 A 并且我指定 --namespace foo
,我希望能够自定义图表 B 的资源以安装到其他命名空间 bar
而不是 foo
.
更新 2: Helm 3 添加了对多命名空间的支持 https://github.com/helm/helm/issues/2060
更新 1:
如果资源模板指定 metadata.namespace
,则它将安装在该名称空间中。例如,如果我有一个带 metadata.namespace: x
和 运行 helm install mychart --namespace y
的 pod,该 pod 将安装在 x 中。我猜你可以使用带有命名空间的常规 helm 模板来参数化它。
原回答:
We do not plan on fully supporting multi-namespaced releases until Helm 3.0 https://github.com/kubernetes/helm/issues/2060#issuecomment-306847365
作为解决方法,您可以使用 --skip-dependencies
或 dependency conditions
如果您已经有不同的图表,那么您可以使用 helmfile 来实现。
步骤 1: 创建以下文件夹。
my-awesome-infrastructure/
helm
helmfile
helmfile.yaml
其中 helm 和 helmfile 是二进制可执行文件。
第二步:安装helmfile需要的helm diff插件
helm plugin install https://github.com/databus23/helm-diff
步骤 3:在 helmfile.yaml
.
helmBinary: ./helm
repositories:
- name: ingress-nginx
url: https://kubernetes.github.io/ingress-nginx
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: nginx-ingress
namespace: nginx-ingress
createNamespace: true
chart: ingress-nginx/ingress-nginx
version: ~4.1.0
- name: jupyterhub
namespace: jupyterhub
createNamespace: true
chart: bitnami/jupyterhub
version: ~1.1.12
- name: metrics-server
namespace: metrics-server
createNamespace: true
chart: bitnami/metrics-server
version: ~5.11.9
第 4 步:运行 用于部署所有图表的 helmfile。
./helmfile apply
在上面的示例中,您将三个单独的图表部署到三个单独的命名空间。
在幕后,helmfile
将 运行 调用 helm
单独安装并创建单独的版本。