Терминировать TLS-соединения
Терминирование TLS-соединения для кластера Managed Kubernetes — это процесс расшифровки HTTPS-трафика и перенаправления его на поды Kubernetes в виде HTTP-трафика.
Терминирование TLS-соединения может использоваться:
- для защиты передачи данных между клиентом и сервисом в кластере;
- контроля доступа к сервисам в кластере и защиты от несанкционированного доступа;
- повышения производительности;
- упрощения управления сертификатами.
В кластере Managed Kubernetes процесс терминирования TLS-соединений можно настроить на балансировщике нагрузки. Терминирование TLS-соединения на балансировщике нагрузки доступно в кластерах с версией Kubernetes 1.25 и выше. Вы можете обновить версию кластера.
Сертификатами можно управлять через менеджер секретов — добавьте свой пользовательский сертификат или выпустите сертификат Let’s Encrypt®.
- Добавьте пользовательский сертификат или выпустите его в менеджере секретов.
- Создайте балансировщик нагрузки.
- Измените А-запись домена.
Добавить или выпустить сертификат
В менеджере секретов можно загрузить сертификат, который был выпущен в сторонних центрах сертификации, или выпустить сертификат Let’s Encrypt®.
Добавить сертификат
Выпустить сертификат Let’s Encrypt®
-
В панели управления перейдите в раздел Облачная платформа → Мен еджер секретов.
-
Нажмите Добавить сертификат.
-
Выберите Пользовательский сертификат.
-
Введите имя сертификата.
-
Вставьте основной сертификат для домена. Он должен начинаться с
-----BEGIN CERTIFICATE-----
и заканчиваться-----END CERTIFICATE-----
. -
Вставьте приватный ключ. Он должен начинаться с
-----BEGIN PRIVATE KEY-----
и заканчиваться-----END PRIVATE KEY-----
. -
Опционально: чтобы добавить промежуточный сертификат, отметьте чекбокс Добавить промежуточный сертификат и в поле Промежуточный сертификат вставьте сертификат. Он должен начинаться с
-----BEGIN CERTIFICATE-----
и заканчиваться-----END CERTIFICATE-----
.Если нужно добавить несколько промежуточных сертификатов, убедитесь, что все сертификаты (основной сертификат для домена, промежуточные и корневой) создают полную цепочку. Значение
Issuer
основного сертификата должно совпадать со значениемSubject
первого промежуточного сертификата, значениеIssuer
первого промежуточного сертификата — сSubject
второго промежуточного и так далее.Проме жуточные сертификаты можно добавить в поле Промежуточный сертификат в любом порядке, важно использовать полную цепочку.
-
Опционально: чтобы добавить корневой сертификат, отметьте чекбокс Добавить корневой сертификат и в поле Корневой сертификат вставьте сертификат. Он должен начинаться с
-----BEGIN CERTIFICATE-----
и заканчиваться-----END CERTIFICATE-----
. -
Нажмите Добавить.
-
Откройте страницу сертификата.
-
Скопируйте UUID сертификата.
Можно выпустить Let’s Encrypt® сертификат, который будет действовать:
- только для основного домена или для основного домена и всех его поддоменов (Wildcard-сертификат);
- только для поддомена. Сертификат не будет действовать для основного домена.
Для выпуска сертификата:
-
Создайте зону для домена или поддомена.
-
В панели управления перейдите в раздел Облачная платформа → Менеджер секретов.
-
Откройте вкладку Сертификаты.
-
Нажмите Добавить сертификат.
-
Выберите Сертификаты от Let’s Encrypt®.
-
Введите имя сертификата.
-
Выберите домен или поддомен, который вы делегировали в DNS-хостинг на шаге 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
Укажите:
<loadbalancer_name>
— имя балансировщика нагрузки;<certificate_uuid>
— универсальный уникальный идентификатор (UUID) сертификата, который вы скопировали в инструкции Добавить или выпустить сертификат;<application_name>
— имя приложения.
Созданный балансировщик нагрузки появится в панели управления в разделе Облачная платформа → Балансировщики → вкладка Балансировщики.
Изменить А-запись домена
Вы можете ускорить распространение изменений в ресурсной записи на кеширующие серверы. Для этого за несколько дней до планируемого изменения уменьшите TTL записи до минимально возможного значения. Затем в назначенное время измените ресурсную запись, а когда изменение распространится на кеширующие серверы, верните прежнее значение TTL.
- В панели управления перейдите в раздел DNS.
- Откройте страницу зоны.
- В меню группы A-записей выберите Редактировать.
- Измените IP-адрес на адрес балансировщика нагрузки. IP-адрес балансировщика нагрузки можно посмотреть в панели управления в разделе Облачная платформа → Балансировщики → вкладка Балансировщики → карточка балансировщика.
- Нажмите Сохранить.
- Подождите, пока ресурсная запись обновится на DNS-серверах. Время обновления может занимать от TTL записи до 72 часов. TTL ресурсной записи можно посмотреть в панели управления: раздел DNS → страница зоны → поле TTL.
- Опционально: проверьте ресурсную запись. Если спустя 72 часа ресурсная запись не обновилась, создайте тикет.
- Проверьте, что запросы поступают только на балансировщик нагрузки, а на сервере нет запросов от пользователей.