Istio-ingress за балансировщиком нагрузки Google Cloud Layer 7

Проблема, с которой я столкнулся, заключается в том, что мой istio-ingressgateway отлично работает на балансировщике нагрузки сетевого уровня (балансировщик нагрузки L4 или балансировщик нагрузки TCP), но когда я подключаю istio-ingressgateway к балансировщику нагрузки Layer7, подключив nodePort к внутренней службе. После этого http на https перенаправление не работает должным образом, он всегда дает код ответа 301, даже когда я запрашиваю с использованием протокола https.


person Bhavya Jain    schedule 22.10.2019    source источник
comment
Вы пользуетесь GKE? или кастомное развертывание K8S?   -  person guillaume blaquiere    schedule 22.10.2019
comment
Я использую GKE. @guillaumeblaquiere   -  person Bhavya Jain    schedule 23.10.2019
comment
Вы используете надстройку istio? Или вы сами устанавливаете Istio?   -  person guillaume blaquiere    schedule 23.10.2019
comment
я установил его сам @guillaumeblaquiere   -  person Bhavya Jain    schedule 23.10.2019
comment
Просто чтобы хорошо понять. У вас есть входной шлюз, определенный Istio. Этот шлюз создал балансировщик нагрузки TCP на GCP. Вы раскрыли службу как NodePort, определили шлюз istio и виртуальную службу istio и можете подключиться к своей службе через балансировщик нагрузки TCP. Теперь вы хотите создать балансировщик нагрузки HTTP, чтобы определить группу экземпляров как серверную часть и подключиться к ней по HTTP и HTTPS. Я прав? Бэкэнд исправен, но ответ - 301. Как вы тестируете свой балансировщик нагрузки HTTP? Завиток? Через браузер?   -  person guillaume blaquiere    schedule 23.10.2019
comment
Да, вы правы, мы подключаем экземпляры GKE в качестве серверной части балансировщика нагрузки, и проверка его работоспособности в порядке. Я тестировал его как с помощью curl, так и с помощью браузера.   -  person Bhavya Jain    schedule 24.10.2019
comment
Как вы получили свой бэкэнд-порт? Это в HTTP или HTTPS?   -  person guillaume blaquiere    schedule 25.10.2019
comment
Подключил через HTTP NodePort   -  person Bhavya Jain    schedule 26.10.2019
comment
Я даже пробовал с портом HTTPS, но LB с ним не связан. и LoadBalancer дают 502 @guillaumeblaquiere   -  person Bhavya Jain    schedule 26.10.2019


Ответы (2)


Я успешно настроил ту же архитектуру. Вот шаг для воспроизведения:

  • Разверните кластер GKE. Либо с Istio, либо после установки istio.
  • Получите порт узла Istio-ingressgateway для http:
kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}'
  • Создать глобальный балансировщик нагрузки
  • Создайте серверную службу и выберите свой кластер InstanceGroup.
  • Установите порт узла istio-ingressgateway как порт
  • Создайте проверку работоспособности для того же значения nodeport в режиме TCP
  • Настройте свой URL-путь
  • Подтвердите и подождите 5-10 минут, чтобы дать время проверки работоспособности для проверки вашей конфигурации и маршрутизации трафика.

Теперь вы можете подключиться к кластеру K8S через Istio Nodeport с помощью глобального балансировщика нагрузки. Разверните сервис на Istio, вы можете связаться с ним через Global Loadbalancer.

person guillaume blaquiere    schedule 26.10.2019
comment
вы пробовали перенаправление https с помощью балансировщика нагрузки L7? Потому что я могу подключить приложение к балансировщику нагрузки L7, но перенаправление HTTPS не работает должным образом - person Bhavya Jain; 31.10.2019

На GitHub есть проблема. Пожалуйста, проверьте: https://github.com/istio/istio/issues/17980

person pavansh    schedule 31.10.2019