Перейти к содержанию

AcmeChallengeFailed

Что означает алерт

ACME Challenge находится в конечном состоянии errored, invalid или expired дольше 15 минут. Severity: warning.

Попытка валидации домена завершилась неудачей. Возможны два случая:

  • неудачна текущая попытка перевыпуска: сертификат не обновлён, cert-manager повторит выпуск после паузы;
  • объект Challenge остался от старой попытки, а следующая попытка прошла через другой Order: на сертификат не влияет.

Лейблы алерта: cluster, exported_namespace, name (имя Challenge), domain, status, reason (текст ошибки cert-manager или Let's Encrypt).

Алерт работает только в кластерах с cert-manager v1.20.0 и выше (сейчас только prod).

Диагностика (по шагам)

  1. Определить сертификат. Имя Challenge строится как <certificate>-<revision>-<hash>-<hash>.

  2. Проверить состояние сертификата и Order этой попытки:

kubectl --context <ctx> -n <ns> get certificate <cert>
kubectl --context <ctx> -n <ns> get order | grep <cert>
  1. Определить случай:
Certificate Order, которому принадлежит Challenge Случай
Ready=True, срок в норме другой Order этого сертификата в valid или Order Challenge отсутствует старая попытка
Ready=False Order в invalid / errored неудачна текущая попытка

Владельца Challenge показывает ownerReferences:

kubectl --context <ctx> -n <ns> get challenge <challenge> -o jsonpath='{.metadata.ownerReferences[0].kind}/{.metadata.ownerReferences[0].name}{"\n"}'

Как починить

Старая попытка

Удалить Challenge:

kubectl --context <ctx> -n <ns> delete challenge <challenge>

Неудачна текущая попытка

  1. Определить причину по лейблу reason:
Текст Причина
wrong status code '503', '404', did not get expected response шлюз не доводит запрос до solver, раздел 2 общего документа
Timeout during connect, DNS problem, NXDOMAIN домен не указывает на шлюз, раздел 3 общего документа
rateLimited ограничения Let's Encrypt, раздел 4 общего документа
Expired authorization авторизация истекла до завершения валидации; причина обычно в разделах 1–3
  1. Устранить причину по разделу общего документа.
  2. Запустить выпуск: cmctl renew <cert> -n <ns> --context <ctx>.

Критерий закрытия

  1. Challenge в конечном состоянии отсутствует.
  2. У Certificate Ready=True.
  3. Алерт перешёл в inactive.