kubernetes - values.yaml 中的 helm configmap
问题描述
我正在尝试执行以下操作,因此主机中的 MYVALUE 需要更改以包含发布名称。无法弄清楚如何做到这一点,因为您不能{{ .Release.Name }}
直接在 values.yaml 文件中使用环境变量。
我确实为 mysql pod 做了一个fullnameOverride
并放入fullnameOverride: myrelease-mysql
,然后 jasper 就host: myrelease-mysql
可以了,但想知道是否有一种聪明的方法可以将发布名称放入 values.yaml 文件中。
我假设我需要使用可以.Release.Name
在那里使用的 configMap,然后将该配置键嵌入到 values.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
配置映射
kind: ConfigMap
metadata:
name: mysql-jasper
data:
mysql_releasename: {{ .Release.Name }}-"mysql"
解决方案
看来 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
那是因为当我使用您的时,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
上述命令将通过从文件中设置值 + 设置值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 -
这种方法将设置图表配置与第一种方法相同。
推荐阅读
- python - Algorithm to generate routes subject to pickup/delivery
- python - Python Fizzbuzz 忽略“和”,但为什么呢?
- amazon-web-services - 通过客户端 VPN 终端节点访问 Amazon Elasticsearch Service
- powershell - PowerShell:写入进度条消失
- javascript - 碰撞检测,鼠标控制
- hive - Hive中基于Partition和非partition列的查询
- matlab - 在 Matlab 中使用循环从表达式中查找最大值
- html - 为什么这些保证金课程在 Bootstrap 上对我不起作用?
- flutter - Flutter 版本约束误区
- asp.net-core - 是否可以在 asp.net 身份服务器 4 中自定义 IdentityUserRole 表?