Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!

Используйте код при регистрации:

Skills
17.01.2025

Cert-Manager

Развертывание Cert-Manager на VPS AlexHost для обеспечения безопасности Kubernetes

Зачем использовать Cert-Manager на AlexHost? Cert-Manager автоматизирует управление сертификатами TLS в Kubernetes, обеспечивая безопасное и зашифрованное взаимодействие. VPS от AlexHost с NVMe-хранилищем, корневым доступом и защитой от DDoS обеспечивает высокопроизводительную и безопасную платформу для кластеров Kubernetes. В этом руководстве рассматриваются возможности Cert-Manager, его настройка и сценарии использования на AlexHost.

Что такое Cert-Manager?

Cert-Manager – это надстройка для Kubernetes с открытым исходным кодом, которая автоматизирует управление и обновление TLS-сертификатов. Оно легко интегрируется с Kubernetes для выпуска сертификатов для приложений, работающих в кластере, устраняя ручные процессы, обычно требуемые для получения и продления сертификатов. Cert-Manager может выпускать сертификаты из различных источников, включая Let’s Encrypt, HashiCorp Vault, Venafi и другие частные центры сертификации (CA). Он постоянно следит за истечением срока действия сертификатов и автоматически обновляет их при необходимости, обеспечивая безопасность ваших сервисов без ручного вмешательства

Ключевые особенности Cert-Manager

Cert-Manager предлагает несколько ключевых функций, которые делают его бесценным инструментом для пользователей Kubernetes

  1. Автоматический выпуск сертификатов: Cert-Manager автоматически генерирует TLS-сертификаты на основе ресурсов Kubernetes, таких как
    Ingress
    или
    Certificate
    пользовательских ресурсов. Это гарантирует, что все новые или обновленные службы в вашем кластере будут защищены действительными сертификатами.
  2. Обновление сертификатов: Cert-Manager отслеживает истечение срока действия выданных сертификатов и автоматически обновляет их до истечения срока действия, гарантируя, что ваши приложения всегда будут иметь действительные сертификаты и избегать простоев.
  3. Поддержка нескольких центров сертификации: Cert-Manager поддерживает различные центры сертификации, включая Let’s Encrypt для бесплатных публичных SSL-сертификатов, а также внутренние или частные центры сертификации, что дает вам возможность гибко выбирать способ выпуска сертификатов.
  4. Родной для Kubernetes: Cert-Manager интегрируется с Kubernetes. Он использует пользовательские определения ресурсов Kubernetes (CRD) для определения запросов на сертификаты и управляет сертификатами как ресурсами Kubernetes.
  5. Вызовы DNS-01 и HTTP-01: Cert-Manager поддерживает несколько типов вызовов ACME (например, DNS-01 и HTTP-01) для проверки владения доменом при использовании таких ЦС, как Let’s Encrypt. Эти методы автоматизируют процесс проверки, делая выпуск сертификатов беспроблемным.
  6. Дикие символы и многодоменные сертификаты: Cert-Manager может выпускать сертификаты с подстановочными знаками, которые полезны для защиты нескольких поддоменов одним сертификатом, а также обрабатывать сертификаты для нескольких доменов, что упрощает управление сложными приложениями.

Принцип работы Cert-Manager

Cert-Manager работает, взаимодействуя с ресурсами Kubernetes и внешними центрами сертификации для управления сертификатами на протяжении всего их жизненного цикла. Вот обзор этого процесса

  1. Запрос сертификата: Cert-Manager использует ресурс Kubernetes под названием Certificate или Ingress для запроса сертификата. Эти ресурсы содержат такие сведения, как доменные имена, на которые распространяется действие сертификата, срок действия сертификата и эмитент.
  2. Выдача сертификата: Cert-Manager взаимодействует с настроенным ресурсом Issuer или ClusterIssuer, чтобы запросить сертификат у центра сертификации. В качестве эмитента может выступать Let’s Encrypt, частный ЦС или другой поддерживаемый поставщик сертификатов.
  3. Проверка (ACME Challenges): При использовании центра сертификации ACME, такого как Let’s Encrypt, Cert-Manager будет решать задачу по подтверждению владения доменом. Это может быть вызов HTTP-01 (путем передачи маркера по HTTP) или DNS-01 (путем создания TXT-записи DNS). После проверки ЦС выдает сертификат.
  4. Хранение сертификата: Выпущенный сертификат хранится в Kubernetes Secret, на который затем могут ссылаться другие ресурсы Kubernetes (например, Ingress), чтобы включить TLS для ваших приложений.
  5. Мониторинг и продление: Cert-Manager постоянно следит за сертификатами и автоматически обновляет их до истечения срока действия, обеспечивая безопасность ваших сервисов без простоев.

