добавление массива yaml как env в kubernetes / kustomize
Итак, у меня есть файл 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
затем добавьте файл.properties для configMapGenerator следующим образом:
spring_datasource_url=some-url-here
но конфигурация с массивом, похоже, не работает.
какие-нибудь намеки на то, где я упускаю трюк? Кроме того, пароль поступает от credstash; Итак, у меня есть другой сценарий, который получает значение от credstash и создает манифест для Secret.
Конечная цель добавления паролей в Deployment будет примерно такой:
name: service_users.0.password
valueFrom:
secretKeyRef:
key: value
name: service-user-store-password
1 ответ
Это было проблемой при весенней загрузке некоторое время назад, когда поддерживалась привязка переменных среды к элементам массива. В вики- странице весенней загрузки есть хороший документ для описания решения: 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