啟用ASM網關的壓縮能力后,將對HTTP請求的Response進行壓縮,從而加快響應速度,降低流量消耗。本文介紹如何為ASM網關啟用壓縮。
前提條件
已添加集群到ASM實例。具體操作,請參見添加集群到ASM實例。
已部署入口網關。具體操作,請參見創建入口網關。
如果您需要使用域名,則您的域名需要備案才能正常訪問。
操作步驟
在ACK集群中部署Nginx。
使用以下內容,創建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
執行以下命令,部署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網關啟用壓縮是否成功
打開瀏覽器進行調試。本文以谷歌瀏覽器為例。
在谷歌瀏覽器右上角單擊圖標。
選擇 。
訪問Nginx應用。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在服務頁面頂部,設置命名空間為istio-system,在External IP列查看istio-ingressgateway對應的IP地址(端口為80)。
在打開的開發者工具頁面,輸入上一步獲取的istio-ingressgateway的IP地址。
可以看到Response中的
Content-Encoding
已經顯示為gzip
,說明為ASM網關啟用壓縮成功。