相关疑难解决方法(0)

如何在helm的子图表中为kubernetes引用模板中定义的值?

我开始为我们的服务编写helm图表.

有两件事我不确定它们应该如何工作或者如何处理它们.

第一:发布名称.安装图表时,指定helm用于创建发布的名称.此版本名称通常在图表中引用,以便将图表安装彼此正确隔离?例如,postgres图表包含:

{{- 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)

然后将其用于服务:

metadata:
  name: {{ template "postgresql.fullname" . }}
Run Code Online (Sandbox Code Playgroud)

它最终在kubernetes看起来像"myrelease-postgresql".我想知道一个好的发布名称是什么?通常用于什么?厌恶?或者像ubuntu发布的一些代号?

第二:引用值.

我的图表使用postgresql作为子图表.我想不要复制postgresql服务名称的值的创建方式(参见上面的剪辑).

有没有办法可以引用子图表的服务名称或模板定义{{template"postgresql.fullname".在父图表中?我需要它将它作为数据库主机传递给我的服务(如果我对所有内容进行硬编码,则可以正常工作,但这不是这个意思).

我试过了:

      env:
        - name: DB_HOST
          value: {{ template "mychart.postgresql.fullname" . }}
Run Code Online (Sandbox Code Playgroud)

但这会导致错误消息:

template "mychart.postgresql.fullname" not defined
Run Code Online (Sandbox Code Playgroud)

我已经看过图表的例子做类似的事情,比如odoo图表.但是在这里,复制了如何创建postgresql主机名的逻辑,并创建了模板中自己的定义.

那么有没有办法访问子图表名称?或者值或模板定义?

谢谢!

经过一些挖掘后更新: 根据Subcharts和Globals,模板在图表之间共享.

所以我能做的就是:

在我的_helpers.tpl图表中,我添加(覆盖)postgres块:

{{- define "postgresql.fullname" -}}
{{- $name := .Values.global.name -}}
{{- printf "%s-%s" …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm

20
推荐指数
2
解决办法
8170
查看次数

标签 统计

kubernetes ×1

kubernetes-helm ×1