Не удается прочитать configmap с именем: [xx] в пространстве имен ['default'] Игнорирование - PullRequest
0 голосов
/ 03 июля 2019

Новое в k8s.

Попытка чтения значений из карты конфигурации на основе профиля.Моя карта конфигурации существует в пространстве имен по умолчанию.Но при весенней загрузке значения не отображаются.

Карта конфигурации выглядит следующим образом:

apiVersion: v1
kind: ConfigMap
metadata:
    name: example-configmap-overriding-new-01
data:
    application.properties: |-
        globalkey = global key value
    application-qa.properties: |-
        globalkey = global key qa value    
    application-prod.properties: |-
        globalkey = global key prod value

Карта конфигурации также создается в пространстве имен по умолчанию.

kubectl get configmap -n default 

NAME                                  DATA   AGE
example-configmap-overriding-new-01   3      8d

MyФайл развертывания выглядит как

apiVersion: apps/v1
kind: Deployment
metadata: 
    name: demo-configmapk8testing
spec:  
    selector:
        matchLabels:
            app: demo-configmapk8testing
replicas: 1
template: 
    metadata:
        labels:
            app: demo-configmapk8testing        
    spec:
        containers:
          - name: demo-configmapk8testing
            image: Path to image
            ports:
            - containerPort: 8080
            args: [
            "--spring.profiles.active=prod",
            "--spring.application.name=example-configmap-overriding-new-01",
            "--spring.cloud.kubernetes.config.name=example-configmap-
            overriding-new-01",
            "--spring.cloud.kubernetes.config.namespace=default",
            "--spring.cloud.kubernetes.config.enabled=true"]
            envFrom:
            - configMapRef:
                name: example-configmap-overriding-new-01

Но журнал весенней загрузки говорит: -

2019-07-02 22:10:38.092  WARN 1 --- [           main] 
o.s.c.k.config.ConfigMapPropertySource   : Can't read configMap with name: 
[example-configmap-overriding-new-01] in namespace:[default]. Ignoring

2019-07-02 22:10:38.331  INFO 1 --- [           main] 
b.c.PropertySourceBootstrapConfiguration : Located property source: 
CompositePropertySource {name='composite-configmap', propertySources= 
[ConfigMapPropertySource {name='configmap.example-configmap-overriding-new- 
01.default'}]}

2019-07-02 22:10:38.420  INFO 1 --- [           main] 
b.c.PropertySourceBootstrapConfiguration : Located property source: 
SecretsPropertySource {name='secrets.example-configmap-overriding-new- 
01.default'}

2019-07-02 22:10:38.692  INFO 1 --- [           main] 
c.e.c.ConfigconsumerApplication          : **The following profiles are 
active: prod**

--some logs--

Injection of autowired dependencies failed; nested exception is 
java.lang.IllegalArgumentException: **Could not resolve placeholder 
'globalkey' in value "${globalkey}"**

Мой конфигурационный файл весенней загрузки выглядит как

@Configuration
public class ConfigConsumerConfig {

    @Value(value = "${globalkey}")
    private String globalkey;

    // with getter and setters 
}

My pom.xmlтакже имеет следующую зависимость:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-kubernetes-config</artifactId>
        <version>1.0.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

Я использую Minikube на моей локальной машине.Я что-то здесь упускаю?

Может ли кто-нибудь поделиться здесь некоторыми данными.

Ответы [ 2 ]

1 голос
/ 03 июля 2019

манифест configmap должен быть исправлен. неверный формат

попробуйте это

apiVersion: v1
kind: ConfigMap
metadata:
  name: example-configmap-overriding-new-01
data:
  application.properties: |
    globalkey=global-key-value
  application-qa.properties: |
    globalkey=global-key-qa-value
  application-prod.properties: |
    globalkey=global-key-prod-value

вы должны смонтировать configmap как том, чтобы использовать файл конфигурации в вашем приложении

          volumeMounts:
          - name: config
            mountPath: /config
        volumes:
        - name: config
          configMap:        
            name: example-configmap-overriding-new-01
0 голосов
/ 03 июля 2019

Можете ли вы попробовать также смонтировать ваш configmap, может быть, это может помочь

volumeMounts:
- mountPath: /app/config
  name: example-configmap-overriding-new-01

volumes:
- name: example-configmap-overriding-new-01
  configMap:
      name: example-configmap-overriding-new-01

Дайте мне знать, пожалуйста, если это работает.Спасибо

Исправлена ​​ошибка синтаксиса

...