Tho*_*aux 6 elasticsearch kubernetes kubernetes-helm
用例
“我想通过使用弹性官方掌舵图来部署 elasticsearch + kibana。我想创建一个名为 data-viz 的掌舵图表,并将这些图表作为依赖项。”
运行helm install data-viz --set cluster=toto
必须创建一个elasticsearch集群“toto”,以及一个配置了elasticsearchHosts
=toto的kibana 。
问题
我在这里看到https://github.com/helm/helm/blob/master/docs/chart_template_guide/subcharts_and_globals.md可以从 main-chart 配置子图表values.yml
。但我想从主图表 values.yaml 模板化子图表 values.yml,这可能吗?
我在想一些简单的事情:
.
??? Chart.yaml
??? charts
? ??? elasticsearch
? ? ??? Chart.yaml
? ? ??? templates
? ? ??? values.yaml
? ??? elasticsearch-7.4.0.tgz
? ??? kibana-7.4.0.tgz
??? requirements.lock
??? requirements.yaml
??? values.yaml
Run Code Online (Sandbox Code Playgroud)
黑客解决方案
values.yaml
从sub-chart/values-template.yaml
+ 数据创建文件的小型 Python 脚本。
TLDR:目前还不可能,尽管曾多次尝试添加此类功能,但都失败了,该项目的所有提交者都不愿意经历 Helm 项目成员所需的额外官僚机构。
PR 6876 “feat(helm):添加值模板以便使用 go-template 为图表及其依赖项自定义值”可能会令人感兴趣:
对于使用图表 value.yaml 模板的方法有很多请求(#2492、#2133等)。
主要原因是目前无法从模板中获取子图的值。然而,使用模板会使
values.yaml
它们无法解析,并在渲染它们时产生“先有鸡还是先有蛋”的问题。此合并请求创建了一个直观的解决方案,没有这样的问题:
values/
使用 呈现模板的可选目录values.yaml
,然后将它们与其合并。
这些values/
模板仅在特定情况下才需要,其工作方式与模板相同templates/
,并且values.yaml
将仍然是主要的可解析价值来源。渲染顺序也已更改,以允许这些新值启用或禁用依赖项,并避免渲染禁用依赖项的值模板。
新的可能性:
现在可以自定义依赖项值,这在以前是完全不可能的
subchart:
fullnameOverride: subchart-{{ .Relese.Name }}
debug: {{ default "false" .Values.debug }}
Run Code Online (Sandbox Code Playgroud)
可以从值导出依赖条件
subchart:
fullnameOverride: subchart-{{ .Relese.Name }}
debug: {{ default "false" .Values.debug }}
Run Code Online (Sandbox Code Playgroud)
dependencies:
- name: subchart
condition: subchart.enabled
Run Code Online (Sandbox Code Playgroud)
同样,PR 8580 “添加了通过以下方式将值传递到子图表的支持map.yaml
”也很有趣
此 PR 允许开发人员在其图表上声明一个
map.yaml
文件,该文件可用于将值映射到values.yaml
模板中使用的派生值,包括子图表(有关详细说明,请参阅#8576 )。这允许开发人员编写例如
subchart:
{{- if eq .Values.environment "production" -}}
enabled: true
{{- else -}}
enabled: false
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
apiVersion: v1
description: Chart with map and subcharts
name: chart-with-map
version: 0.0.1
dependencies:
- name: backend
version: 0.0.1
- name: frontend
version: 0.0.1
Run Code Online (Sandbox Code Playgroud)
domain: example.com
Run Code Online (Sandbox Code Playgroud)
因此不必在values.yaml(对于子图表)中公开 backend: uri、frontend: uri,也不必要求图表用户必须在多个键中传递相同的值以保持一致性(或使用导致命名冲突的全局名称)。
即,它允许使用派生(或映射)值填充子图表,而无需将这些值暴露给values.yaml(图表的公共接口)。
正在实施/评估:
2021 年 2 月更新:PR 6876在此评论中确认需要正式提案。
归档时间: |
|
查看次数: |
1360 次 |
最近记录: |