Как залатать ConfigMap в Кубернетесе - PullRequest
0 голосов
/ 07 февраля 2019

Kubernetes поставляется с ConfigMap с именем coredns, который позволяет вам задавать настройки DNS.Я хочу изменить или исправить небольшой фрагмент этой конфигурации, добавив:

apiVersion: v1
kind: ConfigMap
data:
  upstreamNameservers: |
    ["1.1.1.1", "1.0.0.1"]

Я знаю, что могу использовать kubectrl edit для редактирования coredns ConfigMap. Есть ли способ, которым я могу воспользоваться вышефайл, содержащий только те настройки, которые я хочу вставить или обновить, а затем объединить их поверх или пропатчить поверх существующего ConfigMap?

Причина этого заключается в том, что я хочу, чтобы мое развертывание повторялось с использованием CI / CD,Таким образом, даже если бы я запустил свой график Хелма на совершенно новом кластере Kubernetes, настройки, указанные выше, были бы применены.

Ответы [ 4 ]

0 голосов
/ 09 февраля 2019

Это будет применять тот же патч к этому единственному полю:

kubectl patch configmap/coredns \
  -n kube-system \
  --type merge \
  -p '{"data":{"upstreamNameservers":"[\"1.1.1.1\", \"1.0.0.1\"]"}}'
0 голосов
/ 07 февраля 2019

вы можете отредактировать его с помощью vi следующим образом:

    kubectl edit cm -n kube-system coredns 

или вы можете экспортировать его, чтобы применить любые изменения, используя kubectl get cm -n kube-system -o yaml --export, а затем kubectl apply -f fileName.yaml, чтобы применить ваши изменения

0 голосов
/ 07 февраля 2019

Поскольку ConfigMaps используются для монтирования файлов конфигурации в Pod, кажется, что this - это то, что вы ищете.ConfigMaps внутри контейнеров будет обновляться автоматически, если базовый ConfigMap или Secret будет изменен.

Вы можете указать местоположение configMap:

configMapVolume(mountPath: '/etc/mount3', configMapName: 'my-config'),

Обновление:

Хорошо, я думаю, это не решит вашу проблемувопрос.Другая вещь, которая приходит мне в голову, это kubectl create configmap с каналом к ​​kubectl replace Так что вся команда будет выглядеть так:

kubectl create configmap NAME --from-file file.name -o yaml --dry-run | kubectl replace -f -

Обратите внимание, что это заменяет весь файл, поэтомупросто replace тоже должно работать.

0 голосов
/ 07 февраля 2019

вы должны попробовать что-то вроде этого:

kubectl get cm some-config -o yaml | run 'sed' commands to make updates | kubectl create cm some-config -o yaml --dry-run | kubectl apply -f - 
...