Перезапись суффикса 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
часть в обратном порядке.