Spring Cloud Kubernetes:无法读取名称为

时间:2019-08-23 15:22:36

标签: kubernetes spring-cloud spring-cloud-kubernetes

有人知道如何解决此问题: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个应用程序,第一个(Spring clud网关应用程序)可以读取其configMap,而第二个(简单的Spring Boot Web应用程序)却不能。 我想念什么? 该应用程序已部署在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 个答案:

答案 0 :(得分:2)

我找到了问题,我想是的。问题来自格式错误的Yaml。 如果您看一下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

一切似乎都正常。错误消息没有明确指出这一点有点奇怪。