启用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网关启用压缩是否成功
打开浏览器进行调试。本文以谷歌浏览器为例。
在谷歌浏览器右上角单击图标。
选择 。
访问Nginx应用。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在服务页面顶部,设置命名空间为istio-system,在External IP列查看istio-ingressgateway对应的IP地址(端口为80)。
在打开的开发者工具页面,输入上一步获取的istio-ingressgateway的IP地址。
可以看到Response中的
Content-Encoding
已经显示为gzip
,说明为ASM网关启用压缩成功。