Как использовать вход за балансировщиком нагрузки в GKE? - PullRequest
0 голосов
/ 24 июня 2019

Я использую k8s для развертывания моего приложения, которое состоит из 3 частей.Основной веб-сайт (целевая страница), компонент приложения 1 (только для администраторов) и компонент приложения 2 (для платных пользователей).Недавно я столкнулся с шаблоном, в котором есть основной внешний балансировщик нагрузки и вход для каждой части приложения.Например:

LB 
  -> Ingress1 -> Main App
  -> Ingress2 -> App Component 1 (only accessible by admins)
  -> Ingress3 -> App Component 2 (only accessible by paid users)

Привычно ли иметь такую ​​архитектуру?Может кто-нибудь указать мне несколько хороших примеров (с использованием k8s), которые разворачивают приложения, подобные этому.Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Самый распространенный способ, которым мы можем следовать, - это создать один вход, который будет перенаправлять трафик в зависимости от пути. Например,

paths:
          - path: /app1/
            backend:
              serviceName: app_1
              servicePort: 80
          - path: /app2/
            backend:
              serviceName: app_2
              servicePort: 80

Таким образом, "serviceName" - это любое имя службы, созданное в k8s (LB / NodePort / ClusterIP). Наконец, используйте этот созданный вход во внешнем LB / App GW для перенаправления внешнего трафика в ваше приложение.

1 голос
/ 25 июня 2019

GKE не поддерживает использование Ingress или Load Balancer в качестве бэкэнда для других балансировщиков нагрузки. Вместо этого вы можете выполнить одно из следующих действий:

  1. Создать вход для каждой точки входа (это дороже)

  2. Создайте один вход, используя несколько путей (по одному на каждый бэкэнд). Это будет направлять трафик на основе введенного URL. Это, вероятно, ваше лучшее и наиболее экономически эффективное решение. В целях безопасности вы можете включить Cloud Armor , чтобы обеспечить пользователям доступ только к тем путям, к которым они должны обращаться.

  3. Создайте Ingress, чтобы открыть ваше основное приложение, затем используйте тип службы LoadBalancers, чтобы открыть платный портал и портал администратора. Они будут работать как уровень 4 (поэтому вам понадобится запись DNS, чтобы указать адрес администратора и платные URL-адреса на соответствующий IP-адрес). Вы можете настроить поле Load Balancer spec.loadBalancerSourceRanges , чтобы разрешить доступ к административному порталу только определенным диапазонам IP-адресов

С другой стороны, в вашем макете мало преимуществ, если балансировщик нагрузки находится перед входами, так как вы не хотите балансировать трафик между 3 входами. Вы хотите, чтобы весь трафик попадал во входы, а затем направлялся к правому бэкэнду и балансировался между порциями.

...