因此,我有一个看起来像这样的yaml文件:
service:
users:
- username: some-user
password: some-pass (would be placed in Secret)
- username: some-user
password: some-pass (would be placed in Secret)
我需要在env中添加它(在春季启动的优先级列表中,env的配置高于yaml的配置。这将基于env(dev,stage,live))。 我已经用Kustomize尝试过了
configMapGenerator:
- name: my-java-server-props
files:
- config.yaml
然后在“部署”中使用它
envFrom:
- configMapRef:
name: my-java-server-props
config.yml中的其他配置如下:
spring:
datasource:
url: some-url-here
然后为configMapGenerator添加.properties文件,如下所示:
spring_datasource_url=some-url-here
,但是带有数组的配置似乎不起作用。
关于我在哪里缺少窍门的任何提示? 另外,密码来自credstash;因此,我有一个不同的脚本,该脚本从credstash获取值并为Secret创建清单。
在部署中添加密码的最终目标是:
name: service_users.0.password
valueFrom:
secretKeyRef:
key: value
name: service-user-store-password
答案 0 :(得分:2)
这是春天启动时的一个问题,支持将环境变量绑定到数组元素。在Spring Boot Wiki上有一个很好的文档来描述解决方案:https://github.com/spring-projects/spring-boot/wiki/Relaxed-Binding-2.0。
总而言之,可以使用 i 为数组元素建立索引,因此在您的情况下:
env:
- name: SERVICE_USERS_0_PASSWORD
valueFrom:
secretKeyRef:
key: value
name: service-user-store-password
- name: SERVICE_USERS_1_PASSWORD
valueFrom:
secretKeyRef:
key: value
name: service-another-user-store-password