добавление массива 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
Другие вопросы по тегам