Вопрос или проблема
kubectl describe certificaterequest dallasoft-nginx-tls
Имя: dallasoft-nginx-tls-1
Пространство: по умолчанию
Метки: <нет>
Аннотации: cert-manager.io/certificate-name: dallasoft-nginx-tls
cert-manager.io/certificate-revision: 1
cert-manager.io/private-key-secret-name: dallasoft-nginx-tls-l2744
Версия API: cert-manager.io/v1
Тип: CertificateRequest
Метаданные:
Время создания: 2024-10-01T05:45:35Z
Поколение: 1
Ссылки владельцев:
Версия API: cert-manager.io/v1
Блокировка удаления владельца: true
Контроллер: true
Тип: Certificate
Имя: dallasoft-nginx-tls
UID: bab22135-e7bd-46de-a391-48865cd6c5d0
Версия ресурса: 26240
UID: e4ce06c7-f913-4f2d-99d9-35bd70602517
Спецификация:
Дополнительно:
authentication.kubernetes.io/credential-id:
JTI=fbe3b07a-8600-40e4-ba55-a82228465e58
authentication.kubernetes.io/node-name:
ip-172-31-29-0
authentication.kubernetes.io/node-uid:
ed3e9423-ff86-480a-a5c4-f60f9ac7bfa4
authentication.kubernetes.io/pod-name:
cert-manager-7b9875fbcc-hxchc
authentication.kubernetes.io/pod-uid:
3dcac7ca-89c4-4bf0-bd0d-da37208c44ff
Группы:
system:serviceaccounts
system:serviceaccounts:cert-manager
system:authenticated
Ссылка на издателя:
Группа: cert-manager.io
Тип: Issuer
Имя: letsencrypt-staging
Запрос: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ2d6Q0NBV3NDQVFBd0FEQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU44bworWDRENGVpaDUvVUFIRW1aLzVPOWR6VzhqdVc5ck02V2RUVUZVTHRNS1NiNW1UZVhWSXBNS1d4N0QrRGVNWkhWCnBSajZuTzhINkFLMU9jVnRyYUZ5VEpWaXdTVjYxYWtacTYvRStmYXZFeHdGYUFVVEtHd1ZNditBSjU3bC9SakwKeXZCcmdLZUtaWXMxNjVEMFJwTklDUmhub1lpN2ErTncyVGJYelhwemxEUXkvcWpMRElBTGVBVHVvVnVlVnlOcwprUk55T1lJOXNBUEtYZ3BRQXBxNk5aemFMMUFSN0NUTnJvKzVZMXBQL2U0NTBQL1ZZT1hjbDZHT0Rsb3dQVVpBCk9Mbkw1ZEpJVVViVVlCN0hrdGVzTWI4bnI5K3M0MXczNHcrNGh1bWJaNk1QUkY3dDRPeEEraksxNHFHMGpjV2sKWkxNTE9LTmhTYjk0dzVXQTdvY0NBd0VBQWFBK01Ed0dDU3FHU0liM0RRRUpEakV2TUMwd0d3WURWUjBSQVFILwpCQkV3RDRJTlpHRnNiR0Z6YjJaMExtTnZiVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdEUVlKS29aSWh2Y05BUUVMCkJRQURnZ0VCQUZONnBKb3RKVS8xejVZRnMra3VXclZnZFNQdG56OTFtb1VubThNYVpHS0RQeUE0cVpTdDJSMnYKTHR6RFhrdnM2cjZTN2xJeTVielRvcHZHN0t6QjFPSi9NdHMxWXVEN2xhNytsOEVxVGx0RVpSdk5DNFJDamRQVgp2Y2cydzVhcy9uem9QaUFRK0NWSExiODBsL2hGNlNhWXY5cVo5VllYUVVXRWxqcVl5N0xKSUo4Q2UrR04rdlUyCm9zeERpNGpoaE1IcGVGY0wrSlhPZE1BWjIvaW15Wm1HWVNzYS8yUmlXTzhldEQyUHk1V25hSkRSVDlXNU95Z0oKcmdHTEJzQ3ZVR1dYeUNOQlhsRXFMY3lNdE82aE9Ea2dQQTVKalZJNDNxSGdaZGxWSUZXbEszaWt5dTFHNVZvUgpMb2R1TUtENWVJb3JYbHhZMVBpbjB6dWJKT001TU5jPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K
UID: f0d64597-12b6-482f-867b-a27cb0ce277e
Использования:
цифровая подпись
шифрование ключей
Имя пользователя: system:serviceaccount:cert-manager:cert-manager
Статус:
Условия:
Время последнего перехода: 2024-10-01T05:45:35Z
Сообщение: Запрос сертификата был одобрен cert-manager.io
Причина: cert-manager.io
Статус: True
Тип: Approved
Время последнего перехода: 2024-10-01T05:45:35Z
Сообщение: Ожидание выдачи сертификата по заказу default/dallasoft-nginx-tls-1-2581235461: "ожидание"
Причина: Ожидание
Статус: False
Тип: Готов
События:
Тип Причина Возраст Откуда Сообщение
---- ------ ---- ---- -------
Нормальный WaitingForApproval 4м36с cert-manager-certificaterequests-issuer-selfsigned Не подписываю CertificateRequest, пока он не будет одобрен
Нормальный WaitingForApproval 4м36с cert-manager-certificaterequests-issuer-acme Не подписываю CertificateRequest, пока он не будет одобрен
Нормальный WaitingForApproval 4м36с cert-manager-certificaterequests-issuer-vault Не подписываю CertificateRequest, пока он не будет одобрен
Нормальный WaitingForApproval 4м36с cert-manager-certificaterequests-issuer-venafi Не подписываю CertificateRequest, пока он не будет одобрен
Нормальный WaitingForApproval 4м36с cert-manager-certificaterequests-issuer-ca Не подписываю CertificateRequest, пока он не будет одобрен
Нормальный cert-manager.io 4м36с cert-manager-certificaterequests-approver Запрос сертификата был одобрен cert-manager.io
Нормальный OrderCreated 4м36с cert-manager-certificaterequests-issuer-acme Создан ресурс заказа default/dallasoft-nginx-tls-1-2581235461
root@ip-172-31-20-168:~# kubectl get certificate -o wide
ИМЯ ГОТОВА СЕКРЕТ ИЗДАТЕЛЬ СТАТУС ВОЗРАСТ
dallasoft-nginx-tls False dallasoft-nginx-tls letsencrypt-staging Выдача сертификата, так как секрет не существует 4м43с
kubectl describe challenge
Причина: Ожидание распространения HTTP-01 вызова: не удалось выполнить запрос GET для проверки 'http://dallasoft.com/.well-known/acme-challenge/wqt96mfy9lsc6vgX4dsVDg7j9RKVZFkZWu-TAubrpeU': Get "http://dallasoft.com/.well-known/acme-challenge/wqt96mfy9lsc6vgX4dsVDg7j9RKVZFkZWu-TAubrpeU": dial tcp 3.93.xxx:80: connect: соединение отклонено
Добавление этого в аннотации ingress решило проблему
acme.cert-manager.io/http01-edit-in-place: "true"
Мне нужно удалить и заново создать ingress
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что сертификат не может быть выдан и привязан к секрету, поскольку Cert-Manager не может проверить HTTP-01 вызов для домена. Система сообщает, что "Issuing certificate as Secret does not exist", что означает, что для успешной выдачи сертификата требуется наличие секрета.
Причины проблемы
-
Проблемы с доступом: Ваша система не может получить доступ к HTTP-адресу
http://dallasoft.com/.well-known/acme-challenge/[token]
. Это может быть связано с тем, что ваш сервер не доступен по данному адресу или что неправильно настроен маршрутизация для инресс-регистратора. -
Конфигурация инресса: Необходимо удостовериться, что инресс контроллер правильно настроен для обработки вызовов ACME и направляет запросы на соответствующий сервис.
Решение
-
Обновление аннотаций инресса: Вы уже упомянули, что добавление аннотации:
acme.cert-manager.io/http01-edit-in-place: "true"
решило проблему. Эта аннотация позволяет Cert-Manager управлять пустым состоянием вызова HTTP-01 и вносить изменения в ваш инресс, чтобы правильно обрабатывать запросы на проверку.
-
Удаление и восстановление инресса: Чтобы изменения аннотации вступили в силу, вы должны удалить и снова создать инресс ресурс. Это приведёт к тому, что ваша конфигурация и аннотации будут применены должным образом. Вы можете выполнить следующие команды:
kubectl delete ingress [имя-вашего-инресса] kubectl apply -f [путь-к-файлу-или-определению-инресса].yaml
-
Проверка состояния сертификата: После выполнения предыдущих шагов убедитесь, что статус вашего сертификата изменился на
True
и что Secret был создан.kubectl get certificates kubectl describe certificate dallasoft-nginx-tls
-
Мониторинг логов: Если проблема не решена, проверьте логи вашего инресс контроллера или Cert-Manager, чтобы получить дополнительную информацию о том, что может идти не так:
kubectl logs -l app=cert-manager -n cert-manager
Заключение
Таким образом, проблема была вызвана некорректной маршрутизацией для проверки владения доменом через HTTP-01. Корректное добавление аннотаций к инрессу и повторное создание ресурса должны помочь решить эту проблему. Если возникнут дополнительные сложности, всегда можно обратиться к логам для устранения неполадок и получения более детальной информации.