我们在Istio中部署的程序一定不止有一个,前面我们已经在Istio中部署了Httpbin、Bookinfo、Nginx这三个应用程序,但是我们使用节点IP加NodePort端口的方式永远只是请求到了一个应用程序,就好比我们已经实现了Nginx的基于端口的访问模式,不过每个应用程序都是用的是80端口,才导致只访问到了一个应用程序,在实际生产中,Istio中一定会部署很多个应用程序,我们需要实现基于域名来访问不同的应用程序。
应用部署在Istio之后,将程序对外发布,会创建Gateway以及VirtualService资源,我们只需要在这两个资源中声明程序使用的域名,就可以接受来自LB的请求转发,LB的请求中会携带主机头,从而转发到对应的应用程序。
当然也可以不额外占用服务器去搭建LB产品,我们可以在K8S集群中搭建一个Nginx服务,由K8S中的Nginx服务接收80端口流量请求转发至IngressGateway,为什么不使用Ingress呢,Ingress需要为每一个网站创建资源编排文件,如果域名很多的情况下,配置比较繁琐。
如下图所示:用户请求bookinfo的项目,在浏览器中输入bookinfo.jiangxl.com域名,由DNS解析到LB负载均衡器,LB负载均衡器会将请求转发到IngressGateway中,IngressGateway根据请求头中的域名,将请求转发到对应的Gateway中,然后在将请求转发到应用程序的Service资源,最后由应用程序的Pod资源提供应用程序的服务。
2.通过域名的方式访问Istio网格中的应用程序 2.1.配置Gateway和VirtualService资源配置每个应用程序的Gateway以及VirtualService资源,为应用程序绑定使用的域名,绑定后只有这个域名的流量请求才会被转发到这个Gateway以及VirtualService资源上。
2.1.1.修改httpbin程序的Gateway和VirtualService资源1)配置Gateway以及VirtualService资源绑定域名
2)更新httpbin程序的GW和VS资源
2.1.2.修改bookinfo程序的Gateway和VirtualService资源1)配置Gateway以及VirtualService资源绑定域名
2)更新bookinfo程序的GW和VS资源
2.1.3.修改nginx程序的Gateway和VirtualService资源1)配置Gateway以及VirtualService资源绑定域名
2)创建nginx程序的GW和VS资源
2.2.配置LB代理Istio的IngressGatewayLB负载均衡我们采用Nginx来实现,由Nginx去反向代理IngressGateway的NodePort端口来实现基于域名去访问Istio中的程序。
3.基于域名来访问Istio中的各个程序测试之前先将域名解析写入本地hosts文件。
1)httpbin程序的访问
2)bookinfo程序的访问
3)nginx程序的访问
到此这篇关于基于域名的方式访问Istio服务网格中的多个应用程序的文章就介绍到这了,更多相关Istio服务网格内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!