如何在Kubernetes中修补ConfigMap

Muh*_*eed 7 patch kubernetes coredns configmap

Kubernetes附带一个ConfigMap名为coredns可以让你指定的DNS设置。我想通过添加以下内容来修改或修补此配置的一小部分:

apiVersion: v1
kind: ConfigMap
data:
  upstreamNameservers: |
    ["1.1.1.1", "1.0.0.1"]
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用kubectrl edit来编辑coredns ConfigMap上面的文件,该文件仅包含我要插入或更新的设置,并且可以将其合并到现有文件之上或在现有文件上打补丁ConfigMap吗?

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

Jor*_*itt 9

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

kubectl patch configmap/coredns \
  -n kube-system \
  --type merge \
  -p '{"data":{"upstreamNameservers":"[\"1.1.1.1\", \"1.0.0.1\"]"}}'
Run Code Online (Sandbox Code Playgroud)

  • @MuhammadRehanSaeed,您好,Helm 用于部署和管理“工件”或自包含系统。我认为使用 Helm 修改系统配置不合适。 (4认同)
  • 如果我想以某种方式将它添加到 Helm 图表中怎么办? (2认同)

Amr*_*sar 5

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

    kubectl edit cm -n kube-system coredns 
Run Code Online (Sandbox Code Playgroud)

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

  • 该问题询问如何在无法手动编辑某些文件的 CI/CD 环境中执行此操作。 (2认同)

P E*_*ram 3

你应该尝试这样的事情:

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 - 
Run Code Online (Sandbox Code Playgroud)

  • @MuhammadRehanSaeed 这个答案不涉及手动编辑文件。 (5认同)
  • 问题询问如何在无法手动编辑某些文件的 CI/CD 环境中执行此操作。 (2认同)