我正在将 postgres 作为依赖项安装在我的 helm 图表中,并且需要检索连接详细信息。
kubernetes 中的 Postgres 连接 URI 的形式为:
postgres://username:[email protected]:port/dbname
username
、password
、namespace
、port
和dbname
都可以通过.Values.postgresql....
和.Release.Namespace
轻松访问,但服务名称是使用子图模板初始化的common.names.fullname
.
访问子图模板令人惊讶地不是一件事,并且由于上下文更改可能无论如何都无法工作。
配置应用程序访问数据库的简单方法是什么?
我通常很乐意观察到子图遵循命名其对象的典型 Helm 约定
{{ .Release.Name }}-{{ .Chart.Name }}
。如果子图使用该约定,并且我从名为 postgresql
的子图获取数据库,那么我可以在模板代码中对该值进行硬编码:
- name: PGHOST
value: '{{ .Release.Name }}-postgresql'
我的经验是,Bitnami 图表(以及较旧的
stable
图表)在使用语义版本控制方面非常出色,因此,如果此名称发生更改,那么图表的主要版本也会发生变化。
值:
{{ .Release.Name }}-postgresql
可能并不总是准确的。例如,如果您的版本名称是 my-postgresql,那么结果值应该是 my-postgresql
,而不是 my-postgresql-postgresql
。
为了避免此类问题,建议使用其 templates/NOTES.txt:
中的模板{{ include "postgresql.v1.primary.fullname" .Subcharts.postgresql }}