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

AcmeChallengeStuck / AcmeChallengeStuckLong

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

Алерт Условие Severity
AcmeChallengeStuck ACME Challenge в состоянии pending дольше 1 часа warning
AcmeChallengeStuckLong ACME Challenge в состоянии pending дольше 12 часов critical

Здоровый HTTP-01 Challenge проходит за минуты. Challenge в pending означает, что Let's Encrypt или self-check cert-manager не может получить токен по адресу http://<domain>/.well-known/acme-challenge/<token>. Перевыпуск сертификата не завершится, пока причина не устранена. При renewBefore 15 дней запас до истечения составляет не более двух недель.

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

Алерт работает только в кластерах с cert-manager v1.20.0 и выше (сейчас только prod). Подробнее в разделе «Ограничения мониторинга» общего документа.

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

  1. Прочитать лейбл reason в алерте или Status.Reason у Challenge:
kubectl --context <ctx> -n <ns> describe challenge <challenge>
  1. Проверить solver-под:
kubectl --context <ctx> -n <ns> get pods,svc,endpoints | grep cm-acme-http-solver
  1. Проверить ответ шлюза на challenge-адрес:
curl -sv http://<domain>/.well-known/acme-challenge/test 2>&1 | grep -E '^< HTTP|^< server'
  1. Выбрать раздел общего документа по результату:
Результат Раздел
solver-под в ImagePullBackOff / ErrImagePull, в событиях 403 1. Solver-под не скачал образ
solver-под в Running, шлюз отвечает 503 или 404 без участия solver 2. Шлюз не доводит запрос до solver
context deadline exceeded, ошибка DNS 3. Домен не указывает на шлюз или недоступен
429 rateLimited 4. Ограничения Let's Encrypt

Как починить

  1. Устранить причину по разделу общего документа.
  2. Удалить зависший Order, чтобы cert-manager создал новый с новым Challenge:
kubectl --context <ctx> -n <ns> get order | grep <cert>
kubectl --context <ctx> -n <ns> delete order <order>
  1. Если новый Order не появился в течение нескольких минут, запустить выпуск: cmctl renew <cert> -n <ns> --context <ctx>.

Если домен больше не используется, удалить Certificate (раздел 7 общего документа).

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

  1. Challenge удалён, новый Challenge прошёл в valid.
  2. У Certificate Ready=True, notAfter обновлён.
  3. Алерт перешёл в inactive.