啟用ASM網關的壓縮能力後,將對HTTP請求的Response進行壓縮,從而加快響應速度,降低流量消耗。本文介紹如何為ASM網關啟用壓縮。
前提條件
已添加叢集到ASM執行個體。具體操作,請參見添加叢集到ASM執行個體。
已部署入口網關。具體操作,請參見建立入口網關。
-
如果您需要使用網域名稱,則您的網域名稱需要備案才能正常訪問。
操作步驟
-
在ACK叢集中部署Nginx。
-
使用以下內容,建立nginx.yaml檔案。
-
執行以下命令,部署Nginx應用。
kubectl apply -f nginx.yaml
-
-
建立虛擬服務和網關規則。
-
登入ASM控制台,在左側導覽列,選擇。
在網格管理頁面,找到待配置的執行個體,單擊執行個體的名稱或在操作列中單擊管理。
在網格詳情頁面左側導覽列,選擇,然後在右側頁面,單擊使用YAML建立。
-
在建立頁面,選擇目標命名空間,將以下內容複寫到文字框,然後單擊建立。
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 在網格詳情頁面左側導覽列,選擇,然後在右側頁面,單擊使用YAML建立。
-
在建立頁面,選擇目標命名空間,將以下內容複寫到文字框,單擊建立。
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
-
-
為ASM網關啟用壓縮。
-
在網格詳情頁面左側導覽列,選擇。
-
在入口網關頁面的ingressgateway右側,單擊查看YAML。
-
在編輯對話方塊,增加以下內容,然後單擊確定。
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網關啟用壓縮是否成功
-
開啟瀏覽器進行調試。本文以Google瀏覽器為例。
-
在Google瀏覽器右上方單擊
表徵圖。 -
選擇。
-
-
訪問Nginx應用。
-
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
-
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
-
在服務頁面頂部,設定命名空間為istio-system,在External IP列查看istio-ingressgateway對應的IP地址(連接埠為80)。
-
在開啟的開發人員工具頁面,輸入上一步擷取的istio-ingressgateway的IP地址。
可以看到Response中的
Content-Encoding已經顯示為gzip,說明為ASM網關啟用壓縮成功。在 Network 面板中選擇任一請求,查看 Response Headers,確認其中包含content-encoding: gzip,即表示 ASM 網關已成功啟用 gzip 壓縮。
-