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

问题描述

我想使用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的了解。谢谢!

解决方法

您不能使用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 - ,这是一个完全有效的解决方案。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...