GKE как изменить существующий балансировщик нагрузки с помощью Ingress

Вопрос или проблема

Возможно ли заставить GKE дополнять правила для существующего балансировщика нагрузки, вместо создания нового для каждого созданного объекта ingress?

У нас есть несколько объектов ingress, созданных из нескольких Helm-чартов/релизов, но нам не нужно создавать для них несколько балансировщиков нагрузки.

Спасибо!

Возможный вариант – использовать nginx-ingress вместо GKE ingress.

Когда он установлен, будет создан балансировщик нагрузки для службы nginx-ingress, и все ваши ingress будут указывать на него.

Обратите внимание, GKE Ingress использует балансировщик нагрузки уровня 7, а NGINX Ingress использует уровня 4; в зависимости от того, как вы используете ingress, потребуются некоторые изменения в конфигурации.

К сожалению, нет. Ресурс Ingress просто отображается на один балансировщик нагрузки.

Чтобы использовать один общий балансировщик нагрузки, рассмотрите возможность использования ресурса Gateway для создания общего балансировщика нагрузки и добавления маршрутов к нему в развертывания:

Общий шлюз

Изображение из: https://cloud.google.com/kubernetes-engine/docs/concepts/gateway-api#shared_gateway_per_cluster

Практически это означает:

  1. Включить Gateway API
  2. Добавить новый Helm-чарт для управления общими/выделенными ресурсами Gateway
  3. Обновить Helm-чарты, чтобы они зависели от ресурса Gateway
  4. Обновить Helm-чарты для создания ресурсов HTTPRoute вместо полных Ingress

Пожалуйста, используйте документацию Deploying Gateways для получения дополнительных подробностей.

Вы можете запросить увеличение квоты в Google Cloud Console. Страница Квоты и ограничения ресурсов балансировки нагрузки предоставляет всю необходимую информацию. Если вы нажмете на ссылку «Квота» рядом с правилами, которые хотите увеличить, вы будете перенаправлены в соответствующий раздел в вашей консоли GCP. Убедитесь, что вы отметили галочкой квоту, нажмите «EDIT QUOTAS», и на правой стороне экрана вы увидите форму для отправки вашего запроса.

.

Ответ или решение

Для решения проблемы использования единого балансировщика нагрузки в Google Kubernetes Engine (GKE) для нескольких объектов Ingress, существуют несколько подходов, учитывающих текущие ограничения и возможности GKE.

Использование Gateway API

Основной рекомендацией является переход на использование Gateway API, который позволяет создавать единый балансировщик нагрузки и управлять маршрутизацией, добавляя маршруты для различных развертываний:

  1. Включение Gateway API: Для начала работы с Gateway API необходимо активировать его в вашей кластерной среде. Это действие позволит вам управлять общим балансировщиком нагрузки через единый ресурс Gateway.

  2. Создание общего или выделенного ресурса Gateway: Вы можете создать новый Helm-чарт или преобразовать существующий для управления ресурсами Gateway. Это позволяет централизовать управление балансировщиком нагрузки.

  3. Обновление Helm-чартов: Ваши текущие Helm-чарты необходимо обновить для зависимости от ресурса Gateway. Это поможет избежать создания отдельных балансировщиков нагрузки для каждого Ingress обЪекта.

  4. Использование ресурса HTTPRoute: Вместо создания полных объектов Ingress, необходимо настраивать HTTPRoute, которые будут маршрутизироваться через общий Gateway. Это обеспечит эффективное использование общего балансировщика нагрузки.

Полная документация по внедрению Gateway доступна на официальной странице.

Альтернативное решение с NGINX Ingress Controller

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

  • NGINX работет на 4-м уровне сети: В отличие от L7 балансировщика, используемого GKE Ingress, NGINX работает на 4-м уровне и может требовать корректировки конфигурации в зависимости от специфики вашего использования.

Увеличение квот

Если количество балансировщиков нагрузки все же начинает приближаться к лимитам вашего проекта, можно запросить увеличение квот в Google Cloud Console. Подробности по этому вопросу предоставлены на странице о квотах для балансировки нагрузки.

Заключение

Таким образом, для оптимального использования ресурсов и избегания создания множества балансировщиков нагрузки в GKE, рекомендуется переход на использование Gateway API или внедрение NGINX Ingress Controller. Оба подхода предлагают централизованное управление, что позволяет гибко масштабироваться и эффективно использовать вычислительные ресурсы.

Оцените материал
Добавить комментарий

Капча загружается...