Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

cert-manager

cert-manager — это расширение для Kubernetes, которое автоматизирует выпуск и обновление сертификатов. Оно позволяет выпускать сертификаты от Let's Encrypt и других центров сертификации, а также использовать внутренние корневые сертификаты. cert-manager упрощает работу с сертификатами, автоматически продлевая их перед истечением срока действия и обеспечивая безопасное шифрование для сервисов в кластере. Он интегрируется с Ingress-контроллерами и поддерживает различные механизмы проверки домена. Это делает его удобным инструментом для автоматизации управления сертификатами в Kubernetes.

Установка

Для установки cert-manager откройте панель управления кластером, перейдите во вкладку «Дополнения» и выберите cert-manager.

Selection 173

В открывшемся мастере установки нажмите кнопку «Установить» и дождитесь завершения процесса.

Selection 174

Проверить корректность установки можно командой:

    

Все поды в неймспейсе cert-manager должны иметь статус «Running».

Использование

Чтобы cert-manager мог выпускать сертификаты, необходимо создать объект ClusterIssuer, который будет управлять сертификатами на уровне всего кластера. Пример манифеста:

    

Здесь:

  • email — ваша почта. Она необходима для создания сертификатов, на нее будут приходить уведомления от Let's Encrypt.

  • server — адрес Let's Encrypt или другого центра сертификации.

  • privateKeySecretRef — секрет, в котором хранится закрытый ключ.

  • solvers.http01.ingress.class — метод подтверждения владения доменом через HTTP, в данном случае с использованием Ingress-контроллера nginx.

Если вы используете другой Ingress-контроллер, необходимо заменить nginx на нужное значение, например, для Traefik:

    

Пример использования cert-manager

Рассмотрим использование cert-manager на примере ресурсов, описанных в статье про Nginx Ingress.

Если вы следовали той инструкции, у вас уже настроены:

  • 3 деплоймента
  • Nginx Ingress
  • LoadBalancer

Сервисы доступны по:

  • http://ingress1.example.com/service1
  • http://ingress1.example.com/service2
  • http://ingress2.example.com/

Теперь опишем ClusterIssuer в файле cluster-issuer.yaml:

    

Применим манифест:

    

Далее необходимо обновить манифест Ingress, добавив аннотацию для использования cert-manager и секцию tls. Обновленный ingress.yaml:

    

Изменения:

  • Добавлена аннотация cert-manager.io/cluster-issuer: letsencrypt-prod, указывающая cert-manager использовать созданный ClusterIssuer.

  • Добавлена секция tls, в которой указаны домены, для которых cert-manager должен выпустить сертификаты, и секрет ingress-tls, где они будут храниться.

Применяем обновленный манифест:

    

Через некоторое время cert-manager выпустит сертификаты и сохранит их в секрете ingress-tls. Проверить наличие сертификатов можно командой:

    

Если все прошло успешно, в секрете должны появиться tls.crt и tls.key.

Теперь можно проверить работу HTTPS:

    

Если запрос проходит без ошибок, значит, сертификаты успешно установлены, и сервисы работают по HTTPS.

Была ли статья полезна?
Ваша оценка очень важна