values.yml我的 Helm 图表有一个简单的文件:
DbMigration:
Resources:
requests:
memory: 256Mi
limits:
memory: 512Mi
Run Code Online (Sandbox Code Playgroud)
在我的数据库迁移作业的定义中,我有以下内容:
spec:
activeDeadlineSeconds: 120
template:
spec:
restartPolicy: Never
containers:
- name: myMigrate
image: myRepo/myService:0.0.1
imagePullPolicy: Always
resources:
requests:
{{- range $key, $value := $.Values.DbMigration.Resources.requests }}
{{ $key }}: {{ $value }}
{{- end }}
limits:
{{- range $key, $value := $.Values.DbMigration.Resources.limits }}
{{ $key }}: {{ $value }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以简化该resources区域,以便我可以包含来自的所有数据$.Values.DbMigration.Resources?我所拥有的可行,但必须有更简洁的方法。我尝试以toYaml与此类似的方式使用该函数:
{{- toYaml $.Values.DbMigration.Resources }}
Run Code Online (Sandbox Code Playgroud)
然而,这会导致:
错误:升级失败:myTemplate.yaml 上的 YAML 解析错误:将 YAML 转换为 JSON 时出错:yaml:第 30 行:此上下文中不允许映射值
小智 18
如果您想“按原样”渲染 value.yaml 中的块,那么 toYaml 几乎就是您所需要的。
spec:
activeDeadlineSeconds: 120
template:
spec:
restartPolicy: Never
containers:
- name: myMigrate
image: myRepo/myService:0.0.1
imagePullPolicy: Always
resources:
{{- toYaml $.Values.DbMigration.Resources | nindent 12 }}
Run Code Online (Sandbox Code Playgroud)
如果您仍然遇到转换为 JSON 错误,请尝试稍微调整一下缩进,仅此而已。
有多种方法可以实现这一目标。其中之一是,range您可以简单地将values.yaml 更改为
DbMigration: |
resources:
requests:
memory: 256Mi
limits:
memory: 512Mi
Run Code Online (Sandbox Code Playgroud)
然后将迁移模板更改为
resources:
{{- .Values.DbMigration | indent 12 }}
Run Code Online (Sandbox Code Playgroud)
请相应地更改缩进。
另一种方法是使用range和toYaml
DbMigration:
Resources:
requests:
memory: 256Mi
limits:
memory: 512M
Run Code Online (Sandbox Code Playgroud)
迁移模板
resources:
{{- range $key, $value := $.Values.DbMigration.Resources }}
{{ $key }}:
{{ toYaml $value }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15914 次 |
| 最近记录: |