---
title: 'Терминировать TLS-соединения в кластере Managed Kubernetes для Envoy Gateway'
sidebar_label: 'Терминировать TLS-соединения'
description: 'Как настроить терминирование TLS-соединений'
sidebar_position: 4
---

import Formbricks from '@theme/MDXComponents/Formbricks';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import MoreVerticalIcon from '@selectel/docux/icons/more-vertical';
import { TabItemLabel } from '@selectel/docux/components';

# Терминировать TLS-соединения в кластере Managed Kubernetes для Envoy Gateway

Терминирование TLS-соединения для кластера Managed Kubernetes — это процесс расшифровки HTTPS-трафика и перенаправления его на поды Kubernetes в виде HTTP-трафика.

Терминирование TLS-соединения может использоваться:

* для защиты передачи данных между клиентом и сервисом в кластере;
* контроля доступа к сервисам в кластере и защиты от несанкционированного доступа;
* повышения производительности;
* упрощения управления сертификатами.

В кластере Managed Kubernetes процесс терминирования TLS-соединений можно настроить на балансировщике нагрузки.
Терминирование TLS-соединения на балансировщике нагрузки доступно в кластерах с версией Kubernetes 1.25 и выше.
Вы можете [обновить версию кластера](/managed-kubernetes/clusters/upgrade-version.mdx).

