Миграция приложений с Ingress NGINX на Gwin
Yandex Application Load Balancer позволяет создавать балансировщики нагрузки и управлять ими в кластерах Yandex Managed Service for Kubernetes с помощью контроллера Gwin. Контроллер Gwin, установленный в кластере, автоматически разворачивает L7-балансировщики на основе конфигурации ваших ресурсов Kubernetes.
Чтобы перенести приложения с контроллера Ingress NGINX на Gwin, выполните следующие шаги:
- Установите контроллер Gwin в вашем кластере.
- Перенесите пользовательские аннотации с контроллера Ingress NGINX в контроллер Gwin, используя таблицу соответствий.
- Переключите нагрузку на контроллер Gwin.
Таблица соответствий аннотаций Ingress NGINX и Gwin
Для NGINX и Gwin в таблице указаны сокращенные имена аннотаций. Полные имена аннотаций для NGINX начинаются с nginx.ingress.kubernetes.io/, для Gwin — с gwin.yandex.cloud/.
|
NGINX |
Gwin |
Описание |
|
Перенаправление |
||
|
|
Перенаправляет на другой протокол (HTTP/HTTPS) |
|
|
|
redirect.{name}.replaceScheme |
Перенаправляют на другой адрес. В Gwin для постоянного перенаправления указывается |
|
|
rules.prefixRewrite |
Перезаписывает URL на уровне прокси без изменения адреса в браузере |
|
Конфигурация бэкенда |
||
|
|
rules.backends.tls.sni |
Определяет протокол соединения между балансировщиком нагрузки и бэкендами |
|
Аутентификация клиента |
||
|
|
{resource}.rbac.principals.{principal-group}.{principal}.{rule-type} |
В NGINX аутентификация выполняется через HTTP (Basic/Digest) или TLS-сертификаты, в Gwin — с помощью системы управления доступом на основе ролей (RBAC). RBAC управляет доступом к маршрутам и хостам на основе атрибутов запроса |
|
Привязка сессии к бэкенду |
||
|
|
rules.sessionAffinity.header.name |
NGINX позволяет привязывать сессии через cookie, Gwin — через cookie, заголовки или IP |
|
Проверка сертификата бэкенда |
||
|
|
rules.backends.tls.sni |
В NGINX проверка сертификата настраивается через SSL, в Gwin — через TLS |
|
Таймауты соединений |
||
|
|
В Gwin задается общее время ожидания ответа от бэкенда и таймаут бездействия |
|
|
Ограничение скорости |
||
|
|
hosts.rateLimit.allRequests.perSecond |
Задают максимальное количество запросов, которое можно отправить за промежуток времени |
|
Логирование |
||
|
|
logs.logGroupID |
Включает логирование. В Gwin также можно настроить параметры логирования |
|
Прочее |
||
|
|
directResponse.{name}.responseCode |
Задает код ошибки и текст ответа |
|
|
Определяет версию HTTP для взаимодействия с бэкендом |
|
|
|
Задает количество запросов с одного IP в секунду |
|
|
|
rules.modifyResponseHeaders.append.{header-name} |
Задают заголовки ответа |
|
|
Задает алгоритм балансировки нагрузки |
Переключите нагрузку на контроллер Gwin
Создайте новые ресурсы в кластере
-
Примените обновленные YAML-манифесты с помощью команды
kubectl apply -f <YAML_файл_или_папка>.В результате будет создан новый балансировщик нагрузки без удаления существующего.
-
Убедитесь, что все ресурсы созданы успешно. Для этого проверьте статус ресурсов командой
kubectl get.
Проверьте корректность балансировки нагрузки
Протестируйте новый балансировщик нагрузки, чтобы убедиться в его корректной работе:
- Получите IP-адрес нового балансировщика нагрузки:
- Запросите статус ресурса
Ingressкомандойkubectl get Ingress. - В консоли управления
:- Перейдите на страницу кластера Managed Service for Kubernetes.
- На панели слева выберите
Сеть. - Перейдите на вкладку Ingress.
- Запросите статус ресурса
- Убедитесь, что маршрутизация работает, как ожидается. Для этого протестируйте доступность HTTP/HTTPS-эндпоинтов вашего приложения.
- Убедитесь, что проверки статуса бэкендов показывают их работоспособность.
- Проверьте наличие ошибок в логах и наличие признаков проблем с производительностью в метриках балансировщика.
Перенаправьте трафик на новый балансировщик нагрузки
- Обновите DNS-записи ваших доменов на IP-адрес нового балансировщика нагрузки для перенаправления трафика.
- Следите за метриками приложения во время переключения трафика.
- Убедитесь, что функциональность приложения полностью доступна после перенаправления трафика.
Удалите ненужные ресурсы
- Удалите старые ресурсы Ingress NGINX — оригинальные Ingress-контроллеры, группы бэкендов и т. д.
- Удалите неиспользуемые балансировщики нагрузки или сертификаты.