Технологии

Настройка Удостоверяющего центра на базе HashiCorp Vault и OpenSSL для автоматизации выдачи сертификатов в Kubernetes

Краткое резюме

В статье описывается настройка Удостоверяющего Центра на базе HashiCorp Vault и OpenSSL в Kubernetes. Процесс включает развёртывание Vault, генерацию корневого и промежуточного сертификатов, интеграцию с cert-manager для автоматизации управления TLS-сертификатами.

**Цель**: автоматизация процесса получения сертификатов от Certificate Authority с самоподписанным сертификатом с помощью Vault и cert-manager в Kubernetes. **Краткое описание**: В данном руководстве представлено подробное объяснение того, как развернуть кластер HashiCorp Vault в Kubernetes, который будет устойчив к отказам, и настроить двухуровневую инфраструктуру открытых ключей (PKI). Корневой сертификат и промежуточный центр сертификации (CA) создаются с помощью OpenSSL, при этом промежуточный CA импортируется и настраивается в Vault для регулярного выпуска сертификатов. Интеграция с cert-manager позволяет автоматически управлять жизненным циклом TLS-сертификатов. **План действий**: 1. **Развёртывание Vault в Kubernetes**: установка отказоустойчивого кластера Vault с использованием Helm-чарта и встроенного хранилища Raft, а также активация Ingress непосредственно в чарте. 2. **Генерация корневого и промежуточного сертификатов с помощью OpenSSL**: создание корневого сертификата apatsev.corp и промежуточного CAintermediate.apatsev.corp. 3. **Импорт промежуточного сертификата в Vault**: настройка PKI-движка в Vault для работы с промежуточным CA. 4. **Интеграция с cert-manager**: установка и настройка cert-manager для автоматизации выпуска и обновления сертификатов. 5. **Настройка Ingress для Vault через Helm**: активация и конфигурация Ingress в Helm-чарте Vault для обеспечения безопасного доступа и автоматического создания TLS-сертификата. 6. **Создание ролей и выпуск сертификатов для приложений**: демонстрация процесса создания ролей для различных сервисов и автоматического выпуска сертификатов для них. **Пояснения для начинающих DevOps**: Перед началом работы важно понимать несколько ключевых концепций: * **PKI (Public Key Infrastructure)** — это комплекс технологий для выпуска и управления цифровыми сертификатами. Вместо одного сертификата используется цепочка доверия: корневой CA — промежуточный CA — сертификат приложения. Это повышает безопасность, так как корневой ключ хранится в сейфе и используется редко, а промежуточный — для повседневных задач. * **HashiCorp Vault** — это не только хранилище секретов, но и мощная система управления секретами и шифрования. Его PKI-движок может выступать в роли полноценного Удостоверяющего Центра. * **cert-manager** — это оператор для Kubernetes, который автоматически запрашивает и продлевает TLS-сертификаты у различных провайдеров (в нашем случае — Vault), упрощая тем самым процесс управления сертификатами. * **Ingress в Kubernetes** — это объект, который управляет внешним доступом к услугам внутри кластера, обычно через HTTP/HTTPS. В данной статье весь TLS-трафик расшифровывается на уровне Ingress, а до Vault доходит уже незашифрованный HTTP-трафик, что упрощает его конфигурацию. **Предварительные условия**: * Рабочий кластер Kubernetes. * Установленные утилиты командной строки: kubectl, helm, openssl, jq, vault. * Настроенный доступ kubectl к целевому кластеру. * Установленный и настроенный Ingress-контроллер (например, nginx-ingress).

Фильтры и сортировка