---
title: 'Терминировать TLS-соединения в кластере Managed Kubernetes для Ingress'
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 для Ingress

Терминирование 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. В [панели управления](https://my.selectel.ru/certificates/) в верхнем меню нажмите **Продукты** и выберите **Менеджер сертификатов**.

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

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

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

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

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

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

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

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

    8. Опционально: чтобы добавить корневой сертификат, отметьте чекбокс **Добавить корневой сертификат** и в поле **Корневой сертификат** вставьте сертификат. Он должен начинаться с `-----BEGIN CERTIFICATE-----` и заканчиваться `-----END CERTIFICATE-----`.

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

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

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

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

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

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

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

    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>
</Tabs>

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

Создайте манифест с [Service](https://kubernetes.io/docs/concepts/services-networking/service/) типа LoadBalancer:

```yaml
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) сертификата, который вы скопировали в инструкции [Добавить или выпустить сертификат](#add-or-issue-certificate);
* `<application_name>` — имя приложения.

Созданный балансировщик нагрузки появится в [панели управления](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 />
