Вопрос или проблема
Я запускаю небольшой кластер 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-сервера, которые вы используете для этой проверки, не могут вернуть корректный ответ.
Возможные причины и решения
-
Настройка DNS-серверов
Убедитесь, что ваши записи DNS дляhome.molgaard.eu
корректно настроены на Simply.com. Проверьте, что NS-записи указывают на DNS-серверы Simply.com, и что ваши поддомены корректно настроены. -
Использование правильных DNS-ресолверов
В вашем случае вы используете публичные DNS-сервера Google и Cloudflare. Если DNS-записи не обновлены на этих серверах, возможно, они не смогут правильно обработать запросы. Попробуйте проверить ваши записи с помощьюdig
илиnslookup
, указав DNS-сервер Simply.com:dig @<dns-сервер-simply.com> _acme-challenge.unifi.home.molgaard.eu SOA
Это поможет вам понять, есть ли проблемы с обновлением записей на Simply.com.
-
Корректное использование DNS01
Убедитесь, что в конфигурации вашегоClusterIssuer
правильно указаны все необходимые параметры. Возможные проблемы могут заключаться в неправильной конфигурацииsecretName
илиsolverName
в секцииdns01
. Убедитесь, что эти значения соответствуют учётным данным и настройкам, предоставленным Simply.com для DNS-подтверждений. -
Проверка состояния плагина вебхука
Убедитесь, что ваш вебхукcert-manager-simply-webhook
работает корректно. Проверьте логи на наличие ошибок. Если вебхук по какой-то причине не отвечает, то это также может быть причиной ошибки. -
Проверка временных задержек
Иногда изменения в DNS могут занимать некоторое время для распространения (обычно 5-10 минут, но может занять и больше). Если вы только что внесли изменения, подождите некоторое время и попробуйте повторить попытку.
Заключение
Проблема, с которой вы столкнулись, связана с DNS, и решение её требует проверки ваших записей и конфигурации. Убедитесь, что записи корректно обновлены и доступны. Если дальнейшие проблемы сохраняются, рассмотрите возможность обращения в поддержку Simply.com для уточнения статуса DNS-записей или воспользуйтесь альтернативными методами проверки, например, через временные DNS-сервера.
Надеюсь, эта информация поможет вам решить вашу проблему с Cert-Manager и продлением сертификатов.