Перезапись суффикса CoreDNS заставляет запросы DNS возвращать переписанное имя

У меня есть кластер Kubernetes 1.13.1 с CoreDNS и несколько служб, работающих в пространстве имен по умолчанию, через которые я хотел бы быть доступными <servicename>.nsc в дополнение к умолчанию <servicename>.default.svc.cluster.local,

Первым делом я попытался вручную переписать каждый сервис, например так:

rewrite name gitea.nsc gitea.default.svc.cluster.local

Бег nslookup gitea.nsc возвращает ожидаемый результат:

Server:     10.245.0.10
Address:    10.245.0.10#53

Name:   gitea.nsc
Address: 10.245.64.203

Я могу curl это все хорошо.

Но затем я попытался несколько абстрагироваться, так как ручное добавление строки для каждого сервиса утомительно.

Я закончил с этим:

rewrite name suffix .nsc .default.svc.cluster.local

Но сейчас, curlИнг внезапно не удается. nslookup дает возможную подсказку относительно того, почему:

Server:     10.245.0.10
Address:    10.245.0.10#53

Name:   gitea.default.svc.cluster.local
Address: 10.245.64.203

Теперь имя в ответе содержит переписанный хост, а не исходный ввод. Я думаю, что это сбрасывает ping, curl, wget,

Мой Corefile в настоящее время выглядит так:

.:53 {
        errors
        health
        rewrite name git.nsc gitea.default.svc.cluster.local
        rewrite name suffix .nsc .default.svc.cluster.local
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

Все, кроме двух строк перезаписи, автоматически генерируется моим хостинг-провайдером. я использую git.nsc в одном случае, так что я могу одновременно переписать в Corefile, пока я отлаживаю это.

Я озадачен Как мне заставить CoreDNS переписать <servicename>.nsc, а не вернуть переписанный хост в свой ответ?

1 ответ

Оказывается, ответ прямо в плагине перезаписи Readme. Подводя итог:

Как оказалось, точные переписывает как мои git.nsc перепишите выше, получите ответ, переписанный бесплатно, по умолчанию возвращается переписанный хост. Для других типов, таких как регулярное выражение или суффикс, вы должны сделать это явно. Это возможно только для переписывания регулярных выражений, поэтому необходимо переписывать суффиксные переписки, чтобы сначала переписывать регулярные выражения.

Следующий фрагмент работает для меня:

rewrite stop {
    name regex (.*)\.nsc {1}.default.svc.cluster.local
    answer name (.*)\.default\.svc\.cluster\.local {1}.nsc
}

answer name часть в основном name regex часть в обратном порядке.

Другие вопросы по тегам