ava*_*sin 2 kubernetes kubernetes-helm
我在charts/目录中有一个子图表。我想在某些部署中禁用它。
有可能吗?目前,我看到了向所有模板添加条件的唯一方法,如下所示:
deployment.yaml
{{- if .Values.isDev }}
deployment code
{{- end }}
Run Code Online (Sandbox Code Playgroud)
service.yaml
{{- if .Values.isDev }}
service code
{{- end }}
Run Code Online (Sandbox Code Playgroud)
Bar*_*two 14
此外,对于当前版本的 Helm(此时为 2.12),也可以编写一个requirements.yaml不仅可以指定 Helm 下载的远程图表,还可以指定charts文件夹内的图表。在此requirements.yaml可以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
Run Code Online (Sandbox Code Playgroud)
你values.yaml可能有:
one-dep:
enabled: true
another-dep:
enabled: false
Run Code Online (Sandbox Code Playgroud)
这将导致 Helm 只包含one-dep图表。值得注意的是,如果 中指定的路径condition不存在,则默认为true。
在 Helm 3 之前,无法在requests.yaml中禁用“本地”解压图表,存储库字段始终是必需的,因此始终无法禁用解压图表。此评论中也提到了这一点是否可以禁用 kubernetes 中图表文件夹中的图表?
\n在 Helm 3 中,这个问题得到了解决,感谢https://github.com/helm/helm/issues/3742#issuecomment-574056164
\nMy Chart.yaml 如下所示:
dependencies:\n - name: mongodb-replicaset\n version: ^3.15.1\n repository: https://kubernetes-charts.storage.googleapis.com\n condition: mongodb.enabled\n - name: elasticmq\n version: 0.1.0\n condition: elasticmq.enabled\n - name: jhipster-registry\n version: 0.1.0\n condition: jhipster-registry.enabled\nRun Code Online (Sandbox Code Playgroud)\n我的 helm 版本是 3.2.1
\n现在它只显示这样的警告,但条件仍然有效:
Update Complete. \xe2\x8e\x88Happy Helming!\xe2\x8e\x88\nSaving 3 charts\nDownloading mongodb-replicaset from repo https://kubernetes-charts.storage.googleapis.com\nDependency elasticmq did not declare a repository. Assuming it exists in the charts directory\nDependency jhipster-registry did not declare a repository. Assuming it exists in the charts directory\nDeleting outdated charts\nRun Code Online (Sandbox Code Playgroud)\n因此内置图表禁用不会再破坏任何内容并且可以使用。
\n作为一般经验法则,我总是
{{- if .Values.enabled }}
...
{{- end }}
Run Code Online (Sandbox Code Playgroud)
在每个子图中的每个文件中。根据情况的不同,默认值将true用于常规组件或false与开发相关的组件,或者false如果我想以完全选择性的方式启用这些组件,则仅用于所有组件。这种方法的典型部署值如下:
api:
enabled: true
database:
host: mysql-dev
mysql:
enabled: false
mysql-dev:
enabled: true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |