Обновление Ingress-контроллера Application Load Balancer
Совет
Вместо Ingress-контроллера Application Load Balancer рекомендуется использовать новый контроллер Yandex Cloud Gwin.
Версии ALB Ingress Controller 0.2.0 и позднее не совместимы с версиями 0.1.x. Из-за этого возникают ограничения, связанные с группами бэкендов.
Один из способов создать группу бэкендов — указать правила в ресурсе Ingress. В версиях ALB Ingress Controller до 0.2.0 каждая группа бэкендов соответствует связке параметров host, http.paths.path и http.paths.pathType. В версиях 0.2.0 и позднее группа бэкендов соответствует параметру backend.service в ресурсе Ingress. В этом параметре указывается сервис Kubernetes. Подробнее о значении параметров и конфигурации ресурса Ingress см. в документации Kubernetes
Если вы обновляете 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. -
На несколько связок параметров
host,http.paths.pathиhttp.paths.pathTypeприходится один сервис Kubernetes. В этом случае проверьте, различаются ли настройки бэкендов в параметреbackend. Например, одна группа ресурсовIngressможет устанавливать соединения по протоколу gRPC, а другая — по протоколу HTTP.Если настройки бэкендов не различаются, менять конфигурацию не нужно. Если различаются, выполните следующие действия:
-
Для каждой группы ресурсов
Ingressсоздайте отдельный файл с конфигурацией объектаService. В объекте укажите:- Его название — для каждого сервиса используйте разные названия.
- Название объекта
Deployment— для каждого сервиса это название должно быть одинаковым, так как ранее использовался только один сервис Kubernetes. - Настройки бэкендов, которыми различаются группы ресурсов
Ingress.
Пример конфигурационного файла
apiVersion: v1 kind: Service metadata: name: alb-demo-service-1 # Укажите разные названия для каждого сервиса. spec: selector: app: alb-demo-app # Укажите один Deployment для каждого сервиса. type: NodePort ports: ... # Укажите настройки, которыми отличаются группы ресурсов Ingress. -
Примените полученные конфигурации:
kubectl apply -f <названия_конфигурационных_файлов> -
Измените названия сервисов Kubernetes в ресурсах
Ingress. В параметреbackend.service.nameукажите название сервиса в соответствии с той группой, в которой находится ресурсIngress. -
Примените конфигурации измененных ресурсов
Ingress:kubectl apply -f <названия_файлов_с_ресурсами_Ingress>
-
Примечание
Если нет возможности изменить конфигурацию ресурсов Ingress, не обновляйте ALB Ingress Controller. Иначе возникнут коллизии.