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). Подробнее в разделе «Ограничения мониторинга» общего документа.
Диагностика (по шагам)
- Прочитать лейбл
reasonв алерте илиStatus.Reasonу Challenge:
kubectl --context <ctx> -n <ns> describe challenge <challenge>
- Проверить solver-под:
kubectl --context <ctx> -n <ns> get pods,svc,endpoints | grep cm-acme-http-solver
- Проверить ответ шлюза на challenge-адрес:
curl -sv http://<domain>/.well-known/acme-challenge/test 2>&1 | grep -E '^< HTTP|^< server'
- Выбрать раздел общего документа по результату:
| Результат | Раздел |
|---|---|
solver-под в ImagePullBackOff / ErrImagePull, в событиях 403 |
1. Solver-под не скачал образ |
solver-под в Running, шлюз отвечает 503 или 404 без участия solver |
2. Шлюз не доводит запрос до solver |
context deadline exceeded, ошибка DNS |
3. Домен не указывает на шлюз или недоступен |
429 rateLimited |
4. Ограничения Let's Encrypt |
Как починить
- Устранить причину по разделу общего документа.
- Удалить зависший Order, чтобы cert-manager создал новый с новым Challenge:
kubectl --context <ctx> -n <ns> get order | grep <cert>
kubectl --context <ctx> -n <ns> delete order <order>
- Если новый Order не появился в течение нескольких минут, запустить выпуск:
cmctl renew <cert> -n <ns> --context <ctx>.
Если домен больше не используется, удалить Certificate (раздел 7 общего документа).
Критерий закрытия
- Challenge удалён, новый Challenge прошёл в
valid. - У Certificate
Ready=True,notAfterобновлён. - Алерт перешёл в
inactive.