通過管理 Istio 資源定義,可以實作 ASM 服務網格的流量治理、鑒權以及安全保護等能力。本文介紹如何定義虛拟服務和目标規則這兩種 Istio 資源。
- 阿裡雲服務網格ASM公測來襲系列之一:快速了解什麼是ASM
- 阿裡雲服務網格ASM公測來襲系列之二:快速建立一個服務網格ASM執行個體
- 阿裡雲服務網格ASM公測來襲系列之三:添加一個ACK叢集到服務網格ASM執行個體
- 阿裡雲服務網格ASM公測來襲系列之四:添加入口網關
- 阿裡雲服務網格ASM公測來襲系列之五:部署應用到ASM的資料面叢集中
- 阿裡雲服務網格ASM公測來襲系列之六:在ASM中為應用定義路由規則
歡迎掃碼入群進一步交流:

定義虛拟服務
- 在控制平面區域,選擇虛拟服務頁簽,然後單擊建立。
- 在建立頁面,定義虛拟服務,單擊确定。
- 選擇相應的命名空間。本例中選擇的命名空間為 default。
- 在文本框中,定義 Istio 虛拟服務。可參考如下 YAML 定義:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*"
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
- 在虛拟服務頁面可以看到建立的 bookinfo 服務。
阿裡雲服務網格ASM公測來襲系列之六:在ASM中為應用定義路由規則
定義 Istio 網關
- 在控制平面區域,選擇Istio網關頁簽,然後單擊建立。
- 在建立頁面中,定義虛拟服務,單擊确定。
- 在文本框中,定義 Istio 網關。可參考如下 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:
- "*"
- 在Istio服務網關頁面可以看到建立的 bookinfo-gateway 網關。
執行結果
在浏覽器位址欄輸入
http://{入口網關服務的IP位址}/productpage,可以看到 Bookinfo 應用的頁面。按照如下步驟檢視入口網關服務的 IP 位址:
- 登入容器服務控制台,選擇路由與負載均衡 > 服務。
- 在服務(Service)頁面,在叢集和命名空間下拉清單中分别選擇部署入口網關的叢集和 istio-system。
- 檢視名為 istio-ingressgateway 服務所對應的外部端點資訊,即是入口網關服務的 IP 位址。
- 也可以通過 kubectl 用戶端查詢入口網關服務的 IP 位址。在對應部署入口網關的叢集的環境下,執行以下指令查詢:
kubectl get service istio-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"
由于 Reviews 微服務有 3 個版本,是以重新整理頁面可以看到 3 種不同的顯示内容:
- v1 版本不會調用 Ratings 服務。
- v2 版本會調用 Ratings 服務,并使用 1 到 5 個黑色星形圖示來顯示評分資訊。
- v3 版本會調用 Ratings 服務,并使用 1 到 5 個紅色星形圖示來顯示評分資訊。
當然,可以繼續定義目标規則或者修改虛拟服務,使用Istio的其他更多功能。