代码之家  ›  专栏  ›  技术社区  ›  Muhammad Rehan Saeed

如何在Kubernetes中修补ConfigMap

  •  1
  • Muhammad Rehan Saeed  · 技术社区  · 6 年前

    库伯内特斯的船 ConfigMap 打电话 coredns 允许您指定DNS设置。我想通过添加以下内容来修改或修补此配置的一小部分:

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

    我知道我可以用 kubectrl edit 编辑 coredns公司 配置映射 是否有某种方法可以将上述文件只包含我想插入或更新的设置,并将其合并到现有的补丁上或修补 配置映射 ?

    原因是我希望使用CI/CD可以重复部署。所以,即使我在一个全新的Kubernetes集群上运行我的Helm图表,上面的设置也会被应用。

    4 回复  |  直到 6 年前
        1
  •  11
  •   Jordan Liggitt    6 年前

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

    kubectl patch configmap/coredns \
      -n kube-system \
      --type merge \
      -p '{"data":{"upstreamNameservers":"[\"1.1.1.1\", \"1.0.0.1\"]"}}'
    
        2
  •  0
  •   Amr Nassar    6 年前

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

        kubectl edit cm -n kube-system coredns 
    

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

        3
  •  0
  •   aurelius    6 年前

    你应该试试这样的:

    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 - 
    
        4
  •  0
  •   aurelius    6 年前

    由于ConfigMaps用于将配置文件装载到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 也应该有用。