#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
, и это сработало хорошо, спасибо!