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

使用泳道模式下的流量管理功能

服務網格ASM支持通過流量標簽功能將應用的相關版本(或者其他特征)隔離成一個獨立的運行環境(即泳道),然后通過設置泳道規則,將滿足規則的請求流量路由到目標版本(或者其他特征)的應用上。本文介紹如何在ASM中使用泳道模式下的流量管理功能。

前提條件

  • 已創建ASM企業版或旗艦版實例,且版本為1.17.2.22及以上。具體操作,請參見創建ASM實例升級ASM實例。

  • 已添加集群到ASM實例。具體操作,請參見添加集群到ASM實例。

  • 已創建名稱為ingressgateway的ASM網關。具體操作,請參見創建入口網關服務。

  • 已創建名稱為ingressgateway且命名空間為istio-system的網關規則。具體操作,請參見管理網關規則

    展開查看Gateway YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: ingressgateway
      namespace: istio-system
    spec:
      selector:
        istio: ingressgateway
      servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
            - '*'
    

功能介紹

灰度發布會根據請求內容或者請求流量的比例將線上流量的一小部分轉發至新版本,待灰度驗證通過后,逐步調大新版本的請求流量,是一種循序漸進的發布方式。

全鏈路灰度治理策略主要專注于整個調用鏈,不關心鏈路上經過具體哪些微服務。流量控制視角從服務轉移至請求鏈路上。您僅需制定少量的治理規則,便可構建從網關到整個后端服務的多個流量隔離環境,有效保障多個服務順利安全發布以及服務多版本并行開發,進一步促進業務的快速發展。更多信息,請參見流量標簽TrafficLabel說明

本文示例場景如下。圖中有三個泳道s1、s2、s3,分別包含三個服務mocka、mockb、mockc。在ASM控制臺部署泳道后,您可以查看各個泳道的流量分布是否符合預期。泳道模式的全鏈路灰度

步驟一:部署示例服務

  1. 為default命名空間啟用Sidecar網格代理自動注入。具體操作,請參見啟用自動注入。

    關于自動注入的更多信息,請參見開啟Sidecar自動注入。

  2. 在ACK集群中執行以下命令,部署示例服務。

    kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v1/application-v1.yaml
    kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v2/application-v2.yaml
    kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v3/application-v3.yaml

步驟二:創建泳道組和對應泳道

  1. 創建泳道組。

    1. 登錄ASM控制臺,在左側導航欄,選擇服務網格 > 網格管理。

    2. 網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇流量管理中心 > 流量泳道。

    3. 流量泳道頁面,單擊創建泳道組,在創建泳道組面板,配置相關信息,然后單擊確定。

      配置項

      說明

      泳道組名稱

      本示例配置為test

      入口網關

      選擇ingressgateway。

      泳道服務

      選擇目標Kubernetes集群default命名空間,在下方列表中選中mocka、mockbmockc服務,單擊移動圖標,添加目標服務到已選擇區域。

      配置完成后,會自動生成對應的流量標簽TrafficLabel。

      展開查看TrafficLabel YAML文件

      apiVersion: istio.alibabacloud.com/v1beta1
      kind: TrafficLabel
      metadata:
        labels:
          asm-system: 'true'
          provider: asm
        name: asm-trafficlabel-global
        namespace: istio-system
      spec:
        rules:
          - labels:
              - name: asm-label
                valueFrom:
                  - $getLabel(ASM_TRAFFIC_TAG)
      

  2. 創建s1、s2、s3泳道,并分別綁定v1、v2、v3版本。

    下文以創建s1泳道為例進行說明,請參照以下步驟創建s2和s3泳道。

    1. 流量泳道頁面的流量規則定義區域,單擊創建泳道。

    2. 創建泳道對話框,配置相關信息,然后單擊確定。

      配置項

      說明

      泳道名稱

      本示例配置為s1。

      說明

      訪問服務時,帶上對應的Header請求('x-asm-prefer-tag: 泳道名稱')會路由到對應的版本。

      配置服務標簽

      本示例配置為v1。

      添加服務

      選擇mocka(default)、mockb(default)mockc(default)

      創建泳道

      三個泳道創建完成后,示例效果如下:創建泳道

      每創建一個泳道,會自動創建對應的目標規則DestinationRule。例如s1泳道創建完成后,會自動創建如下目標規則DestinationRule示例。

      展開查看DestinationRule YAML示例

      apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        creationTimestamp: '2023-05-29T09:06:09Z'
        generation: 3
        labels:
          asm-system: 'true'
          provider: asm
          swimlane-group: test
        name: trafficlabel-dr-test-default-mocka
        namespace: istio-system
        resourceVersion: '1310364657'
        uid: 7112ce64-0176-4ff3-b5f3-66263085****
      spec:
        host: mocka.default.svc.cluster.local
        subsets:
          - labels:
              ASM_TRAFFIC_TAG: v1
            name: s1
          - labels:
              ASM_TRAFFIC_TAG: v1
            name: v1
          - labels:
              ASM_TRAFFIC_TAG: v2
            name: v2
          - labels:
              ASM_TRAFFIC_TAG: v2
            name: s2
          - labels:
              ASM_TRAFFIC_TAG: v3
            name: v3
          - labels:
              ASM_TRAFFIC_TAG: v3
            name: s3
      

  3. 創建各個泳道對應的引流規則。

    下文以創建s1泳道的引流規則為例進行說明,請參照以下步驟創建s2和s3泳道的引流規則。

    1. 流量泳道頁面的流量規則定義區域,單擊目標泳道右側操作列下的引流規則

    2. 添加引流規則對話框,配置相關信息,然后單擊確定。

      本文以泳道服務對應入口API均為/mock為例,為每個泳道配置相同的引流規則。

      配置項

      說明

      入口服務

      選擇mocka.default.svc.cluster.local。

      引流規則

      配置名稱r1域名*

      匹配請求的URI

      配置匹配方式精確,匹配內容/mock。

      三個泳道的引流規則創建成功后,示例效果如下:引流規則

      創建成功后,會自動生成如下虛擬服務VirtualService示例。

      展開查看VirtualService YAML示例

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        creationTimestamp: '2023-05-29T09:13:00Z'
        generation: 3
        labels:
          asm-system: 'true'
          istioGateway: ingressgateway
          provider: asm
        name: ingressgateway
        namespace: istio-system
        resourceVersion: '1310388638'
        uid: d60baa2f-3a12-472f-881a-15d21004****
      spec:
        gateways:
          - istio-system/ingressgateway
        hosts:
          - '*'
        http:
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s2
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s2-rule2
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s2
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s3
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s3-rule3
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s3
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s1
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s1-rule1
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s1
      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        creationTimestamp: '2023-05-29T09:13:00Z'
        generation: 3
        labels:
          asm-system: 'true'
          istioGateway: ingressgateway
          provider: asm
        name: ingressgateway
        namespace: istio-system
        resourceVersion: '1310388638'
        uid: d60baa2f-3a12-472f-881a-15d21004****
      spec:
        gateways:
          - istio-system/ingressgateway
        hosts:
          - '*'
        http:
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s2
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s2-rule2
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s2
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s3
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s3-rule3
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s3
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s1
                uri:
                  exact: /mock
            name: swimelane-ingress-route-test-s1-rule1
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s1
      

