如何在Kubernetes中修补ConfigMap

时间:2019-02-07 10:26:25

标签: kubernetes patch configmap coredns

Kubernetes附带一个名为ConfigMap的{​​{1}},可用于指定DNS设置。我想通过添加以下内容来修改或修补此配置的一小部分:

coredns

我知道我可以使用apiVersion: v1 kind: ConfigMap data: upstreamNameservers: | ["1.1.1.1", "1.0.0.1"] 编辑kubectrl edit coredns,通过某种方式,我可以将仅包含要插入或更新的设置合并的上述文件在现有ConfigMap之上还是之上?

这样做的原因是我希望使用CI / CD可重复进行部署。因此,即使我在全新的Kubernetes群集上运行Helm图表,也将应用上面的设置。

4 个答案:

答案 0 :(得分:5)

这会将相同的补丁应用到单个字段:

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

答案 1 :(得分:0)

您应该尝试这样的事情:

listener.bind(obj)

答案 2 :(得分:0)

您可以使用vi对其进行如下编辑:

    kubectl edit cm -n kube-system coredns 

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

答案 3 :(得分:0)

由于ConfigMap用于将配置文件装载到Pod,因此似乎this是您要寻找的。如果基础ConfigMap或Secret被修改,容器内部的ConfigMap将自动更新。

您可以指定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也应该起作用。