Компоненты Cert-Manager

Cert-Manager состоит из нескольких основных компонентов, которые работают вместе для управления сертификатами в Kubernetes

  • Issuer/ClusterIssuer: эти ресурсы определяют, как и где Cert-Manager должен запрашивать сертификаты. Issuer привязан к пространству имен, а ClusterIssuer – к кластеру. Они предоставляют детали конфигурации для взаимодействия с нужным ЦС.
  • Сертификат: Ресурс Certificate определяет конкретный TLS-сертификат, который Cert-Manager должен запросить. Он включает в себя такие детали, как доменное имя (имена), срок действия и связанный с ним эмитент.
  • CertificateRequest: Cert-Manager использует ресурс CertificateRequest для отслеживания конкретного запроса на сертификат. Этот ресурс автоматически создается Cert-Manager при запросе нового сертификата.
  • Secret: После того как Cert-Manager получает сертификат от центра сертификации, он сохраняет сертификат и закрытый ключ в Kubernetes Secret. На этот секрет могут ссылаться приложения или ресурсы Ingress для включения TLS.

Общие сценарии использования Cert-Manager

Cert-Manager широко используется в средах Kubernetes для упрощения и автоматизации управления сертификатами. Вот некоторые общие случаи использования

1. Защита веб-приложений с помощью HTTPS

Одним из самых популярных вариантов использования Cert-Manager является защита веб-приложений по протоколу HTTPS с помощью Let’s Encrypt для выпуска SSL-сертификатов. Cert-Manager может автоматически выпускать и обновлять сертификаты для ресурсов Kubernetes Ingress, обеспечивая шифрование и безопасность веб-трафика

2. Автоматизация обновления сертификатов

Ручное управление обновлением сертификатов может отнимать много времени и быть чревато человеческими ошибками. Cert-Manager автоматизирует этот процесс, отслеживая даты истечения срока действия сертификатов и обновляя их до истечения срока действия, чтобы ваши службы не страдали от простоев из-за просроченных сертификатов

3. Управление внутренними сертификатами

Помимо публичных сертификатов, Cert-Manager может управлять сертификатами, выпущенными частными центрами сертификации для внутренних приложений. Например, в архитектуре микросервисов, где сервисы обмениваются данными внутри защищенной сети, Cert-Manager может выпускать и вращать сертификаты для внутренней связи между сервисами

4. Сертификаты с дикой картой

Для приложений, использующих несколько поддоменов (например, app.example.com, api.example.com), Cert-Manager может выпустить один сертификат с подстановочным знаком (например, *.example.com) для защиты всех поддоменов сразу, что упрощает управление сертификатами

Установка и настройка Cert-Manager

Установка Cert-Manager в кластере Kubernetes не представляет собой ничего сложного. Ниже описаны общие шаги по установке и настройке Cert-Manager

Шаг 1: Установите Cert-Manager

Вы можете установить Cert-Manager с помощью Helm или через статические YAML-манифесты. Вот метод установки с помощью Helm

kubectl apply --validate=false -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version vX.Y.Z
Замените vX.Y.Z на последнюю версию Cert-Manager

Шаг 2: Настройка эмитента или ClusterIssuer

Для выпуска сертификатов необходимо настроить Issuer или ClusterIssuer. Например, чтобы настроить эмитента для Let’s Encrypt, вы можете создать конфигурацию YAML следующим образом

apiVersion:cert-manager.io/v1
kind: ClusterIssuer
metadata:name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: your-email@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx

Шаг 3: Запрос сертификата

После настройки эмитента вы можете создать ресурс Certificate, чтобы запросить TLS-сертификат для вашего приложения

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: example-tls
namespace: default
spec:
secretName: example-tls-secret
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
commonName: example.com
dnsNames:
- example.com
- www.example.com

Заключение: Защитите свой кластер Kubernetes с помощью Cert-Manager на VPS AlexHost

Cert-Manager автоматизирует управление сертификатами TLS, обеспечивая безопасность приложений Kubernetes с минимальными усилиями. Разверните его на VPS от AlexHost для быстрого выпуска сертификатов с использованием NVMe и поддержкой корневого доступа.

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!

Используйте код при регистрации:

Skills