我正在尝试使用nginx进行负载平衡,以在openshift上部署的istio服务网格后面提供服务。
我的查询在nginx.conf中,如果要进行istio部署,我必须使用哪个IP?在非istio部署中,我使用了pod的节点ip和服务的nodeport。
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;
}
}
答案 0 :(得分:0)
istio中的所有内容都通过istio-ingressgateway外部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值为(或永久),则您的环境未为入口网关提供外部负载平衡器。在这种情况下,您可以使用服务的节点端口访问网关。
在istio部署中,我必须使用哪个ip
在上述文档中的示例中,130.211.10.121
是
假设您已部署Bookinfo Application,并且想通过浏览器访问它,则必须使用上述IP和来自virtual service的适当uri。就是130.211.10.121/productpage
。