啟用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網關啟用壓縮成功。