天天看點

阿裡雲服務網格ASM公測來襲系列之六:在ASM中為應用定義路由規則

通過管理 Istio 資源定義,可以實作 ASM 服務網格的流量治理、鑒權以及安全保護等能力。本文介紹如何定義虛拟服務和目标規則這兩種 Istio 資源。

歡迎掃碼入群進一步交流:

阿裡雲服務網格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 網關。
阿裡雲服務網格ASM公測來襲系列之六:在ASM中為應用定義路由規則

執行結果

在浏覽器位址欄輸入

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}"           
阿裡雲服務網格ASM公測來襲系列之六:在ASM中為應用定義路由規則

由于 Reviews 微服務有 3 個版本,是以重新整理頁面可以看到 3 種不同的顯示内容:

  • v1 版本不會調用 Ratings 服務。
  • v2 版本會調用 Ratings 服務,并使用 1 到 5 個黑色星形圖示來顯示評分資訊。
  • v3 版本會調用 Ratings 服務,并使用 1 到 5 個紅色星形圖示來顯示評分資訊。

當然,可以繼續定義目标規則或者修改虛拟服務,使用Istio的其他更多功能。

繼續閱讀