Как использовать несколько configmap в Spring Cloud Kubernetes
Я пытаюсь создать микросервисную архитектуру на Spring с деплоем в Kubernetes У части сервисов дублируются настройки, поэтому логично вынести повторяющиеся настройки в отдельные ConfigMap Чтобы читать ConfigMap я использую Spring Cloud Kubernetes config Вот его зависимость (maven):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-client-config</artifactId>
<version>2.0.3</version>
</dependency>
Вот мой файл bootstrap.yml:
spring:
application:
name: myapp
cloud:
kubernetes:
config:
namespace: dev
name: globalconfig
sources:
- name: localconfig
- name: dbconfig
- name: queueconfig
Вот так, к примеру, выглядит файл QueueConfig:
apiVersion: v1
kind: ConfigMap
metadata:
name: queueconfig
namespace: dev
data:
application.yml: |-
messaging:
queues:
new-messages-queue: new
А вот так выглядит файл localconfig:
apiVersion: v1
kind: ConfigMap
metadata:
name: localconfig
namespace: dev
data:
application.yml: |-
file:
name:
new-file: process
Моё приложение не видит настройки, может быть дело в том, что получется так, что у приложения несколько конфигурационных файлов yml?
Мой deployment выглядит следующим образом:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "2"
labels:
app: myapp
name: myapp
namespace: dev
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: myapp
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: myapp
spec:
containers:
- image: my-image
imagePullPolicy: Always
name: app
resources: { }
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
key: database.url
name: endpoints
- name: RABBIT_HOST
valueFrom:
secretKeyRef:
key: rabbit.host
name: endpoints
- name: RABBIT_PORT
valueFrom:
secretKeyRef:
key: rabbit.port
name: endpoints
- name: SQS_ENDPOINT
valueFrom:
secretKeyRef:
key: sqs.url
name: endpoints
- name: SQS_REGION
valueFrom:
secretKeyRef:
key: sqs.region
name: endpoints
- name: DATABASE_USER
valueFrom:
secretKeyRef:
key: database.user
name: umtapsecrets
- name: DB_SCHEMA_NAME
valueFrom:
secretKeyRef:
key: database.schema
name: umtapsecrets
- name: RABBIT_USER
valueFrom:
secretKeyRef:
key: rabbit.user
name: umtapsecrets
- name: RABBIT_PASSWORD
valueFrom:
secretKeyRef:
key: rabbit.password
name: umtapsecrets
- name: AWS_ACCESS
valueFrom:
secretKeyRef:
key: aws.access
name: umtapsecrets
- name: AWS_SECRET
valueFrom:
secretKeyRef:
key: aws.secret
name: umtapsecrets
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
key: database.password
name: umtapsecrets
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: { }
serviceAccountName: configmap-viewer
terminationGracePeriodSeconds: 30