我想使用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
的了解。谢谢!
答案 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 -
,这是一个完全有效的解决方案。