【发布时间】:2018-05-25 06:34:05
【问题描述】:
我开始为我们的服务编写掌舵图。
有两件事我不确定它们应该如何工作或如何处理它们。
首先:发布名称。安装图表时,您指定 helm 用于创建发布的名称。此版本名称通常在图表中引用以正确隔离图表安装?例如 postgres 图表包含:
{{- define "postgresql.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
然后用于服务:
metadata:
name: {{ template "postgresql.fullname" . }}
它在 kubernetes 中看起来确实像“myrelease-postgresql”。 我想知道一个好的发布名称是什么?通常用于此目的是什么?厌恶?或者像 ubuntu 版本这样的代号?
第二:引用值。
我的图表使用 postgresql 作为子图表。我不想重复创建 postgresql 服务名称的值的方式(参见上面的片段)。
有没有办法可以引用子图表的服务名称或模板定义 {{ template "postgresql.fullname" 。 }} 在父图表中?我需要它将它作为数据库主机传递到我的服务中(如果我对所有内容进行硬编码,它就可以工作,但这不是这个意思)。
我试过了:
env:
- name: DB_HOST
value: {{ template "mychart.postgresql.fullname" . }}
但这会导致错误消息:
template "mychart.postgresql.fullname" not defined
我见过图表做类似事情的例子,比如odoo 图表。但是在这里复制了如何创建 postgresql 主机名的逻辑,并在模板中创建了自己的定义。
那么有没有办法访问子图表名称?还是值或模板定义?
谢谢!
挖掘后更新: 根据Subcharts and Globals,模板在图表之间共享。
所以我能做的是:
在我的 _helpers.tpl 图表中,我添加(覆盖)postgres 块:
{{- define "postgresql.fullname" -}}
{{- $name := .Values.global.name -}}
{{- printf "%s-%s" $name "postgresql" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
所以在部署子图的时候会用到这个值。我无法在此处引用所有值或图表名称,因为它在子图表中会有所不同 - 所以我使用了全局值。
这样我就知道在子图中创建的服务的价值了。
不确定这是否是最好的方法:-/
【问题讨论】:
标签: kubernetes kubernetes-helm