-
應用准備:使用以前springbootapp鏡像,xjk27400861/springbootapp:42與xjk27400861/springbootapp:43兩個鏡像,部署兩個版本的應用
-
創建命名空間,springistiodemo,在k3s集群的任意一個節點執行
命令:
sudo kubectl create namespace springistiodemo

-
自動注入(給命名空間打指定標簽,啟用自動注入)
sudo kubectl label namespace springistiodemo istio-injection=enabled

-
查看標簽狀態
sudo kubectl get ns springistiodemo --show-labels

-
禁用自動注入命令
sudo kubectl label namespace springistiodemo istio-injection=disabled –overwrite

-
啟用命名空間,自動注入后,rancher界面顯示按鈕為:禁用Istio自動注入

-
手動注入方式,(其他安裝方式),rancher暫未找到執行istioctl命令的窗口
sudo istioctl kube-inject -f springbootapp-2nodes.yaml | sudo kubectl apply -f -
-
新建springbootapp-2nodes.yaml文件,執行命令部署應用
sudo kubectl create -f springbootapp-2nodes.yaml -n springistiodemo
-
springbootapp-2nodes.yaml文件內容,2個版本的服務,分別為v1和v2


-
稍等片刻,可以看到兩個服務創建完成

-
創建及部署目標規則springbootapp-destination.yaml
sudo kubectl apply -f springbootapp-destination.yaml -n springistiodemo

-
GateWay創建,供外網訪問
sudo kubectl apply -f springbootapp-vs-v1.yaml -n springistiodemo

-
創建及部署默認路由springbootapp-vs-v1.yaml,訪問都訪問v1版本服務
sudo kubectl apply -f springbootapp-vs-v1.yaml -n springistiodemo

-
輸入命令:sudo kubectl get svc istio-ingressgateway -n istio-system,查看端口映射,發現31380端口對應80端口

-

-
查看kiali界面,查看調用路徑,namespace選擇2個istio-system和springistiodemo,發現通過ingressgateway訪問的服務都定位在了v1版本上

-
也可以通過在istio-ingressgateway的service中,添加端口映射,映射到應用上,可以不用80端口;例如:加端口映射8066-8080-31386,同時gateway的yaml文件,number屬性改為8066,即可通過31386端口,訪問服務(http://ip:31386)
