#nginx #openshift #istio
#nginx #openshift #istio
Вопрос:
я пытаюсь балансировать нагрузку с помощью nginx для служб, находящихся за сервисной сеткой istio, развернутой на openshift.
мой запрос находится в nginx.conf, какие IP-адреса я должен использовать в случае развертывания istio? при развертывании, отличном от istio, я использовал IP-адрес узла модуля и порт узла сервиса.
upstream infra{
server XXX.XXX.XXX.XXX:8080;
}
map $proxy_add_x_forwarded_for $client_ip {"~(?<IP>([0-9]{1,3}.){3}[0-9]{1,3}),.*" $IP;}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/nginx.testmegh.access.log main;
error_log /var/log/nginx/nginx.testmegh.error.log error;
location /fininfra {
proxy_pass http://infra:80;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Ответ №1:
Все в istio проходит через istio-ingressgateway external-IP, так что это зависит от того, как вы настроили свой кластер istio. Это может быть либо LoadBalancer, либо NodePort.
Цитируется из документации
Определение IP-адреса входа и портов
Выполните следующую команду, чтобы определить, запущен ли ваш кластер Kubernetes в среде, поддерживающей внешние средства балансировки нагрузки:
$ kubectl get svc istio-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 172.21.109.129 130.211.10.121 ... 17h
Если задано значение EXTERNAL-IP, в вашей среде есть внешний балансировщик нагрузки, который вы можете использовать для входного шлюза. Если значение EXTERNAL-IP равно (или постоянно), ваша среда не предоставляет внешний балансировщик нагрузки для входного шлюза. В этом случае вы можете получить доступ к шлюзу, используя порт узла службы.
какие IP-адреса я должен использовать в случае развертывания istio
В приведенном выше примере из документации это 130.211.10.121
.
Допустим, вы развернули приложение Bookinfo и хотите получить к нему доступ через браузер, вам придется использовать указанный выше IP и соответствующий uri из виртуального сервиса. Так и было бы 130.211.10.121/productpage
.