小编mor*_*ger的帖子

如何从具有正确上下文的子图中调用helm'helper'模板?

Helm图表定义了帮助程序模板,_helpers.tpl其中用于为服务创建规范化名称.服务(DNS)名称模板的标准格式为:

{{- define "postgresql.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

如果使用postgresql作为子图,您应该如何使用基于DNS的服务发现来引用它?一种常见的模式似乎是将子图助手复制到父图表中.

{{- define "keycloak.postgresql.fullname" -}}
{{- $name := default "postgresql" .Values.postgresql.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

这是完全疯狂的原因显而易见!!!

当然有更好的方法来使用子图助手?如果你可以创建一个上下文对象,那么就可以调用它,例如:

value: {{ template "postgresql.fullname" ({Chart: {Name: 'not-used'}, Release: {Name: .Release.Name}, Values: { nameOverride: .Values.postgresql.nameOverride}}) }}
Run Code Online (Sandbox Code Playgroud)

可悲的是,我不知道如何动态地创建这样的上下文.如果辅助函数更改为引用新属性,这仍然会中断,但显而易见.

或者,从子图中提供服务名称的另一种方法是什么?

go-templates kubernetes-helm

10
推荐指数
2
解决办法
3991
查看次数

验证是否已使用 kubernetes helm 图表的所有值

我想检查我的 kubernetes helm 图表是否未定义values.yaml. 这应该包括任何子图表,如果您subchart.foo.bar: ???在顶级中定义了values.yaml该键,那么该键肯定会在子图表中使用,或者可能作为subchart/values.yaml.

这是为了防止我们在 中发送虚假的“文档” values.yaml,例如子图表中的键已被更改或删除。

理想情况下,还可以报告顶级图表中哪些子图表值尚未被覆盖,尽管这不太令人担忧。

有没有现有的工具可以帮助解决这个问题?

kubernetes kubernetes-helm

5
推荐指数
1
解决办法
1978
查看次数

标签 统计

kubernetes-helm ×2

go-templates ×1

kubernetes ×1