Сертификатами можно управлять через [менеджер сертификатов](/certificates-manager/about-certificates-manager.mdx) — [добавьте свой пользовательский сертификат или выпустите сертификат Let’s Encrypt®](#add-or-issue-certificate).

1. [Добавьте пользовательский сертификат или выпустите его](#add-or-issue-certificate) в менеджере секретов.
2. [Создайте балансировщик нагрузки](#create-load-balancer).
3. [Измените А-запись домена](#edit-domain-a-record).

## 1. Добавить или выпустить сертификат \{#add-or-issue-certificate}

В менеджере сертификатов можно загрузить сертификат, который был выпущен в сторонних центрах сертификации, или выпустить сертификат Let’s Encrypt®.

<Tabs queryString="add-or-issue-certificate">
  <TabItem value="add-certificate" default>
    <TabItemLabel>
      Добавить сертификат
    </TabItemLabel>

    1. Пользовательский сертификат действует только в том [проекте](/access-control/projects/about-projects.mdx), в который он был добавлен. Убедитесь, что вы находитесь в нужном проекте. Для этого откройте меню проектов (название текущего проекта) и выберите проект.

    2. В [панели управления](https://my.selectel.ru/certificates/) в верхнем меню нажмите **Продукты** и выберите **Менеджер сертификатов**.

    3. В разделе **Сертификаты** нажмите **Добавить сертификат**.

    4. Выберите **Пользовательский сертификат**.

    5. Введите имя сертификата.

    6. Вставьте основной сертификат для домена. Он должен начинаться с `-----BEGIN CERTIFICATE-----` и заканчиваться `-----END CERTIFICATE-----`.

    7. Вставьте приватный ключ. Он должен начинаться с `-----BEGIN PRIVATE KEY-----` и заканчиваться `-----END PRIVATE KEY-----`.

    8. Опционально: чтобы добавить промежуточный сертификат:

       8.1. Отметьте чекбокс **Добавить промежуточный сертификат**.

       8.2. В поле **Промежуточный сертификат** вставьте сертификат. Он должен начинаться с `-----BEGIN CERTIFICATE-----` и заканчиваться `-----END CERTIFICATE-----`.

       Если нужно добавить несколько промежуточных сертификатов, убедитесь, что все сертификаты (основной сертификат для домена, промежуточные и корневой) создают полную цепочку. Значение `Issuer` основного сертификата должно совпадать со значением `Subject` первого промежуточного сертификата, значение `Issuer` первого промежуточного сертификата — с `Subject` второго промежуточного и так далее.

       Промежуточные сертификаты можно добавить в поле **Промежуточный сертификат** в любом порядке. Важно использовать полную цепочку.

    9. Опционально: чтобы добавить корневой сертификат:

       9.1. Отметьте чекбокс **Добавить корневой сертификат**.

       9.2. В поле **Корневой сертификат** вставьте сертификат. Он должен начинаться с `-----BEGIN CERTIFICATE-----` и заканчиваться `-----END CERTIFICATE-----`.

    10. Нажмите **Добавить**.

    11. Откройте страницу сертификата.

    12. Скопируйте UUID сертификата.
  </TabItem>

  <TabItem value="issue-certificate">
    <TabItemLabel>
      Выпустить сертификат Let’s Encrypt®
    </TabItemLabel>

    Можно выпустить Let’s Encrypt® сертификат, который будет действовать:

    * только для основного домена или для основного домена и всех его поддоменов (Wildcard-сертификат);
    * только для поддомена. Сертификат не будет действовать для основного домена.

    Для выпуска сертификата:

    <Tabs queryString="issue-lets-encrypt-certificate">
      <TabItem value="for-domain-and-subdomain" default>
        <TabItemLabel>
          Для основного домена и поддоменов
        </TabItemLabel>

        1. [Создайте зону](/dns-hosting/zones/create-zone.mdx) для домена в DNS-хостинге.

        2. [Делегируйте домен](/dns-hosting/zones/delegate-zone.mdx).

        3. В [панели управления](https://my.selectel.ru/certificates/) в верхнем меню нажмите **Продукты** и выберите **Менеджер сертификатов**.

        4. В разделе **Сертификаты** нажмите **Добавить сертификат**.

        5. Выберите **Сертификаты от Let’s Encrypt®**.

        6. Введите имя сертификата.

        7. Выберите домен, который вы делегировали в DNS-хостинг на шаге 2.

        8. Опционально: чтобы добавить в сертификат для основного домена поддомен, нажмите **Добавить дополнительный домен**.

           Введите имя поддомена. Чтобы выпустить Wildcard-сертификат, введите поддомен вида `*.example.com`

        9. Нажмите **Выпустить сертификат**.

        10. Откройте страницу сертификата.

        11. Скопируйте UUID сертификата.

        12. В блоке **Файлы сертификата** выберите сертификат, цепочку промежуточных сертификатов, корневой сертификат и приватный ключ.

        13. Нажмите **Скачать**.

        14. Установите файлы на стороне вашего сервиса.
      </TabItem>

      <TabItem value="only-for-subdomain">
        <TabItemLabel>
          Только для поддомена
        </TabItemLabel>

        1. [Создайте зону](/dns-hosting/zones/create-zone.mdx) для поддомена в DNS-хостинге.

        2. [Делегируйте поддомен](/dns-hosting/zones/delegate-zone.mdx).

        3. В [панели управления](https://my.selectel.ru/certificates/) в верхнем меню нажмите **Продукты** и выберите **Менеджер сертификатов**.

        4. В разделе **Сертификаты** нажмите **Добавить сертификат**.

        5. Выберите **Сертификаты от Let’s Encrypt®**.

        6. Введите имя сертификата.

        7. Выберите поддомен, который вы делегировали в DNS-хостинг на шаге 2.

        8. Нажмите **Выпустить сертификат**.

        9. Откройте страницу сертификата.

        10. Скопируйте UUID сертификата.

        11. В блоке **Файлы сертификата** выберите сертификат, цепочку промежуточных сертификатов, корневой сертификат и приватный ключ.

        12. Нажмите **Скачать**.

        13. Установите файлы на стороне вашего сервиса.
      </TabItem>
    </Tabs>
  </TabItem>
</Tabs>

## 2. Создать балансировщик нагрузки \{#create-load-balancer}

Используйте подраздел [Создать балансировщик нагрузки](/managed-kubernetes/networks/loadbalancing-with-envoy-gateway/load-balancers-for-envoy-gateway.mdx#create-load-balancer) инструкции [Создать и настроить балансировщик нагрузки в кластере Managed Kubernetes для Envoy Gateway](/managed-kubernetes/networks/loadbalancing-with-envoy-gateway/load-balancers-for-envoy-gateway.mdx).

В манифест объекта Gateway в блок `annotations` добавьте аннотацию:

```yaml
loadbalancer.openstack.org/default-tls-container-ref: "<certificate_uuid>"
```

Укажите `<certificate_uuid>` — универсальный уникальный идентификатор (UUID) сертификата, который вы скопировали в инструкции [Добавить или выпустить сертификат](#add-or-issue-certificate).

Созданный балансировщик нагрузки появится в [панели управления](https://my.selectel.ru/vpc/default/lbaas/load-balancers/): в верхнем меню нажмите **Продукты** и выберите **Облачные серверы** → раздел **Балансировщики** → вкладка **Балансировщики**.

## 3. Изменить А-запись домена \{#edit-domain-a-record}

Вы можете ускорить распространение изменений в ресурсной записи на кэширующие серверы.
Для этого за несколько дней до планируемого изменения уменьшите TTL записи до минимально возможного значения.
Затем в назначенное время измените ресурсную запись, а когда изменение распространится на кэширующие серверы, верните прежнее значение TTL.

1. В [панели управления](https://my.selectel.ru/dns/default/hosting) в верхнем меню нажмите **Продукты** и выберите **DNS-хостинг**.
2. В разделе **Доменные зоны** откройте страницу зоны.
3. В меню <MoreVerticalIcon /> группы A-записей выберите **Редактировать**.
4. Измените IP-адрес на адрес балансировщика нагрузки.
   IP-адрес балансировщика нагрузки можно посмотреть в [панели управления](https://my.selectel.ru/vpc/default/lbaas/load-balancers/): в верхнем меню нажмите **Продукты** и выберите **Облачные серверы** → **Балансировщики** → вкладка **Балансировщики** → карточка балансировщика.
5. Нажмите **Сохранить**.
6. Подождите, пока ресурсная запись обновится на DNS-серверах.
   Обновление может занимать от TTL группы записей до 72 часов.
   TTL группы записей можно посмотреть в [панели управления](https://my.selectel.ru/dns/default/hosting): в верхнем меню нажмите **Продукты** → **DNS-хостинг** → **Доменные зоны** → страница зоны → строка записи → поле **TTL**.
7. Опционально: [проверьте ресурсную запись](/dns-hosting/records/check-records.mdx).
   Если спустя 72 часа ресурсная запись не обновилась, [создайте тикет](https://my.selectel.ru/tickets/create).
8. Проверьте, что запросы поступают только на балансировщик нагрузки, а на сервере нет запросов от пользователей.

<Formbricks />
