在 coredns_cm.yaml 中添加了下面的正则重写规则,比如将 relation_api
重写为 relation-api
,但总是不起作用,请问如何解决?
rewrite name regex ^(\w+)_(\w+)$ {1}-{2}.production.svc.cluster.local
而下面不用正则的写法可以正常工作。
rewrite name relation_api relation-api.production.svc.cluster.local
可能还要重写一下 answer。
https://github.com/coredns/coredns/issues/2347
https://github.com/coredns/coredns/tree/master/plugin/rewrite
终于搞定了!提供的 github issue 链接真是雪中送炭。
除了重写 answer ,还需要在 name regex 的正则结尾的 $
之前加上 \.
,即 \.$
,而且 name 与 answer name 的正则规则要对应,比如 name 重写是 relation_api -> relation-api ,answer name 重写时要能 relation-api -> relation_api 。
正确的写法如下:
rewrite stop {
name regex ([a-zA-Z0-9-]+)_([a-zA-Z0-9-]+).$ {1}-{2}.production.svc.cluster.local
answer name ([a-zA-Z0-9-]+)-([a-zA-Z0-9-]+)\.production\.svc\.cluster\.local\.$ {1}_{2}
}
https://github.com/coredns/coredns/blob/master/plugin/rewrite/README.md
希望能帮上忙,英文水准不太好就不翻译了,里面应该有段是