helm charts 中的标准做法是使用{{ template "<chartname>.fullname" . }}
来作为服务名称,其中<chartname>.fullname
模板有效扩展为.Release.Name-.Chart.name
。后者可以被 覆盖.Values.nameOverride
,但前者或完整值不能。前者是管理员指定的或随机的。
那么我该如何告诉正在创建图表的服务要连接到其依赖项的位置?前缀.Release.Name
会影响 DNS 和环境变量,因此我无法按原样使用它们。
例如,如果我将依赖项设置为 stable/mariadb,它将创建类似的服务nutty-narwhal-mariadb
并提供环境变量NUTTY_NARWHAL_MARIADB_SERVICE_HOST=10.108.77.204
和
NUTTY_NARWHAL_MARIADB_SERVICE_PORT=3306
。但这没有帮助,因为我正在创建的服务不知道前缀是什么。
请注意,当前生成的模板helm create
确实包含.Values.fullnameOverride
,但主存储库中的现有图表如下稳定/mariadb没有,所以我无法简单地mariadb.fullnameOverride
在我的 中设置values.yaml
。
答案1
通常,您的依赖项将聚合在同一个“伞形”图表下,从而.Release.Name
为所有依赖项生成一个单一图表,这意味着您将能够使用类似的东西在图表中指向它们.Release.Name-<subchart>
。如果出于某种原因您不想这样做,并且在部署主图表之前部署依赖项,那么您应该能够通过它们的预配名称将它们指向依赖项的位置,因为您应该在安装它们时获得它。