<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們在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資源提供應用程式的服務。
設定每個應用程式的Gateway以及VirtualService資源,為應用程式繫結使用的域名,繫結後只有這個域名的流量請求才會被轉發到這個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
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
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)建立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
LB負載均衡我們採用Nginx來實現,由Nginx去反向代理IngressGateway的NodePort埠來實現基於域名去存取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版本協定,istio是1.1版本,nginx預設1.0版本 proxy_set_header Host $host; #代理轉發時攜帶請求的主機頭 proxy_pass http://192.168.20.10:31105; #代理到istio的IngressGateway } } 3.啟動Nginx [root@lb~]# systemctl restart nginx
測試之前先將域名解析寫入本地hosts檔案。
192.168.20.13 httpbin.jiangxl.com bookinfo.jiangxl.com nginx.jiangxl.com
1)httpbin程式的存取
2)bookinfo程式的存取
3)nginx程式的存取
到此這篇關於基於域名的方式存取Istio服務網格中的多個應用程式的文章就介紹到這了,更多相關Istio服務網格內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45