Cert-Manager не смог обновить сертификаты с ошибкой “SERVFAIL”

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

Я запускаю небольшой кластер K3S и использую Cert-Manager для получения сертификатов Let’s Encrypt для приложений, работающих в моем кластере.

Кластер был установлен с помощью Ansible, и первоначальная генерация сертификатов прошла успешно, но по какой-то странной причине Cert-Manager не обновляет сертификаты?

Краткая справка: основной домен molgaard.eu, который хостится на Simply.com.

Кластер находится по адресу home.molgaard.eu, который является поддоменом, не доступным из интернета, поэтому для получения сертификатов Let’s Encrypt в формате: (что-то).home.molgaard.eu мне нужно убедиться, что Cert-Manager использует dns01 во время обновления.

Это все обрабатывается следующим заданием Ansible:

- name: Создать Lets Encrypt ClusterIssuer
  kubernetes.core.k8s:
    state: present
    definition:
      apiVersion: cert-manager.io/v1
      kind: ClusterIssuer
      metadata:
        name: letsencrypt-prod
      spec:
        acme:
          email: *** ЗАХОРОНЕННО ***
          server: https://acme-v02.api.letsencrypt.org/directory
          privateKeySecretRef:
            name: letsencrypt-prod-private-key
          solvers:
            - dns01:
                webhook:
                  groupName: com.github.runnerm.cert-manager-simply-webhook
                  solverName: simply-dns-solver
                  config:
                    secretName: simply-credentials
              selector:
                dnsZones:
                  - molgaard.eu

Эта часть работала хорошо, когда я создавал кластер, но когда пришло время обновления, что-то явно пошло не так:

Вот что происходит, когда я пытаюсь отладить проблему, созданную для обновления сертификата для unifi.home.molgaard.eu.

Соответствующий фрагмент из kubectl get challenges unifi-tls-2-3236526805-1144319786 -ojson выглядит следующим образом:

    "status": {
        "presented": false,
        "processing": true,
        "reason": "При запросе SOA записи для домена '_acme-challenge.unifi.home.molgaard.eu.' с использованием серверов имен [8.8.8.8:53 1.1.1.1:53] ожидался код rcode 'NOERROR' или 'NXDOMAIN', но я получил 'SERVFAIL'",
        "state": "pending"
    }

Я знаю, что это связано с DNS, и я ожидал бы, что при запросе SOA он будет указывать на DNS-серверы, размещенные на Simply.com?

Немного поищав в интернете, я нашел обсуждение проблем cert-manager с SOA-запросами, но я не знаю, применимо ли это к моей проблеме?

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

Конечно! Давайте разберем вашу проблему с сертификатами Let’s Encrypt и ошибкой "SERVFAIL" при использовании Cert-Manager.

Проблема

Из ваших объяснений видно, что Cert-Manager не может продлить сертификаты, так как при запросе SOA-записи для поддомена _acme-challenge.unifi.home.molgaard.eu вы получаете ошибку SERVFAIL. Это указывает на то, что DNS-сервера, которые вы используете для этой проверки, не могут вернуть корректный ответ.

Возможные причины и решения

  1. Настройка DNS-серверов
    Убедитесь, что ваши записи DNS для home.molgaard.eu корректно настроены на Simply.com. Проверьте, что NS-записи указывают на DNS-серверы Simply.com, и что ваши поддомены корректно настроены.

  2. Использование правильных DNS-ресолверов
    В вашем случае вы используете публичные DNS-сервера Google и Cloudflare. Если DNS-записи не обновлены на этих серверах, возможно, они не смогут правильно обработать запросы. Попробуйте проверить ваши записи с помощью dig или nslookup, указав DNS-сервер Simply.com:

    dig @<dns-сервер-simply.com> _acme-challenge.unifi.home.molgaard.eu SOA

    Это поможет вам понять, есть ли проблемы с обновлением записей на Simply.com.

  3. Корректное использование DNS01
    Убедитесь, что в конфигурации вашего ClusterIssuer правильно указаны все необходимые параметры. Возможные проблемы могут заключаться в неправильной конфигурации secretName или solverName в секции dns01. Убедитесь, что эти значения соответствуют учётным данным и настройкам, предоставленным Simply.com для DNS-подтверждений.

  4. Проверка состояния плагина вебхука
    Убедитесь, что ваш вебхук cert-manager-simply-webhook работает корректно. Проверьте логи на наличие ошибок. Если вебхук по какой-то причине не отвечает, то это также может быть причиной ошибки.

  5. Проверка временных задержек
    Иногда изменения в DNS могут занимать некоторое время для распространения (обычно 5-10 минут, но может занять и больше). Если вы только что внесли изменения, подождите некоторое время и попробуйте повторить попытку.

Заключение

Проблема, с которой вы столкнулись, связана с DNS, и решение её требует проверки ваших записей и конфигурации. Убедитесь, что записи корректно обновлены и доступны. Если дальнейшие проблемы сохраняются, рассмотрите возможность обращения в поддержку Simply.com для уточнения статуса DNS-записей или воспользуйтесь альтернативными методами проверки, например, через временные DNS-сервера.

Надеюсь, эта информация поможет вам решить вашу проблему с Cert-Manager и продлением сертификатов.

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

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