[Документация Yandex Cloud](../../../index.md) > [Yandex Managed Service for Kubernetes](../../index.md) > [Пошаговые инструкции](../index.md) > Установка приложений из Cloud Marketplace > Обновление Ingress-контроллера Application Load Balancer

# Обновление Ingress-контроллера Application Load Balancer

# Обновить Ingress-контроллер Application Load Balancer для Managed Service for Kubernetes

{% note tip %}

Вместо ALB Ingress-контроллера и Gateway API рекомендуется использовать новый контроллер [Yandex Cloud Gwin](../../alb-ref/gwin-index.md).

{% endnote %}

Версии [ALB Ingress Controller](https://yandex.cloud/ru/marketplace/products/yc/alb-ingress-controller) 0.2.0 и позднее не совместимы с версиями 0.1.x. Из-за этого возникают ограничения, связанные с [группами бэкендов](../../alb-ref/ingress-controller/principles.md).

Один из способов создать группу бэкендов — указать [правила](../../alb-ref/ingress.md#rule) в ресурсе `Ingress`. В версиях ALB Ingress Controller до 0.2.0 каждая группа бэкендов соответствует связке параметров `host`, `http.paths.path` и `http.paths.pathType`. В версиях 0.2.0 и позднее группа бэкендов соответствует параметру `backend.service` в ресурсе `Ingress`. В этом параметре указывается [сервис Kubernetes](../../concepts/service.md). Подробнее о значении параметров и конфигурации ресурса `Ingress` в [документации Kubernetes](https://kubernetes.io/docs/concepts/services-networking/ingress/).

Если вы обновляете ALB Ingress Controller с версии 0.1.x до версии 0.2.0 или позднее, проверьте, применимы ли следующие случаи к вашим группам ресурсов `Ingress` (группы формируются по значению аннотации `ingress.alb.yc.io/group-name` в ресурсах `Ingress`):

* В конфигурациях встречаются одинаковые значения параметров `host`, `http.paths.path` и `http.paths.pathType`, при этом указаны разные сервисы Kubernetes в параметрах `backend.service.name`. В этом случае пересоздайте группы бэкендов с помощью объектов [HttpBackendGroup](../../alb-ref/http-backend-group.md).

* На несколько связок параметров `host`, `http.paths.path` и `http.paths.pathType` приходится один сервис Kubernetes. В этом случае проверьте, различаются ли настройки бэкендов в параметре `backend`. Например, одна группа ресурсов `Ingress` может устанавливать соединения по протоколу gRPC, а другая — по протоколу HTTP.

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

   1. Для каждой группы ресурсов `Ingress` создайте отдельный файл с конфигурацией объекта `Service`. В объекте укажите:

      * Его название — для каждого сервиса используйте разные названия.
      * Название объекта `Deployment` — для каждого сервиса это название должно быть одинаковым, так как ранее использовался только один сервис Kubernetes.
      * Настройки бэкендов, которыми различаются группы ресурсов `Ingress`.

      {% cut "Пример конфигурационного файла" %}

      ```yaml
      apiVersion: v1
      kind: Service
      metadata:
        name: alb-demo-service-1 # Укажите разные названия для каждого сервиса.
      spec:
        selector:
          app: alb-demo-app # Укажите один Deployment для каждого сервиса.
        type: NodePort
        ports:
          ... # Укажите настройки, которыми отличаются группы ресурсов Ingress.
      ```

      {% endcut %}

   1. Примените полученные конфигурации:

      ```bash
      kubectl apply -f <названия_конфигурационных_файлов>
      ```

   1. Измените названия сервисов Kubernetes в ресурсах `Ingress`. В параметре `backend.service.name` укажите название сервиса в соответствии с той группой, в которой находится ресурс `Ingress`.
   1. Примените конфигурации измененных ресурсов `Ingress`:

      ```bash
      kubectl apply -f <названия_файлов_с_ресурсами_Ingress>
      ```

{% note info %}

Если нет возможности изменить конфигурацию ресурсов `Ingress`, не обновляйте ALB Ingress Controller. Иначе возникнут коллизии.

{% endnote %}