Обновление Ingress-контроллера Application Load Balancer
Версии 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. Иначе возникнут коллизии.