Формат данных конфигурационной карты Kubernetes

#spring-boot #kubernetes #yaml #configmap #spring-properties

Вопрос:

Я пишу конфигурационную карту K8s для своего приложения Spring Boot. Это мое заявление.файл yaml:

 app:
config:
    paths:
        - id: a
          uri: http://localhost:8080
          args:
            - x=1
            - y=2

        - id: b
          uri: http://localhost:8081
          args:
            - x=3
            - y=4
 

Я попытался преобразовать его в конфигурационную карту Kubernetes, как показано ниже (я следовал этому документу https://github.com/spring-projects/spring-boot/wiki/Relaxed-Binding-2.0):

 apiVersion: v1
kind: ConfigMap
metadata:
    name: my-configmap
data:
    app.config.paths_0_id: a
    app.config.paths_0_uri: "http://a-service"
    app.config.paths_0_args_0_: "x=1"
    app.config.paths_0_args_1_: "y=2"

    app.config.paths_1_id: b
    app.config.paths_1_uri: "http://b-service"
    app.config.paths_1_args_0_: "x=3"
    app.config.paths_1_args_1_: "y=4"
 

И в файле развертывания я определил карту конфигурации:

        ...
       envFrom:
          - configMapRef:
              my-configmap
       ...
 

Но когда я развернул свое приложение, оно не работало, карта конфигурации не переопределяла application.yaml, например: первый uri app.config.paths по-прежнему http://localhost:8080 не http://a-service.

Так что у кого есть опыт в этом, пожалуйста, помогите мне! Как я могу определить массив в конфигурационной карте K8S?

Спасибо

Комментарии:

1. В конфигурационных картах вы не можете использовать коллекции, только ключи/значения. Попробуйте изменить коллекции foo.bar['baz']: value1 на «foo: значение»или» foo: значение»»

2. Попробуйте проследить всю «переменную окружения». Например, попробуйте APP_CONFIG_PATHS_0_ID использовать, поскольку я не думаю, что в данной конкретной ситуации вы можете смешивать точки с подчеркиванием. С учетом сказанного, я думаю, что лучший вариант, когда у вас есть список в конфигурации, — это ввести конфигурационную карту в виде файла

3. Я пробовал APP_CONFIG_PATHS_0_ID , и это сработало хорошо, спасибо!