我正在尝试执行以下操作,因此主机中的 MYVALUE 需要更改以包含版本名称。无法确定如何执行此操作,因为您不能在 values.yaml 文件中直接使用像 {{ .Release.Name }}
这样的环境变量。
我确实做了一个 fullnameOverride
并为 mysql pod 放置了 fullnameOverride: myrelease-mysql
然后 jasper 有 host: myrelease-mysql
有效,但想知道是否有一种巧妙的方法可以将发布名称放入 values.yaml 文件中。
我假设我需要使用 configMap,因为可以在那里使用 .Release.Name
,然后将该配置键嵌入到 values.yaml 中。
Values.yaml
jasperreports:
mariadb:
enabled: false
externalDatabase:
host: MYVALUE // Also tried $MVALUE
user: sqluser
database: jasper
jasperreportsUsername: jasper
env:
- name: MYVALUE
valueFrom:
configMapKeyRef:
name: mysql-jasper
key: mysql_releasename
配置图
kind: ConfigMap
metadata:
name: mysql-jasper
data:
mysql_releasename: {{ .Release.Name }}-"mysql"
最佳答案
helm 似乎不支持 values.yaml
文件中的任何模板渲染功能 - helm GitHub 上有多个主题:
- Canonical way of using dynamic object names within values.yaml
- Adding values templates in order to customize values with go-template, for the chart and its dependencies
- Proposal: Allow templating in values.yaml
目前此功能尚未实现,因此您需要找到解决方法 - David Maze 的建议似乎是一个不错的方向,但如果您想遵循您的方法,可以使用以下解决方法 using --set
flag in the helm install
command或使用 sed
命令并通过管道传输到 helm install
命令。
第一个带有 --set
标志的解决方案。
我的 values.yaml
文件与您的略有不同:
mariadb:
enabled: false
externalDatabase:
user: sqluser
database: jasper
jasperreportsUsername: jasper
那是因为当我使用你的 values.yaml
时,我无法将这些值应用到 bitnami/jasperreports
图表,helm install
命令使用默认值 from here .
我正在设置一个 shell 变量 RELEASE_NAME
,我将使用它来设置图表名称和 externalDatabase.host
值。
RELEASE_NAME=my-test-release
helm install $RELEASE_NAME bitnami/jasperreports -f values.yaml --set externalDatabase.host=$RELEASE_NAME-mysql
上面的 helm install
命令将通过设置 values.yaml
文件中的值 + 设置 externalDatabase.host
值来覆盖默认值。
在应用之前,您可以使用 helm template
命令检查此解决方案是否按预期工作:
RELEASE_NAME=my-test-release
helm template $RELEASE_NAME bitnami/jasperreports -f values.yaml --set externalDatabase.host=$RELEASE_NAME-mysql
...
- name: MARIADB_HOST
value: "my-test-release-mariadb"
...
另一种方法是设置一个 bash 变量 RELEASE_NAME
,它将在 sed
命令中使用,以输出修改后的 values.yaml
文件(我我没有编辑 values.yaml
文件本身)。此输出将通过管道传输到 helm install
命令(我还使用了 RELEASE_NAME
变量)。
values.yaml
:
mariadb:
enabled: false
externalDatabase:
host: MYHOST
user: sqluser
database: jasper
jasperreportsUsername: jasper
RELEASE_NAME=my-test-release
sed "s/MYHOST/$RELEASE_NAME-mysql/g" values.yaml | helm install $RELEASE_NAME bitnami/jasperreports -f -
此方法将设置与第一种方法相同的图表配置。
关于kubernetes - values.yaml 中的 helm configmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69837364/