Данные ConfigMap (формат yml) - Кубернетес - PullRequest
0 голосов
/ 02 июля 2019

У меня есть файл application.yml (Spring), который имеет почти 70 полей, и хочу переместить эти поля в ConfigMap. В процессе настройки ConfigMap, поняли, что все 70 полей были вспыхнуты пример: webservice.endpoint.transferfund Будет непросто сделать все 70 полей плоскими, есть ли альтернатива?

Пожалуйста, предложите.

Ниже работает Config:

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmapname
  namespace: default
data:
  webservice.endpoint.transferfund: http://www.customer-service.app/api/tf
  webservice.endpoint.getbalance: http://www.customer-service.app/api/balance
  webservice.endpoint.customerinfo: http://www.customer-service.app/api/customerinfo

Ниже конфиг не работает, пробовал в формате yml.

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmapname
  namespace: default
data:
  application.yaml: |-
    webservice:
      endpoint:
        transferfund: http://www.customer-service.app/api/tf
        getbalance: http://www.customer-service.app/api/balance
        customerinfo: http://www.customer-service.app/api/customerinfo 

в src / main / resources / application.yml имеет следующие поля для доступа к ключам ConfigMap:

webservice:
  endpoint:
    transferfund: ${webservice.endpoint.transferfund}
    getbalance: ${webservice.endpoint.getbalance}
    customerinfo: ${webservice.endpoint.customerinfo}

Обновлен:

ConfigMap Описание:

C:\Users\deskktop>kubectl describe configmap configmapname
Name:         configmapname
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
application.yaml:
----
webservice:
  endpoint:
    transferfund: http://www.customer-service.app/api/tf
    getbalance: http://www.customer-service.app/api/balance
    customerinfo: http://www.customer-service.app/api/customerinfo
Events:  <none>

Сценарий развертывания: (имя configMapRef предоставляется как имя configmap, как показано выше)

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: configmap-sample
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: configmap-sample
    spec:
      containers:
      - name: configmap-sample
        image: <<image>>
        ports:
        - name: http-api
          containerPort: 9000
        envFrom:
        - configMapRef:
            name: configmapname
        resources:
          limits:
            memory: 1Gi
          requests:
            memory: 768Mi
        env:
        - name: JVM_OPTS
          value: "-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -Xms768M"   

Ответы [ 2 ]

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

A ConfigMap - словарь настроек конфигурации.Он состоит из пар ключ-значение строк.Затем Kubernetes добавляет эти значения в ваши контейнеры.

В вашем случае вы должны сделать их плоскими, потому что Kubernetes их не поймет.

Вы можете прочитать в документации о Создание ConfigMap that:

kubectl create configmap <map-name> <data-source>

где - это имя, которое вы хотите присвоить ConfigMap, и это каталог, файл или буквальное значение, из которого извлекаются данные.

Источник данных соответствует паре ключ-значение в ConfigMap, где

  • ключ = имя файла или ключ, который вы указали в командной строке, и
  • значение = содержимое файла или буквенное значение, указанное в командной строке.

Вы можете использовать kubectl describe или kubectl get дляполучить информацию о ConfigMap.

EDIT

Вы можете создать ConfigMap из файла с определенным ключом.

Определитьключ для использования при создании ConfigMap из файла

Синтаксис может бытьk вот так:

kubectl create configmap my_configmap --from-file=<my-key-name>=<path-to-file> И ConfigMap может выглядеть следующим образом:

apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: 2019-07-03T18:54:22Z
  name: my_configmap
  namespace: default
  resourceVersion: "530"
  selfLink: /api/v1/namespaces/default/configmaps/my_configmap
  uid: 05f8da22-d671-11e5-8cd0-68f728db1985
data:
  <my-key-name>: |
    key=value
    key=value
    key=value
    key=value

Также мне удалось найти Создание Kubernetes ConfigMaps из файлов конфигурации .

Функциональность

Проектор может:

  • Брать необработанные файлы и помещать их в ConfigMap
  • Файлы Glob в вашем конфигурационном репои поместите ВСЕ их в конфигурационную картуи отбрасывание других
  • Перевод назад и вперед между JSON и YAML (преобразование источника YAML в вывод JSON и т. д.)
  • Поддержка извлечения сложных полей, таких как объекты + массивы из источников, а не толькоскаляры!
1 голос
/ 03 июля 2019

Вам необходимо смонтировать ConfigMap как том.В противном случае контент будет жить в переменных среды.Пример, который я публикую здесь, взят из https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#add-configmap-data-to-a-volume

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "ls /etc/config/" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        # Provide the name of the ConfigMap containing the files you want
        # to add to the container
        name: special-config
  restartPolicy: Never
...