日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在ASM中使用VirtualService的Delegate能力

通過VirtualService定義路由規則時,如果您的服務包含很多微服務,或者您的服務包含很多路由規則,會存在維護一個龐大的VirtualService的問題。ASM引入了Delegate機制,將服務的路由規則進行拆分,降低路由規則變更帶來的風險。本文以Bookinfo服務為例,演示如何使用多個VirtualService定義Bookinfo服務的路由規則。

前提條件

背景信息

服務網格ASM中,通過VirtualService定義路由規則,控制流量路由到服務上的各種行為 。實際使用過程中,會遇到維護一個龐大的VirtualService的問題。服務的路由升級都要修改這個VirtualService規則,同時升級經常會導致服務路由更新沖突,路由配置冗余和耦合。任何的規則配置錯誤,都會影響數據平面集群下的服務,甚至影響所有的服務訪問。

ASM通過擴展VirtualService引入了Delegate機制,使服務的路由規則無需耦合在一個VirtualService中。您可以將VirtualService拆分為主VirtualService和子VirtualService。主VirtualService定義了服務的總規則,子VirtualService定義了服務的詳細路由規則。主VirtualService由管理員統一維護,子VirtualService由服務維護者進行維護,可以大大降低服務路由規則變更帶來的風險,提高服務獨立部署和升級的效率。

注意事項

  • ASM不支持對Delegate進行嵌套,只允許在主VirtualService設置Delegate參數,例如主VirtualService和子VirtualService都設置了Delegate參數,則該主VirtualService和子VirtualService將不會生效。

  • 子VirtualService的HTTPMatchRequest為主VirtualService的子集,否則會發生沖突,HTTPRoute將不會生效。

  • 當主VirtualService的Route和Redirect為空時,才可以指定Delegate。子VirtualService的Hosts必須為空。子VirtualService的路由規則會和主VirtualService的路由規則合并。

步驟一:設置網關規則

  1. 登錄ASM控制臺

  2. 在左側導航欄,選擇服務網格 > 網格管理

  3. 網格管理頁面,找到待配置的實例,單擊實例的名稱或在操作列中單擊管理

  4. 在網格詳情頁面左側導航欄,選擇ASM網關 > 網關規則,然后在右側頁面,單擊使用YAML創建

  5. 選擇命名空間,并將以下內容復制到文本框中,單擊創建。本文以default命名空間為例。

    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:
        - "*"

    設置number80,使Bookinfo服務通過80端口接收傳入或傳出的HTTP連接。

步驟二:設置主虛擬服務

  1. 登錄ASM控制臺

  2. 在左側導航欄,選擇服務網格 > 網格管理

  3. 網格管理頁面,找到待配置的實例,單擊實例的名稱或在操作列中單擊管理

  4. 在網格詳情頁面左側導航欄,選擇流量管理中心 > 虛擬服務,然后在右側頁面,單擊使用YAML創建

  5. 選擇命名空間,并將以下內容復制到文本框中,單擊創建。本文以default命名空間為例。

    以下內容創建了vs-1和vs-2的delegate,其中vs-1要求請求中必須包含/log才能訪問Bookinfo服務,vs-2要求請求中必須包含/才能訪問Bookinfo服務。

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: bookinfo
      namespace: default
    spec:
      gateways:
        - bookinfo-gateway
      hosts:
        - '*'
      http:
        - delegate:
            name: vs-1
            namespace: ns1
          match:
            - uri:
                prefix: /log
        - delegate:
            name: vs-2
            namespace: ns1
          match:
            - uri:
                prefix: /

    delegate下的參數解釋:

    • name:delegate的名稱。

    • namespace:delegate的命名空間。

步驟三:設置子虛擬服務

  1. 登錄ASM控制臺

  2. 在左側導航欄,選擇服務網格 > 網格管理

  3. 網格管理頁面,找到待配置的實例,單擊實例的名稱或在操作列中單擊管理

  4. 在網格詳情頁面左側導航欄,選擇流量管理中心 > 虛擬服務,然后在右側頁面,單擊使用YAML創建

  5. 選擇命名空間,并將以下內容復制到文本框中,單擊創建

    本文以ns1命名空間為例。關于如何創建命名空間,請參見管理全局命名空間

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-1
      namespace: ns1
    spec:
      http:
        - match:
            - uri:
                exact: /login
            - uri:
                exact: /logout
          route:
            - destination:
                host: productpage.default.svc.cluster.local
                port:
                  number: 9080
    • metadata:與主VirtualService的delegate參數保持一致,用于綁定delegate參數。本文與vs-1的delegate參數一致,表示綁定vs-1的delegate參數。

    • match:設置請求的過濾條件。本文設置uriexact: /loginexact: /logout,表示可以登錄和登出Bookinfo服務。

  6. 重復執行上述步驟,選擇命名空間,并將以下內容復制到文本框中,單擊創建

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-2
      namespace: ns1
    spec:
      http:
        - match:
            - uri:
                exact: /productpage
            - uri:
                prefix: /static
            - uri:
                prefix: /api/v1/products
          route:
            - destination:
                host: productpage.default.svc.cluster.local
                port:
                  number: 9080
    • metadata:與主VirtualService的delegate參數保持一致,用于綁定delegate參數。本文與vs-2的delegate參數一致,表示綁定vs-2的delegate

    • match:設置請求的過濾條件。本文設置請求中必須包含/productpage/static/api/v1/products參數。

結果驗證

  1. 在瀏覽器中輸入http://<ASM網關地址>/productpage

    顯示以下頁面,說明請求中包含/productpage參數訪問Bookinfo服務成功,即vs-2的VirtualService設置成功。關于如何獲取ASM網關地址,請參見獲取入口網關地址服務

  2. 單擊頁面右上角的Sign in,在彈出的對話框輸入任意賬號密碼,登錄Bookinfo服務。

    顯示如下頁面,說明登錄Bookinfo服務成功,即vs-1的VirtualService設置成功。登錄