如何在Kubernetes中修补ConfigMap

5cnsuln7  于 2023-06-05  发布在  Kubernetes
关注(0)|答案(5)|浏览(158)

Kubernetes附带了一个名为corednsConfigMap,它允许您指定DNS设置。我想通过添加以下内容来修改或修补此配置的一小部分:

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

我知道我可以使用kubectrl edit来编辑corednsConfigMap是否有某种方法可以将上面的文件只包含我想要插入或更新的设置,并将其合并到现有的ConfigMap之上或对其进行修补?
这样做的原因是我希望我的部署可以使用CI/CD进行重复。因此,即使我在全新的Kubernetes集群上运行我的Helm chart,上面的设置也会被应用。

9ceoxa92

9ceoxa921#

这将对该单个字段应用相同的修补程序:

kubectl patch configmap/coredns \
  -n kube-system \
  --type merge \
  -p '{"data":{"upstreamNameservers":"[\"1.1.1.1\", \"1.0.0.1\"]"}}'
hpxqektj

hpxqektj2#

你应该试试这样的方法:

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 -
cx6n0qe3

cx6n0qe33#

你可以使用vi编辑它,如下所示:

kubectl edit cm -n kube-system coredns

或者您可以使用kubectl get cm -n kube-system -o yaml --export将其导出以应用任何更改,然后使用kubectl apply -f fileName.yaml应用您的更改

llycmphe

llycmphe4#

由于ConfigMaps用于将配置文件挂载到Pod,因此看起来这就是您正在寻找的。如果底层ConfigMap或Secret被修改,容器内的ConfigMap将自动更新。
您可以指定configMap位置:
configMapVolume(mountPath: '/etc/mount3', configMapName: 'my-config'),

更新:

好吧,我想这并不能解决你的问题。我想到的另一件事是kubectl create configmapkubectl replace的管道,所以整个命令看起来像这样:
kubectl create configmap NAME --from-file file.name -o yaml --dry-run | kubectl replace -f -
请注意,这将替换整个文件,因此replace也应该可以工作。

ddrv8njm

ddrv8njm5#

可以使用以下kubectl命令修补configmap。

kubectl patch configmap your-configmap-name -n your-namespace --patch '{"data": {"key": "new-value"}}'

相关问题