步驟三:驗證全鏈路灰度功能是否生效

  1. 獲取ASM網關的公網IP。具體操作,請參見獲取ASM網關地址。

  2. 執行以下命令,設置環境變量。

    xxx.xxx.xxx.xxx為上一步獲取的IP。

    export ASM_GATEWAY_IP=xxx.xxx.xxx.xxx
  3. 驗證全鏈路灰度功能是否生效。

    1. 執行以下命令,查看s1泳道的訪問效果。

      x-asm-prefer-tag對應的值s1步驟2創建s1泳道時配置的泳道名稱。

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s1' http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      預期輸出:

      -> mocka(version: v1, ip: 172.17.0.54)-> mockb(version: v1, ip: 172.17.0.129)-> mockc(version: v1, ip: 172.17.0.130)

      由預期輸出得到,通過設置HTTP標頭x-asm-prefer-tag: s1聲明的流量流向s1泳道下的相關服務,符合預期。

    2. 執行以下命令,查看s2泳道的訪問效果。

      x-asm-prefer-tag對應的值s2步驟2創建s2泳道時配置的泳道名稱。

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s2' http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      預期輸出:

      -> mocka(version: v2, ip: 172.17.0.9)-> mockb(version: v2, ip: 172.17.0.126)-> mockc(version: v2, ip: 172.17.0.128)

      由預期輸出得到,通過設置HTTP標頭x-asm-prefer-tag: s2聲明的流量流向s2泳道下的相關服務,符合預期。

    3. 執行以下命令,查看s3泳道的訪問效果。

      x-asm-prefer-tag對應的值s3步驟2創建s3泳道時配置的泳道名稱。

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s3' http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      預期輸出:

      -> mocka(version: v3, ip: 172.17.0.132)-> mockb(version: v3, ip: 172.17.0.127)-> mockc(version: v3, ip: 172.17.0.69)

      由預期輸出得到,通過設置HTTP標頭x-asm-prefer-tag: s3聲明的流量流向s3泳道下的相關服務,符合預期。

(可選)步驟四:查看網格拓撲

若您已通過ASM控制臺開啟網格拓撲的可觀測性,可以查看在上述請求下的網格拓撲。具體操作,請參見通過ASM控制臺開啟網格拓撲的可觀測性。網格拓撲..png