Терминировать TLS-соединения
Терминирование TLS-соединения для кластера Managed Kubernetes — это процесс расшифровки HTTPS-трафика и перенаправления его на поды Kubernetes в виде HTTP-трафика.
Терминирование TLS-соединения может использоваться:
- для защиты передачи данных между клиентом и сервисом в кластере;
- контроля доступа к сервисам в кластере и защиты от несанкционированного доступа;
- повышения производительности;
- упрощения управления сертификатами.
В кластере Managed Kubernetes процесс терминирования TLS-соединений можно настроить на балансировщике нагрузки.
Сертификатами можно управлять через менеджер секретов — добавьте свой пользовательский сертификат или выпустите сертификат Let’s Encrypt®.
Терминирование TLS-соединения на балансировщике нагрузки доступно, если вы используете версии Kubernetes 1.25 и выше. Вы можете обновить версию кластера.
- Добавьте пользовательский сертификат или выпустите его в менеджере секретов.
- Создайте балансировщик нагрузки.
- Измените А-запись домена.
Добавить или выпустить сертификат
В менеджере секретов можно загрузить сертификат, который был выпущен в сторонних центрах сертификации, или выпустить сертификат Let’s Encrypt®. Выпустить сертификат Let’s Encrypt® можно только для домена, который перенесен в устаревшую версию DNS-хостинга (legacy). Для доменов, добавленных в новую версию DNS-хостинга (actual), сертификат выпустить нельзя.
- Добавить сертификат
- Выпустить сертификат Let’s Encrypt®
В панели управления перейдите в раздел Облачная платформа → Менеджер секретов.
Нажмите Добавить сертификат.
Нажмите Пользовательский сертификат.
Введите имя сертификата.
Вставьте сертификат. Он должен начинаться с
-----BEGIN CERTIFICATE-----
и заканчиваться-----END CERTIFICATE-----
Вставьте приватный ключ. Он должен начинаться с
-----BEGIN PRIVATE KEY-----
и заканчиваться-----END PRIVATE KEY-----
Опционально: чтобы добавить промежуточный сертификат, отметьте чекбокс Добавить промежуточный сертификат и вставьте сертификат.
Промежуточный сертификат связывает конечный TLS-сертификат с корневым центром сертификации, с его помощью браузер убеждается в подлинности выпущенного TLS-сертификата. Если не добавить промежуточный сертификат, то клиент, который подключается по TLS, может посчитать соединение небезопасным.
Опционально: чтобы добавить корневой сертификат, отметьте чекбокс Добавить корневой сертификат и вставьте сертификат.
Корневой сертификат — это часть ключа, которым центры сертификации подписывают TLS-сертификат. Он может потребоваться при использовании самоподписанных сертификатов.
Нажмите Добавить.
Откройте страницу сертификата.
Скопируйте универсальный уникальный идентификатор (UUID) сертификата.
В сертификат Let’s Encrypt® для основного домена можно добавить любые его поддомены или выпустить Wildcard-сертификат, который будет действовать для всех поддоменов сразу.
Можно выпустить сертификат, который будет действовать только для поддомена.
Если нужно выпустить сертификат для основного домена и его поддоменов или только для основного, в панели управления добавьте домен в DNS-хостинг (legacy). После добавления делегируйте домен, для этого у своего доменного регистратора в NS-записях домена укажите NS-серверы Selectel:
ns1.selectel.ru
,ns2.selectel.ru
,ns3.selectel.ru
,ns4.selectel.ru
.Если нужно выпустить сертификат только для поддомена, но не выпускать для основного, в панели управления добавьте поддомен в DNS-хостинг (legacy). После добавления делегируйте домен, для этого у своего доменного регистратора в NS-записях домена укажите NS-серверы Selectel:
ns1.selectel.ru
,ns2.selectel.ru
,ns3.selectel.ru
,ns4.selectel.ru
.В панели управления перейдите в раздел Облачная платформа → Менеджер секретов.
Откройте вкладку Сертификаты.
Нажмите Добавить сертификат.
Выберите Сертификаты от 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: "<certificate_uuid>"
spec:
type: LoadBalancer
selector:
app: <application_name>
ports:
- port: 443
protocol: TCP
targetPort: 80
name: https
Укажите:
<loadbalanacer_name>
— имя балансировщика нагрузки;<certificate_uuid>
— универсальный уникальный идентификатор (UUID) сертификата, который вы скопировали в инструкции Добавить или выпустить сертификат;<application_name>
— имя приложения.
Созданный балансировщик нагрузки появится в панели управления в разделе Облачная платформа → Балансировщики.
Изменить А-запись домена
Вы можете ускорить распространение изменений в ресурсной записи на кеширующие серверы. Для этого за несколько дней до планируемого изменения уменьшите TTL записи до минимально возможного значения. Затем в назначенное время измените ресурсную запись, а когда изменение распространится на кеширующие серверы, верните прежнее значение TTL.
- В панели управления перейдите в раздел Сетевые сервисы → DNS-хостинг.
- Откройте страницу домена.
- В меню ( ) A-записи выберите Редактировать.
- Измените IP-адрес на адрес балансировщика нагрузки. IP-адрес балансировщика нагрузки можно посмотреть в панели управления в разделе Облачная платформа → Балансировщики.
- Нажмите Сохранить.
- Подождите, пока ресурсная запись обновится на DNS-серверах. Обновление может занимать от TTL записи до 72 часов. TTL ресурсной записи можно посмотреть в панели управления: раздел Сетевые сервисы → DNS-хостинг → страница домена → разверните строку записи.
- Опционально: проверьте ресурсную запись. Если спустя 72 часа ресурсная запись не обновилась, создайте тикет.
- Проверьте, что запросы поступают только на балансировщик нагрузки, а на сервере нет запросов от пользователей.