Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все инструкции
    • Подключение к узлу по SSH
    • Подключение к узлу через OS Login
    • Обновление Kubernetes
    • Настройка автомасштабирования
      • Обеспечение доступа к приложению, запущенному в кластере Kubernetes
      • Настройка контроллера сетевых политик Calico
      • Настройка контроллера сетевых политик Cilium
      • Настройка NodeLocal DNS для контроллера сетевых политик Cilium
      • Создание сетевого балансировщика с помощью Ingress-контроллера NGINX
    • Подключение внешних узлов к кластеру
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Перед началом работы
  • Внешний сетевой балансировщик
  • Внутренний сетевой балансировщик
  • Проверьте результат
  • Проброс портов
  1. Пошаговые инструкции
  2. Сетевые сценарии
  3. Создание сетевого балансировщика с помощью Ingress-контроллера NGINX

Создание сетевого балансировщика с помощью Ingress-контроллера NGINX

Статья создана
Yandex Cloud
Обновлена 13 марта 2025 г.
  • Перед началом работы
  • Внешний сетевой балансировщик
  • Внутренний сетевой балансировщик
  • Проверьте результат
  • Проброс портов

При установке Ingress-контроллера NGINX вы можете создать внешний или внутренний сетевой балансировщик нагрузки, а также настроить проброс портов.

Перед началом работыПеред началом работы

  1. Создайте сервисный аккаунт с ролями k8s.clusters.agent, vpc.publicAdmin, container-registry.images.puller и load-balancer.admin на каталог. Роль load-balancer.admin нужна для создания сетевого балансировщика нагрузки.

  2. Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.

    Важно

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

  3. Создайте кластер Managed Service for Kubernetes. В настройках кластера укажите сервисный аккаунт и группы безопасности, созданные ранее.

  4. Установите менеджер пакетов Helm версии не ниже 3.8.0.

  5. Установите kubectl и настройте его на работу с созданным кластером.

  6. Настройте Helm для работы с репозиторием NGINX:

    1. Добавьте в Helm репозиторий для NGINX:

      helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
      

      Результат:

      "ingress-nginx" has been added to your repositories
      
    2. Обновите набор данных для создания экземпляра приложения в кластере Managed Service for Kubernetes:

      helm repo update
      

      Результат:

      Hang tight while we grab the latest from your chart repositories...
      ...Successfully got an update from the "ingress-nginx" chart repository
      Update Complete. ⎈Happy Helming!⎈
      

    Совет

    Ingress-контроллер NGINX можно также установить с помощью Yandex Cloud Marketplace.

Внешний сетевой балансировщикВнешний сетевой балансировщик

Для создания сетевого балансировщика у сервисного аккаунта, привязанного к кластеру Managed Service for Kubernetes, должна быть роль load-balancer.admin.

Внешний сетевой балансировщик создается при установке Ingress-контроллера NGINX в стандартной конфигурации:

helm install ingress-nginx ingress-nginx/ingress-nginx

Результат:

NAME: ingress-nginx
LAST DEPLOYED: Sun Jul 18 22:35:37 2022
NAMESPACE: default
...
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w ingress-nginx-controller'
...

Внутренний сетевой балансировщикВнутренний сетевой балансировщик

Для создания сетевого балансировщика у сервисного аккаунта, привязанного к кластеру Managed Service for Kubernetes, должна быть роль load-balancer.admin.

Чтобы установить внутренний сетевой балансировщик:

  1. Настройте конфигурацию контроллера. Для этого создайте конфигурационный файл values.yaml и укажите в нем идентификатор подсети, в которой должен работать сетевой балансировщик:

    controller:
      service:
        external:
          enabled: false
        internal:
          enabled: true
          annotations:
            yandex.cloud/load-balancer-type: internal
            yandex.cloud/subnet-id: <идентификатор_подсети>
    
  2. Установите Ingress-контроллер NGINX, используя конфигурационный файл values.yaml:

    helm install ingress-nginx -f values.yaml ingress-nginx/ingress-nginx
    

    Результат:

    NAME: ingress-nginx
    LAST DEPLOYED: Sun Jul 18 22:55:37 2022
    NAMESPACE: default
    ...
    The ingress-nginx controller has been installed.
    It may take a few minutes for the LoadBalancer IP to be available.
    You can watch the status by running 'kubectl --namespace default get services -o wide -w ingress-nginx-controller'
    ...
    

Проверьте результатПроверьте результат

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

Проброс портовПроброс портов

Несмотря на то, что Ingress-контроллер NGINX официально поддерживает маршрутизацию только внешнего HTTP- и HTTPS-трафика, его можно сконфигурировать на прием и перенаправление внешнего TCP или UDP трафика к внутренним сервисам. Для этого установите Ingress-контроллер, используя конфигурационный файл values.yaml с настройками перенаправления и префиксом portNamePrefix.

  1. Создайте файл values.yaml:

    <протокол>: {<внешний_порт>: "<пространство_имен_сервиса>/<имя_сервиса>:<внутренний_порт>"}
    portNamePrefix: "<префикс>"
    

    Где <протокол> — протокол: tcp или udp.

  2. Установите Ingress-контроллер NGINX, используя конфигурационный файл values.yaml:

    helm install ingress-nginx -f values.yaml ingress-nginx/ingress-nginx
    

Пример

Допустим, нужно организовать проброс трафика со следующими параметрами:

  • Имя сервиса — example-go.
  • Пространство имен сервиса — default.
  • Внутренний порт сервиса — 8080.
  • Внешний порт — 9000.
  • Префикс для имени порта — test

Конфигурационный файл values.yaml для такого проброса:

tcp: {9000: "default/example-go:8080"}
portNamePrefix: "test"

После установки Ingress-контроллера созданный сетевой балансировщик будет иметь дополнительный обработчик test-9000-tcp с заданными настройками перенаправления.

Имя порта Ingress-контроллера NGINX и обработчика сетевого балансировщика формируется из настроек перенаправления: <внешний_порт>-<протокол>. Ограничения Yandex Cloud не допускают цифр в начале имени обработчика, поэтому для правильной настройки необходимо указать префикс portNamePrefix. Таким образом, имя порта и обработчика будет сформировано как <значение_префикса_portNamePrefix>-<внешний_порт>-<протокол>.

Имя порта имеет техническое ограничение в 15 символов, а имя обработчика не может начинаться с цифр. Поэтому префикс portNamePrefix должен:

  • Начинаться с букв.
  • Иметь длину не более 5-8 символов в зависимости от длины значения внешнего порта.

Чтобы убедиться, что порты проброшены, просмотрите список обработчиков в детальной информации о сетевом балансировщике.

Была ли статья полезна?

Предыдущая
Настройка NodeLocal DNS для контроллера сетевых политик Cilium
Следующая
Динамическая подготовка тома
Проект Яндекса
© 2025 ООО «Яндекс.Облако»