Istio 将应用暴露到互联网_域名解析

因为没有为其指定应用的域名,所以会转到后端的httpbin和nginx这两个应用,这是不行的。

在配置gateway和虚拟服务的时候,里面hosts没有明确的定义是哪一个服务的,都是用*来表示。

那么这样就创建了3个80端口,同时是http这样一个gateway。

所以要将istio网格这边的服务,暴露到集群外部来,前面加上负载均衡器,然后根据域名去分流。


将应用暴露到互联网


在实际部署中,K8s集群一般部署在内网,为了将暴露到互联网,会在前面加一层负载均衡器(公有云LB产品、Nginx、LVS等),用于流量入口,将用户访问的域名传递给IngressGateway,IngressGateway再转发到不同应用。


Istio 将应用暴露到互联网_负载均衡_02

当请求到了ingressgateway这里,让其使用域名去分流,转发到不同的应用里面去。

前端的LB就为其提供统一的入口。一般不会让企业内部的ingressgateway暴露到互联网,因为这不安全。所以会在前面加一个流量入口,就类似于网关那样,来提供一个统一的网关访问入口。

Istio 将应用暴露到互联网_域名解析_03

proxy_set_header 将浏览器传过来的域名传到ingress-gateway里面。在ingress-gateway里面转发到不同的后端服务里面。

这个nginx都是具有公网ip,域名解析到nginx上面。

Istio 将应用暴露到互联网_域名解析_04

Istio 将应用暴露到互联网_nginx_05

Istio 将应用暴露到互联网_nginx_06

可以看到不同的项目只需要将其域名解析到公网的负载均衡器上面就行了,然后在每个虚拟服务上面,gateway上面指定。