Service Serving Certificate
Содержание
ОбзорОсобенностиКонфигурация и развертывание (для администраторов)Предварительные требования1. Настройка RBAC-разрешений2. Создание сертификата3. Настройка политик KyvernoРуководство пользователя (для разработчиков)Обзор
Сертификаты обслуживания сервиса обеспечивают автоматическую генерацию и управление TLS-сертификатами для Services в платформе контейнерного облака. Эта возможность позволяет организовать защищённое HTTPS-соединение и зашифрованный трафик между внутренними компонентами, обеспечивая конфиденциальность данных и безопасность системы.
Особенности
Механизм автоматического предоставления сертификатов включает следующие ключевые возможности:
- Автоматическое предоставление без участия пользователя: разработчикам не нужно вручную создавать запросы на подпись сертификатов (CSR) или взаимодействовать с центрами сертификации. Выпуск сертификатов полностью автоматизирован с помощью стандартных аннотаций Kubernetes.
- Синхронизация CA между неймспейсами: устраняет необходимость вручную копировать корневой CA платформы в каждый бизнес-неймспейс. Корневой сертификат CA автоматически синхронизируется, позволяя сервисам легко проверять подлинность друг друга.
- Автоматическое управление жизненным циклом: с использованием
cert-managerсертификаты не только автоматически выдаются, но и своевременно обновляются до истечения срока действия, что минимизирует операционные затраты и предотвращает простои из-за просроченных сертификатов. - Стандартизированная безопасность: гарантирует, что TLS-сертификаты генерируются с использованием единого централизованного
ClusterIssuer, поддерживая единые стандарты безопасности для всех приложений на платформе.
Конфигурация и развертывание (для администраторов)
Для реализации вышеуказанных функций системным администраторам платформы необходимо заранее подготовить соответствующие политики допуска (ClusterPolicy) для Kyverno и необходимые RBAC-разрешения.
Предварительные требования
Перед началом убедитесь, что в вашем кластере установлен и включён плагин Alauda Container Platform Compliance with Kyverno. Подробности установки смотрите в разделе Install Compliance Plugin.
1. Настройка RBAC-разрешений
Для предоставления Kyverno прав на создание соответствующих ресурсов и вызов связанных интерфейсов, агрегируйте следующие разрешения для фонового контроллера платформы:
2. Создание сертификата
Создайте следующий ресурс Certificate, который будет выступать в роли корневого CA сервиса:
3. Настройка политик Kyverno
Создайте и примените следующие три основных ресурса ClusterPolicy:
- clone-ca-secret: отслеживает события создания Namespace и генерирует Secret
service-root-caдля новых неймспейсов. - sync-ca-rotation: отслеживает изменения в
service-root-ca, получает реальное содержимое сертификата CA через API и синхронизирует значениеca.crtв Secret целевого неймспейса. - generate-service-cert: отслеживает ресурсы Service с аннотацией
service.alauda.io/serving-cert-secret-nameи генерирует запрос на выпускCertificateс поддержкой wildcard-доменов на основе имени и неймспейса.
Сохраните следующий YAML в файл и выполните применение (kubectl apply -f):
Руководство пользователя (для разработчиков)
Для разработчиков приложений, как только политики кластера настроены, не нужно беспокоиться о логике выпуска сертификатов. Достаточно добавить специальную аннотацию при определении бизнес-ресурса Service для автоматического предоставления сертификата:
- Добавьте аннотацию в Service
В бизнес-неймспейсе (например, my-namespace) создайте или обновите Service, добавив аннотацию service.alauda.io/serving-cert-secret-name, чтобы указать имя создаваемого Secret с сертификатом. Например:
- Проверьте созданный Secret с сертификатом
После применения вышеуказанного Service:
- Проверьте наличие автоматически созданного TLS-секрета в неймспейсе:
- Проверьте, что корневой сертификат CA, используемый для проверки, также автоматически скопирован в текущий неймспейс:
- Монтирование и использование сертификата в Pod
Поскольку Secret с сертификатом CA (service-root-ca) и TLS-сертификат текущего приложения (my-secure-service-tls) уже присутствуют, вы можете смонтировать их как тома данных в рабочие нагрузки, например, в Deployment или StatefulSet вашего приложения.
Ниже приведён пример YAML для Deployment, демонстрирующий, как смонтировать эти сертификаты:
Для получения дополнительной информации о конфигурации рабочих нагрузок через веб-консоль смотрите раздел Configure Containers.