全部產品
Search
文件中心

Alibaba Cloud Service Mesh:為ASM網關啟用壓縮

更新時間:Jun 30, 2024

啟用ASM網關的壓縮能力後,將對HTTP請求的Response進行壓縮,從而加快響應速度,降低流量消耗。本文介紹如何為ASM網關啟用壓縮。

前提條件

  • 已添加叢集到ASM執行個體。具體操作,請參見添加叢集到ASM執行個體

  • 已部署入口網關。具體操作,請參見建立入口網關

  • 如果您需要使用網域名稱,則您的網域名稱需要備案才能正常訪問。

操作步驟

  1. 在ACK叢集中部署Nginx。

    1. 使用以下內容,建立nginx.yaml檔案。

      展開查看nginx.yaml

      apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
      kind: Deployment
      metadata:
        name: nginx-deployment
      spec:
        selector:
          matchLabels:
            app: nginx
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
              sidecarset-injected: "true"
          spec:
            containers:
            - name: nginx
              image: nginx:1.14.2
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx
      spec:
        ports:
          - name: http
            port: 80
            protocol: TCP
            targetPort: 80
        selector:
          app: nginx
        type: ClusterIP
    2. 執行以下命令,部署Nginx應用。

      kubectl apply -f nginx.yaml
  2. 建立虛擬服務和網關規則。

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,找到待配置的執行個體,單擊執行個體的名稱或在操作列中單擊管理

    3. 在網格詳情頁面左側導覽列,選擇流量管理中心 > 虛擬服務,然後在右側頁面,單擊使用YAML建立

    4. 建立頁面,選擇目標命名空間,將以下內容複寫到文字框,然後單擊建立

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: nginx
        namespace: default
      spec:
        gateways:
          - nginx-gateway
        hosts:
          - '*'
        http:
          - match:
              - uri:
                  exact: /
            route:
              - destination:
                  host: nginx
                  port:
                    number: 80
    5. 在網格詳情頁面左側導覽列,選擇ASM網關 > 網關規則,然後在右側頁面,單擊使用YAML建立

    6. 建立頁面,選擇目標命名空間,將以下內容複寫到文字框,單擊建立

      apiVersion: networking.istio.io/v1beta1
      kind: Gateway
      metadata:
        name: nginx-gateway
        namespace: default
      spec:
        selector:
          istio: ingressgateway
        servers:
          - hosts:
              - '*'
            port:
              name: http
              number: 80
              protocol: HTTP
  3. 為ASM網關啟用壓縮。

    1. 在網格詳情頁面左側導覽列,選擇ASM網關 > 入口網關

    2. 入口網關頁面的ingressgateway右側,單擊查看YAML

    3. 編輯對話方塊,增加以下內容,然後單擊確定

      compression:
        content_type:
          - text/html
        enabled: true
        gzip:
          memory_level: 9
        remove_accept_encoding_header: true

      部分欄位說明如下。關於壓縮欄位的更多說明,請參見使用KubeAPI管理入口網關

      欄位

      說明

      compression.content_type

      需要被壓縮的ContentType列表。

      compression.enabled

      是否啟用入口網關壓縮能力。

      compression.gzip

      允許壓縮使用的記憶體空間規格。

      compression.remove_accept_encoding_header

      • 設定為true時,入口網關會將用戶端請求轉寄至上遊之前移除請求內的Accept-Encoding Header。

      • 設定為false時,入口網關會將用戶端請求轉寄至上遊之前保留請求內的Accept-Encoding Header。

      樣本效果如下:

      壓縮

驗證ASM網關啟用壓縮是否成功

  1. 開啟瀏覽器進行調試。本文以Google瀏覽器為例。

    1. 在Google瀏覽器右上方單擊設定表徵圖。

    2. 選擇更多工具 > 開發人員工具

  2. 訪問Nginx應用。

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇網路 > 服務

    3. 服務頁面頂部,設定命名空間istio-system,在External IP列查看istio-ingressgateway對應的IP地址(連接埠為80)。

    4. 在開啟的開發人員工具頁面,輸入上一步擷取的istio-ingressgateway的IP地址。

      可以看到Response中的Content-Encoding已經顯示為gzip,說明為ASM網關啟用壓縮成功。壓縮