---
title: 'Ingress и Ingress Controller'
sidebar_label: 'Ingress и Ingress Controller'
sidebar_position: 1
description: 'Что такое Ingress и Ingress Controller, как установить Ingress Controller и создать Ingress'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'

# Ingress и Ingress Controller

[Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) — объект Kubernetes, который определяет правила маршрутизации внешнего трафика, балансировки нагрузки и SSL-терминации. [Ingress Controller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) представляет собой прокси-сервер в кластере Managed Kubernetes и маршрутизирует трафик на основе правил, которые определены в Ingress.

В Managed Kubernetes Ingress Controller не предустанавливается в кластер, его необходимо установить самостоятельно. Выбор контроллера зависит от требований приложений, размещенных в кластере Managed Kubernetes. Cписок возможных контроллеров можно посмотреть в инструкции [Ingress Controllers](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/#additional-controllers) документации Kubernetes. Например, можно [установить Ingress Controller Traefik](#install-ingress-controller).

После установки Ingress Controller [создайте Ingress](#create-ingress).

![](https://423.selcdn.ru/kb/mks-set-up-ingress-LANG-THEME.png)

## Установить Ingress Controller Traefik \{#install-ingress-controller}

Вместе с Ingress Controller будет автоматически создан балансировщик нагрузки с параметрами:

* IP-адрес — публичный;
* [тип](/cloud-servers/load-balancers/about-load-balancers.mdx#balancer-types) — Базовый с резервированием;
* протокол — TCP.

Вы можете выбрать тип балансировщика нагрузки и настроить для него другие параметры — подробнее о параметрах балансировщика нагрузки в инструкции [Настроить балансировщик нагрузки](/managed-kubernetes/networks/loadbalancing-with-ingress/load-balancers.mdx).

Балансировщик будет входной точкой для доступа к приложениям в кластере, поэтому дополнительно создавать внутренний балансировщик нагрузки не нужно.

<Tabs queryString="install-ingress-controller">
  <TabItem value="without-configuring-loadbalancer" default>
    <TabItemLabel>
      Без настройки балансировщика нагрузки
    </TabItemLabel>

    1. Убедитесь, что в пуле выделена [квота](/access-control/projects/quotas.mdx) минимум на один публичный плавающий IP-адрес.

    2. [Подключитесь к кластеру](/managed-kubernetes/clusters/connect-to-cluster.mdx).

    3. Установите менеджер пакетов [Helm](https://helm.sh/docs/intro/install/).

    4. Добавьте репозиторий `traefik` в Helm:

       ```bash
       helm repo add traefik https://traefik.github.io/charts
       ```

    5. Обновите список репозиториев:

       ```bash
       helm repo update
       ```

    6. Установите Ingress Controller:

       ```bash
       helm install traefik traefik/traefik
       ```

    7. Убедитесь, что Ingress Controller установлен:

       ```bash
       kubectl get pods
       ```

       В ответе появится информация об Ingress Controller. Например:

       ```bash
       NAME                       READY   STATUS    RESTARTS   AGE
       traefik-78d5c6f95b-2xk9p   1/1     Running   0          51s
       ```

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

  <TabItem value="with-configuring-loadbalancer">
    <TabItemLabel>
      С настройкой балансировщика нагрузки
    </TabItemLabel>

    1. Убедитесь, что в пуле выделена [квота](/access-control/projects/quotas.mdx) минимум на один публичный плавающий IP-адрес.

    2. [Подключитесь к кластеру](/managed-kubernetes/clusters/connect-to-cluster.mdx).

    3. Установите менеджер пакетов [Helm](https://helm.sh/docs/intro/install/).

    4. Добавьте репозиторий `traefik` в Helm:

       ```bash
       helm repo add traefik https://traefik.github.io/charts
       ```

    5. Получите значения по умолчанию для Helm-чарта `traefik/traefik` и сохраните их в файл `values.yaml`:

       ```bash
       helm inspect values traefik/traefik > values.yaml
       ```

    6. В блок `annotations` файла `values.yaml` добавьте необходимые параметры для балансировщика — подробнее о параметрах балансировщика нагрузки в инструкции [Настроить балансировщик нагрузки](/managed-kubernetes/networks/loadbalancing-with-ingress/load-balancers.mdx).

       Например, если балансировщику нагрузки необходимо выделить приватный IP-адрес вместо публичного IP-адреса, который назначается по умолчанию, добавьте аннотацию `service.beta.kubernetes.io/openstack-internal-load-balancer: "true"`.

       Фрагмент манифеста с блоком `annotations`:

       ```yaml
       apiVersion: v1
       kind: Service
       metadata:
         annotations:
           meta.helm.sh/release-name: traefik
           meta.helm.sh/release-namespace: default
           service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
       ```

    7. Сохраните изменения.

    8. Установите Ingress Controller Traefik:

       ```bash
       helm install traefik traefik/traefik --generate-name -f values.yaml
       ```

    9. Убедитесь, что Ingress Controller установлен:

       ```bash
       kubectl get pods
       ```

       В ответе появится информация об Ingress Controller. Например:

       ```bash
       NAME                       READY   STATUS    RESTARTS   AGE
       traefik-78d5c6f95b-2xk9p   1/1     Running   0          51s
       ```

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

## Создать объект Ingress \{#create-ingress}

1. [Подключитесь к кластеру](/managed-kubernetes/clusters/connect-to-cluster.mdx).

2. Создайте YAML-файл с манифестом для объекта Ingress.

   Пример манифеста:

   ```yaml
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: example-ingress
   spec:
     ingressClassName: traefik
     rules:
     - http:
         paths:
         - path: /
           pathType: Prefix
           backend:
             service:
               name: hello-nginx
               port:
                 number: 80 
   ```

3. Примените манифест:

   ```bash
   kubectl apply -f <file_name>
   ```

   Укажите `<file_name>` — имя YAML-файла с манифестом для создания Ingress. Например, `ingress.yaml`.

<Formbricks />
