sam*_*sam 5 kubernetes kubernetes-helm configmap
我正在尝试执行以下操作,因此主机中的 MYVALUE 需要更改为包含版本名称。无法弄清楚如何执行此操作,因为您无法像{{ .Release.Name }}直接在values.yaml 文件中使用环境变量一样。
我确实为 mysql pod 做了 afullnameOverride和 put ,fullnameOverride: myrelease-mysql然后 jasper 可以host: myrelease-mysql工作,但想知道是否有一种聪明的方法可以将发布名称放入 value.yaml 文件中。
我假设我需要使用 configMap,因为可以.Release.Name在那里使用,然后将该配置键嵌入到 value.yaml 中。
值.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
Run Code Online (Sandbox Code Playgroud)
配置映射表
kind: ConfigMap
metadata:
name: mysql-jasper
data:
mysql_releasename: {{ .Release.Name }}-"mysql"
Run Code Online (Sandbox Code Playgroud)
看来 helm 不支持任何模板渲染功能values.yaml- helm GitHub 上有多个主题:
目前此功能尚未实现,因此您需要找到一个解决方法 - David Maze 的建议似乎是一个很好的方向,但如果您想遵循您的方法,您可以使用下面的解决方法,在命令中使用--set标志helm install或使用sed命令和管道命令helm install。
第一个解决方案是--set。
我的values.yaml文件与你的有点不同:
mariadb:
enabled: false
externalDatabase:
user: sqluser
database: jasper
jasperreportsUsername: jasper
Run Code Online (Sandbox Code Playgroud)
那是因为当我使用你的时values.yaml我无法设法将这些值应用到bitnami/jasperreports图表中,该helm install命令使用默认值此处的默认值。
我正在设置一个 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
Run Code Online (Sandbox Code Playgroud)
上面的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"
...
Run Code Online (Sandbox Code Playgroud)
另一种方法是设置一个 bash 变量,RELEASE_NAME该变量将在命令中使用sed以输出修改后的values.yaml文件(我不编辑values.yaml文件本身)。此输出将通过管道传输到helm install命令中(我还使用了RELEASE_NAME变量)。
values.yaml:
RELEASE_NAME=my-test-release
helm install $RELEASE_NAME bitnami/jasperreports -f values.yaml --set externalDatabase.host=$RELEASE_NAME-mysql
Run Code Online (Sandbox Code Playgroud)
RELEASE_NAME=my-test-release
sed "s/MYHOST/$RELEASE_NAME-mysql/g" values.yaml | helm install $RELEASE_NAME bitnami/jasperreports -f -
Run Code Online (Sandbox Code Playgroud)
此方法将设置与第一种方法相同的图表配置。
| 归档时间: |
|
| 查看次数: |
18890 次 |
| 最近记录: |