Выдача сертификата как секрет не существует – cert-manager

Вопрос или проблема

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", что означает, что для успешной выдачи сертификата требуется наличие секрета.

Причины проблемы

  1. Проблемы с доступом: Ваша система не может получить доступ к HTTP-адресу http://dallasoft.com/.well-known/acme-challenge/[token]. Это может быть связано с тем, что ваш сервер не доступен по данному адресу или что неправильно настроен маршрутизация для инресс-регистратора.

  2. Конфигурация инресса: Необходимо удостовериться, что инресс контроллер правильно настроен для обработки вызовов ACME и направляет запросы на соответствующий сервис.

Решение

  1. Обновление аннотаций инресса: Вы уже упомянули, что добавление аннотации:

    acme.cert-manager.io/http01-edit-in-place: "true"

    решило проблему. Эта аннотация позволяет Cert-Manager управлять пустым состоянием вызова HTTP-01 и вносить изменения в ваш инресс, чтобы правильно обрабатывать запросы на проверку.

  2. Удаление и восстановление инресса: Чтобы изменения аннотации вступили в силу, вы должны удалить и снова создать инресс ресурс. Это приведёт к тому, что ваша конфигурация и аннотации будут применены должным образом. Вы можете выполнить следующие команды:

    kubectl delete ingress [имя-вашего-инресса]
    kubectl apply -f [путь-к-файлу-или-определению-инресса].yaml
  3. Проверка состояния сертификата: После выполнения предыдущих шагов убедитесь, что статус вашего сертификата изменился на True и что Secret был создан.

    kubectl get certificates
    kubectl describe certificate dallasoft-nginx-tls
  4. Мониторинг логов: Если проблема не решена, проверьте логи вашего инресс контроллера или Cert-Manager, чтобы получить дополнительную информацию о том, что может идти не так:

    kubectl logs -l app=cert-manager -n cert-manager

Заключение

Таким образом, проблема была вызвана некорректной маршрутизацией для проверки владения доменом через HTTP-01. Корректное добавление аннотаций к инрессу и повторное создание ресурса должны помочь решить эту проблему. Если возникнут дополнительные сложности, всегда можно обратиться к логам для устранения неполадок и получения более детальной информации.

Оцените материал
Добавить комментарий

Капча загружается...