Как связать configmap с внешним файлом?

Как связать configmap с внешним файлом?

С его помощью мы можем создать карту конфигурации, связанную с внешним файлом.

kubectl create configmap database-config --from-file=database.properties

Но когда мы отредактируем yaml, то увидим, что туда сброшено полное содержимое файла.

Можно ли как-то просто указать файл в yaml, чтобы я сохранил файл свойств в той же папке, что и yaml-файл configmap, и применил к этой папке все yaml-файлы с помощью:

kubectl apply -f target_folder\

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

решение1

Чтоconfigmap

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

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

Другими словами, когда configmapсоздается из внешнего файла (как в вашем случае) или из других значений, сервер API проверит, все ли правильно, а затем сохранит его в etcd. Это также объясняет причины, по которым, когда вы editвидите configmapвесь его контекст. Это происходит, потому что configmapсчитывается из etcd, а не из каких-либо внешних источников.

Это также одна из причин, по которой не рекомендуется хранить большие файлы сохранения как configmaps или secrets — это повлияет на производительность кластера Kubernetes, поскольку все объекты кластера хранятся в etcd.

Настроить

Это один из способов выполнить ваше требование по запуску одной команды для создания/настройки configmapна основе файла в том же каталоге. Это автономный инструмент для настройки объектов Kubernetes через файл kustomization.

Я создал короткий и простой пример, чтобы продемонстрировать эту идею:

$ tree
.
├── application.properties
└── kustomization.yaml
0 directories, 2 files

$ cat kustomization.yaml 
generatorOptions:
  disableNameSuffixHash: true # this flag is used to avoid creation of new configmap, instead it will be modified when file context is changed
configMapGenerator:
- name: application-config
  files:
  - application.properties

$ cat application.properties 
listen.url=localhost:9010
client.url=some_url:3000

Проверьте это, эта команда будеттолько рендеритьconfigmap, он пока не будет создан:

$ kubectl kustomize application.settings/
apiVersion: v1
data:
  application.properties: |
    listen.url=localhost:9010
    client.url=some_url:3000
kind: ConfigMap
metadata:
  name: application-config

Последний шаг —применятьэто:

$ kubectl apply -k application.settings/
configmap/application-config created

$ kubectl get cm
NAME                 DATA   AGE
application-config   1      23s

Краткое пояснение к вышеприведенной команде:

Чтобы применить эти ресурсы, запустите kubectl apply с флагом --kustomize или -k.

Связанный контент