是否可以禁用位于kubernetes的图表文件夹中的图表?

时间:2017-12-05 13:10:50

标签: kubernetes kubernetes-helm

我在charts/目录中有一个子图。我想在某些部署中禁用它。

有可能吗?目前我看到了向所有模板添加条件的唯一方法,如下所示:

deployment.yaml

{{- if .Values.isDev }}
deployment code
{{- end }}

service.yaml

{{- if .Values.isDev }}
service code
{{- end }}

3 个答案:

答案 0 :(得分:4)

作为一般经验,我总是有

{{- if .Values.enabled }}
...
{{- end }}

在每个子图中的每个文件中。根据具体情况,对于常规组件,默认值为true,对于dev相关,默认值为false,如果我想以完全选择的方式启用这些,则默认值为false。此方法的部署典型值如下所示:

api:
  enabled: true
  database:
    host: mysql-dev

mysql:
  enabled: false

mysql-dev:
  enabled: true

答案 1 :(得分:2)

对于当前版本的Helm(目前为2.12),还可以编写一个requirements.yaml,在其中不仅可以指定要下载的Helm远程图表,还可以指定{{ 1}}文件夹。在此charts中,可以为每个依赖项指定一个requirements.yaml字段。此字段是父母的Value的路径。

例如,给定此condition

requirements.yaml

您的dependencies: - name: one-dep version: 0.1.0 condition: one-dep.enabled - name: another-dep version: 0.1.0 condition: another-dep.enabled 可以:

values.yaml

这将导致Helm仅包含one-dep: enabled: true another-dep: enabled: false 图表。 值得注意的是,如果one-dep中指定的路径不存在,则默认为condition

Here's the link to the doc

答案 2 :(得分:1)

在Helm 3之前,不能在 requirements.yaml 中禁用“本地”解压图表,因此始终需要存储库字段,因此始终不可能禁用解压图表。此评论Is it possible to disable chart located in charts folder in kubernetes?

中也提到了这一点

在头盔3中,此问题已得到解决,这要归功于https://github.com/helm/helm/issues/3742#issuecomment-574056164
我的Chart.yaml看起来像这样:

dependencies:
  - name: mongodb-replicaset
    version: ^3.15.1
    repository: https://kubernetes-charts.storage.googleapis.com
    condition: mongodb.enabled
  - name: elasticmq
    version: 0.1.0
    condition: elasticmq.enabled
  - name: jhipster-registry
    version: 0.1.0
    condition: jhipster-registry.enabled

我的头盔版本是3.2.1
现在它只显示这样的警告,但条件仍然有效:

Update Complete. ⎈Happy Helming!⎈
Saving 3 charts
Downloading mongodb-replicaset from repo https://kubernetes-charts.storage.googleapis.com
Dependency elasticmq did not declare a repository. Assuming it exists in the charts directory
Dependency jhipster-registry did not declare a repository. Assuming it exists in the charts directory
Deleting outdated charts

因此禁用内置图表不会再破坏任何东西,并且可以使用。