启用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
- 使用以下内容,创建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
- 在网格详情页面左侧导航栏,选择ASM网关 > 网关规则,然后在右侧页面,单击使用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网关启用压缩。
- 在网格详情页面左侧导航栏,选择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,查看istio_ingressgateway外部端点列下的端口为80的IP地址。
- 在打开的开发者工具页面,输入istio_ingressgateway的外部端点地址。可以看到,Response中的
Content-Encoding
已经显示为gzip
,说明为ASM网关启用压缩成功。