Плагин coredns etcd не решает записи CNAME

Вопрос или проблема

У меня настроен стек с external-dns -> etcd -> coredns через плагин etcd. A записи разрешаются правильно, но все записи CNAME возвращают только NOERROR и не имеют значения, хотя цель CNAME является A записью, существующей в том же etcd, как показано ниже:

Когда я проверил документацию по плагину etcd, там не упоминались записи CNAME, за исключением записей, указывающих на внешние имена. Ниже представлены Corefile и состояние etcd. Поддерживаются ли CNAME или я делаю что-то не так? Вся функциональность external-dns построена вокруг CNAME, поэтому я не могу представить, почему его разработчики поддержали coredns через etcd/skydns, если один из основных случаев использования не поддерживался…

.:53 {
    errors
    health {
        lameduck 5s
    }
    ready
    prometheus 0.0.0.0:9153
    log
    etcd example.com {
        stubzones
        path /skydns
        endpoint http://external-dns-etcd.external-dns-system.svc.cluster.local:2379
        credentials root <пароль скрыт>
        upstream
    }
    forward . /etc/resolv.conf
    cache 30
    loop
    reload
    loadbalance
}

Данные в etcd, созданные external-dns

/skydns/com/example/a-example2/00e24061
{"text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=crd/external-dns-
system/example\"","targetstrip":1}
/skydns/com/example/a-example2/2c23e944
{"text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=crd/external-dns-system/example\"","targetstrip":1}
/skydns/com/example/a-traefik/1d8b7880
{"text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/traefik-system/traefik\"","targetstrip":1}
/skydns/com/example/a-traefik/664f46bc
{"text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/traefik-system/traefik\"","targetstrip":1}
/skydns/com/example/cname-example1/2f6d448d
{"text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=crd/external-dns-system/example\"","targetstrip":1}
/skydns/com/example/cname-oauth/0108beb1
{"text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=ingressroute/traefik-system/traefik-oauth2-proxy\"","targetstrip":1}
/skydns/com/example/cname-oauth/1c1d4220
{"text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=ingressroute/traefik-system/traefik-oauth2-proxy\"","targetstrip":1}
/skydns/com/example/cname-oauth/583611e5
{"text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=ingressroute/traefik-system/traefik-oauth2-proxy\"","targetstrip":1}
/skydns/com/example/example1/270896aa
{"host":"example2.example.com","text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=crd/external-dns-system/example\"","ttl":1,"targetstrip":1}
/skydns/com/example/example2/1ba35cde
{"host":"1.1.1.1","text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=crd/external-dns-system/example\"","ttl":1,"targetstrip":1}
/skydns/com/example/oauth/6dec8b0b
{"host":"traefik.example.com","text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=ingressroute/traefik-system/traefik-oauth2-proxy\"","ttl":1,"targetstrip":1}
/skydns/com/example/traefik/417b21b7
{"host":"10.1.2.128","text":"\"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/traefik-system/traefik\"","targetstrip":1}

.

Ответ или решение

Проблема с разрешением CNAME записей в плагине CoreDNS для etcd

Вышеописанная проблема связана с тем, что плагин etcd для CoreDNS не возвращает значения для записей типа CNAME, несмотря на то, что соответствующие A записи присутствуют в etcd. Это может вызывать недоумение, особенно учитывая, что ваш стек построен с использованием external-dns, который в первую очередь предназначен для управления записями DNS, включая CNAME.

1. Поддержка CNAME в CoreDNS

Первым делом обратим внимание на документацию плагина etcd для CoreDNS. В ней упоминается, что плагин поддерживает только определенные виды записей, и CNAME не рассматриваются, за исключением случаев, когда они указывают на внешние имена. Это может создавать впечатление, что CNAME записи буквального не поддерживаются. Ваша конфигурация предполагает использование CNAME, ссылающегося на существующую A запись внутри etcd, что требует дополнительной проверки.

2. Как исправить ситуацию

Чтобы диагностировать и, возможно, решить проблему с CNAME, выполните следующие шаги:

  • Проверьте структуру данных в etcd: Убедитесь, что ваши записи CNAME корректно настроены и что у них есть соответствующие целевые A записи. Например, запись cname-example1 должна ссылаться на существующую A запись, такую как a-example2.

  • Проверьте конфигурацию CoreDNS (Corefile): Попробуйте добавить параметр cname в конфигурацию etcd плагина. Это может помочь CoreDNS правильно обрабатывать CNAME записи. Например:

    etcd example.com {
      stubzones
      path /skydns
      endpoint http://external-dns-etcd.external-dns-system.svc.cluster.local:2379
      credentials root <password redacted>
      cname
      upstream
    }
  • Проверьте, как external-dns создает записи: Убедитесь, что формат данных, генерируемых external-dns для CNAME записей, соответствует требованиям CoreDNS. Записи должны содержать все необходимые поля и соответствовать ожидаемой структуре.

3. Логгирование и мониторинг

Убедитесь, что у вас настроено логгирование в CoreDNS. Включите уровень логгирования debug, чтобы получить больше информации о принимаемых запросах и соответствующих действиях. Это может помочь выявить, на каком этапе происходит сбой разрешения CNAME записей.

4. Обратитесь к сообществу или разработчикам

Если после всех проверок проблема остается неразрешимой, рекомендуется обратиться в сообщество или к разработчикам external-dns. Вы можете создать вопрос на таких платформах, как GitHub или Stack Overflow, где специалисты смогут предложить свои решения или подтвердить существующие ограничения.

Заключение

Проблема с отсутствием разрешения CNAME записей в плагине etcd для CoreDNS может быть вызвана рядом факторов, включая неправильные настройки, несовместимость с ожидаемой структурой данных или ограничения самого плагина. Тщательная проверка конфигурации, корректных записей в etcd и логирование – ключевые шаги для решения данной проблемы. Помните, что активное участие в сообществе также может дать дополнительные инсайты и рекомендации.

Оцените материал
Добавить комментарий

Капча загружается...