基于域名的方式訪問Istio服務(wù)網(wǎng)格中的多個應(yīng)用程序的方法詳解
1.為什么要使用域名訪問部署在Istio中的程序
我們在Istio中部署的程序一定不止有一個,前面我們已經(jīng)在Istio中部署了Httpbin、Bookinfo、Nginx這三個應(yīng)用程序,但是我們使用節(jié)點IP加NodePort端口的方式永遠只是請求到了一個應(yīng)用程序,就好比我們已經(jīng)實現(xiàn)了Nginx的基于端口的訪問模式,不過每個應(yīng)用程序都是用的是80端口,才導(dǎo)致只訪問到了一個應(yīng)用程序,在實際生產(chǎn)中,Istio中一定會部署很多個應(yīng)用程序,我們需要實現(xiàn)基于域名來訪問不同的應(yīng)用程序。
應(yīng)用部署在Istio之后,將程序?qū)ν獍l(fā)布,會創(chuàng)建Gateway以及VirtualService資源,我們只需要在這兩個資源中聲明程序使用的域名,就可以接受來自LB的請求轉(zhuǎn)發(fā),LB的請求中會攜帶主機頭,從而轉(zhuǎn)發(fā)到對應(yīng)的應(yīng)用程序。
當(dāng)然也可以不額外占用服務(wù)器去搭建LB產(chǎn)品,我們可以在K8S集群中搭建一個Nginx服務(wù),由K8S中的Nginx服務(wù)接收80端口流量請求轉(zhuǎn)發(fā)至IngressGateway,為什么不使用Ingress呢,Ingress需要為每一個網(wǎng)站創(chuàng)建資源編排文件,如果域名很多的情況下,配置比較繁瑣。
如下圖所示:用戶請求bookinfo的項目,在瀏覽器中輸入bookinfo.jiangxl.com域名,由DNS解析到LB負(fù)載均衡器,LB負(fù)載均衡器會將請求轉(zhuǎn)發(fā)到IngressGateway中,IngressGateway根據(jù)請求頭中的域名,將請求轉(zhuǎn)發(fā)到對應(yīng)的Gateway中,然后在將請求轉(zhuǎn)發(fā)到應(yīng)用程序的Service資源,最后由應(yīng)用程序的Pod資源提供應(yīng)用程序的服務(wù)。
2.通過域名的方式訪問Istio網(wǎng)格中的應(yīng)用程序
2.1.配置Gateway和VirtualService資源
配置每個應(yīng)用程序的Gateway以及VirtualService資源,為應(yīng)用程序綁定使用的域名,綁定后只有這個域名的流量請求才會被轉(zhuǎn)發(fā)到這個Gateway以及VirtualService資源上。
2.1.1.修改httpbin程序的Gateway和VirtualService資源
1)配置Gateway以及VirtualService資源綁定域名
[root@k8s-master istio-1.8.2]# vim samples/httpbin/httpbin-gateway.yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: httpbin-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "httpbin.jiangxl.com" #在hosts中綁定程序的域名 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: httpbin spec: hosts: - "httpbin.jiangxl.com" #同樣在hosts中管理程序的域名 gateways: - httpbin-gateway http: - route: - destination: host: httpbin port: number: 8000
2)更新httpbin程序的GW和VS資源
[root@k8s-master istio-1.8.2]# kubectl apply -f samples/httpbin/httpbin-gateway.yaml gateway.networking.istio.io/httpbin-gateway created virtualservice.networking.istio.io/httpbin created
2.1.2.修改bookinfo程序的Gateway和VirtualService資源
1)配置Gateway以及VirtualService資源綁定域名
[root@k8s-master istio-1.8.2]# vim samples/bookinfo/networking/bookinfo-gateway.yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: bookinfo-gateway spec: selector: istio: ingressgateway # use istio default controller servers: - port: number: 80 name: http protocol: HTTP hosts: - "bookinfo.jiangxl.com" --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: bookinfo spec: hosts: - "bookinfo.jiangxl.com" gateways: - bookinfo-gateway http: - match: - uri: exact: /productpage - uri: prefix: /static - uri: exact: /login - uri: exact: /logout - uri: prefix: /api/v1/products route: - destination: host: productpage port: number: 9080
2)更新bookinfo程序的GW和VS資源
[root@k8s-master istio-1.8.2]# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml -n bookinfo gateway.networking.istio.io/bookinfo-gateway configured virtualservice.networking.istio.io/bookinfo configured
2.1.3.修改nginx程序的Gateway和VirtualService資源
1)配置Gateway以及VirtualService資源綁定域名
[root@k8s-master istio-1.8.2]# vim samples/myproject/nginx-gateway.yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: nginx-gateway namespace: istio-project spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "nginx.jiangxl.com" [root@k8s-master istio-1.8.2]# vim samples/myproject/nginx-virtualservice.yaml apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: nginx-vs namespace: istio-project spec: hosts: - "nginx.jiangxl.com" gateways: - nginx-gateway http: - route: - destination: host: nginx-svc subset: v1 weight: 100 mirror: host: nginx-svc subset: v2 mirror_percent: 100
2)創(chuàng)建nginx程序的GW和VS資源
[root@k8s-master istio-1.8.2]# kubectl apply -f samples/myproject/nginx-gateway.yaml gateway.networking.istio.io/nginx-gateway configured [root@k8s-master istio-1.8.2]# kubectl apply -f samples/myproject/nginx-virtualservice.yaml virtualservice.networking.istio.io/nginx-vs configured
2.2.配置LB代理Istio的IngressGateway
LB負(fù)載均衡我們采用Nginx來實現(xiàn),由Nginx去反向代理IngressGateway的NodePort端口來實現(xiàn)基于域名去訪問Istio中的程序。
1.安裝Nginx [root@lb~]# yum -y install nginx 2.配置Nginx反向代理Istio的IngressGateway [root@lb~]# vim /etc/nginx/conf.d/istio-ingressgateway.conf server { listen 80; server_name _; location / { proxy_http_version 1.1; #開啟http的1.1版本協(xié)議,istio是1.1版本,nginx默認(rèn)1.0版本 proxy_set_header Host $host; #代理轉(zhuǎn)發(fā)時攜帶請求的主機頭 proxy_pass http://192.168.20.10:31105; #代理到istio的IngressGateway } } 3.啟動Nginx [root@lb~]# systemctl restart nginx
3.基于域名來訪問Istio中的各個程序
測試之前先將域名解析寫入本地hosts文件。
192.168.20.13 httpbin.jiangxl.com bookinfo.jiangxl.com nginx.jiangxl.com
1)httpbin程序的訪問
2)bookinfo程序的訪問
3)nginx程序的訪問
到此這篇關(guān)于基于域名的方式訪問Istio服務(wù)網(wǎng)格中的多個應(yīng)用程序的文章就介紹到這了,更多相關(guān)Istio服務(wù)網(wǎng)格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VSCode連接遠程服務(wù)器調(diào)試代碼超詳細(xì)流程(圖文)
這篇文章主要給大家介紹了關(guān)于VSCode連接遠程服務(wù)器調(diào)試代碼的超詳細(xì)流程,遠程調(diào)試是為了解決在本機開發(fā)環(huán)境與線上不一致導(dǎo)致調(diào)試難、搭建繁瑣,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10VS?Code?常用自定義配置代碼規(guī)范保存自動格式化
這篇文章主要為大家介紹了VS?Code?常用自定義配置代碼規(guī)范保存自動格式化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08基于域名的方式訪問Istio服務(wù)網(wǎng)格中的多個應(yīng)用程序的方法詳解
這篇文章主要介紹了基于域名的方式訪問Istio服務(wù)網(wǎng)格中的多個應(yīng)用程序,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07Jenkins定時構(gòu)建語法規(guī)則及時間設(shè)置
這篇文章主要為大家介紹了Jenkins定時構(gòu)建時間設(shè)置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06微信 小程序開發(fā)環(huán)境搭建詳細(xì)介紹
這篇文章主要介紹了微信 小程序開發(fā)環(huán)境搭建詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-09-09