Spring Cloud Kubernetes: не могу прочитать configMap с именем
Кто-нибудь знает, как решить эту проблему: WARN | main | o.s.c.k.c.ConfigMapPropertySource | Can't read configMap with name: [commons] in namespace:[dev]. Ignoring
У меня есть эта конфигурация в моем bootstrap-prod.yml
:
spring:
cloud:
kubernetes:
config:
name: ${spring.application.name}
sources:
- name: commons
namespace: dev
secrets:
name: commons-secret
reload:
enabled: true
Но приложение не запускается из-за этой ошибки. Та же проблема, как описано здесь: https://github.com/spring-cloud/spring-cloud-kubernetes/issues/138 Я привязал ServiceAccount пространства имен к кластеру view
роль.
Что странно, в одном и том же пространстве имен есть 2 приложения, первое (приложение шлюза с пружинным ключом) может читать свой файл configMap, а второе (простое веб-приложение с пружинной загрузкой) не может. Что мне не хватает? Приложение развернуто на GKE.
#:::::::::::::::::DEPLOYMENT::::::::::::::::::
apiVersion: apps/v1
kind: Deployment
metadata:
name: appservice
namespace: dev
spec:
...
И ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: commons
namespace: dev
data:
application.yml: |-
server:
tomcat:
basedir: ..${file.separator}tomcat-${spring.application.name}
spring:
profiles:
active: prod
cache:
...
Спасибо за вашу помощь
1 ответ
Я нашел проблему, я думаю, это так. Проблема возникла из-за неправильного форматирования. Если вы посмотрите на конфигурацию ConfigMap, у нас есть:
...
data:
application.yml: |-
server:
tomcat:
basedir: ..${file.separator}tomcat-${spring.application.name} # issue is here, bad indentation
spring:
profiles:
active: prod
...
После изменения этого на:
data:
application.yml: |-
server:
tomcat:
basedir: ..${file.separator}tomcat-${spring.application.name}
spring:
profiles:
active: prod
Кажется, все работает нормально. Немного странно, что сообщение об ошибке не указывает на это явно.