使用kubectl补丁将DNS重写规则添加到CoreDNS Configmap

时间:2020-09-15 05:58:16

标签: patch kubectl configmap coredns

我想使用kubectl patch命令将DNS重写规则添加到coredns configmap中,如Custom DNS Entries For Kubernetes中所述。默认配置映射如下所示:

apiVersion: v1
data:
  Corefile: |
    .:53 {
        log
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap
....

我想添加行

rewrite name old.name new.name

但是如何指定在“。:53”元素中添加一行让我感到困惑。

我知道使用kubectl get ... | sed ... | kubectl replace -f -可以获得类似的结果,但这看起来很难看,而且我想使用JSON扩展对kubctl patch的了解。谢谢!

1 个答案:

答案 0 :(得分:0)

您不能使用patch来修改ConfigMap。

data.Corefile是一个键,其值(Corefile内容)的类型为:string

api-server将其视为字节字符串。您无法使用kubectl补丁来修补字符串的一部分。

第二:

我想使用JSON扩展我对kubctl补丁的了解

Corefile甚至不是有效的json文件。即使是,api-server也看不到json / yaml,对于api-server来说,它只是一串随机的字母数字字符。


那你能做什么?

剩下kubectl get ... | sed ... | kubectl replace -f - ,这是一个完全有效的解决方案。