Терминировать TLS-соединения
Терминирование TLS-соединения для кластера Managed Kubernetes — это процесс расшифровки HTTPS-трафика и перенаправления его на поды Kubernetes в виде HTTP-трафика.
Терминирование TLS-соединения может использоваться:
- для защиты передачи данных между клиентом и сервисом в кластере;
- контроля доступа к сервисам в кластере и защиты от несанкционированного доступа;
- повышения производительности;
- упрощения управления сертификатами.
В кластере Managed Kubernetes процесс терминирования TLS-соединений можно настроить на балансировщике нагрузки.
Сертификатами можно управлять через менеджер секретов — добавьте свой пользовательский сертификат или выпустите сертификат Let’s Encrypt®.
Терминирование TLS-соединения на балансировщике нагрузки доступно, если вы используете версии Kubernetes 1.25 и выше. Вы можете обновить версию кластера.
- Добавьте пользовательский сертификат или выпустите его в менеджере секретов.
- Создайте балансировщик нагрузки.
- Измените А-запись домена.
Добавить или выпустить сертификат
В менеджере секретов можно загрузить сертификат, который был выпущен в сторонних центрах сертификации, или выпустить сертификат Let’s Encrypt®.
- Добавить сертификат
- Выпустить сертификат Let’s Encrypt®
- В панели управления перейдите в раздел Облачная платформа → Менеджер секретов.
- Нажмите Добавить сертификат.
- Нажмите Пользовательский сертификат.
- Введите имя сертификата.
- Вставьте сертификат. Он должен начинаться с
-----BEGIN CERTIFICATE-----
и заканчиваться-----END CERTIFICATE-----
- Вставьте приватный ключ. Он должен начинаться с
-----BEGIN PRIVATE KEY-----
и заканчиваться-----END PRIVATE KEY-----
- Опционально: добавьте промежуточный сертификат — он связывает SSL-сертификат с корневым центром сертификации. С его помощью браузер убеждается в подлинности выпущенного SSL-сертификата. Если не добавить промежуточный сертификат, то клиент, который подключается по TLS, может посчитать соединение небезопасным.
- Опционально: добавьте корневой сертификат — это часть ключа, которым центры сертификации подписывают SSL-сертификат. Он может потребоваться при использовании самоподписанных сертификатов.
- Нажмите Добавить.
- Откройте страницу сертификата.
- Скопируйте универсальный уникальный идентификатор (UUID) сертификата.
В сертификат Let’s Encrypt® для основного домена можно добавить любые его поддомены или выпустить Wildcard-сертификат, который будет действовать для всех поддоменов сразу.
Можно выпустить сертификат, который будет действовать только для поддомена.
Если нужно выпустить сертификат для основного домена и его поддоменов или только для основного, то добавьте и делегируйте домен с помощью услуги DNS-хостинг.
Если нужно выпустить сертификат только для поддомена, но не выпускать для основного, добавьте и делегируйте поддомен.
В панели управления перейдите в раздел Облачная платформа → Менеджер секретов.
Откройте вкладку Сертификаты.
Нажмите Добавить сертификат.
Выберите Сертификаты от Let’s Encrypt®.
Введите имя сертификата.
Выберите домен, для которого будет выпущен сертификат:
- если сертификат нужно выпустить для основного домена и его поддоменов или только для основного, то выберите домен, который вы добавили в DNS-хостинг Selectel на шаге 1;
- если сертификат нужен только для поддомена, то выберите поддомен, который вы добавили на шаге 2.
Опционально: чтобы добавить в сертификат для основного домена поддомен, нажмите Добавить дополнительный домен.
Введите имя поддомена. Чтобы выпустить Wildcard-сертификат, введите поддомен вида
*.<example.com>
Нажмите Выпустить сертификат.
Откройте страницу сертификата.
Скопируйте универсальный уникальный идентификатор (UUID) сертификата.
В блоке Файлы сертификата выберите сертификат, цепочку промежуточных сертификатов, корневой сертификат и приватный ключ.
Нажмите Скачать.
Установите его на стороне вашего сервиса.
Создать балансировщик нагрузки
Создайте манифест с Service типа LoadBalancer:
apiVersion: v1
kind: Service
metadata:
name: <loadbalancer_name>
annotations:
loadbalancer.openstack.org/default-tls-container-ref: "https://api.<pool>.selvpc.ru/key-manager/v1/containers/<certificate_uuid>"
spec:
type: LoadBalancer
selector:
app: <application_name>
ports:
- port: 443
protocol: TCP
targetPort: 80
name: https
Укажите:
<loadbalanacer_name>
— имя балансировщика нагрузки;<pool>
— пул, в котором развернут кластер;<certificate_uuid>
— универсальный уникальный идентификатор (UUID) сертификата, который вы скопировали в инструкции Добавить или выпустить сертификат;<application_name>
— имя приложения.
Созданный балансировщик нагрузки появится в панели управления в разделе Облачная платформа → Балансировщики.
Изменить А-запись домена
- В панели управления перейдите в раздел Сетевые сервисы → DNS-хостинг.
- Откройте страницу домена → вкладка DNS-записи.
- В меню ( ) A-записи выберите Редактировать запись.
- Уменьшите TTL A-записи. Например, до 300.
- Подождите, пока пройдет время, равное старому TTL записи.
- Снова отредактируйте A-запись — измените IP-адрес на адрес балансировщика нагрузки. IP-адрес балансировщика нагрузки можно посмотреть в панели управления в разделе Облачная платформа → Балансировщики.
- Подождите, пока пройдет время, указанное в пункте 4.
- Проверьте, что запросы поступают только на балансировщик нагрузки, а на сервере нет запросов от пользователей.
- Отредактируйте A-запись — увеличьте TTL. Например, до 86400.