istio关于开启gzip压缩

简介 【istio关于开启gzip压缩】开始阶段我们在kubernetes中使用ingress-nginx来提供http对外暴漏服务,由于服务网格的流行,开始将ingress切换了istio,通常只是使用了gatewayvs相关功能和一些网络鉴权功能,后期业务需求,需要http压缩功能,所以需要开启istiogzip功能,经官方文档istio默认时没有开启压缩的功能,但是可以通过EnvoyFilter来对代理进行插件扩展。
环境

  • kubernetes1.18版本
  • istio 1.10.1版本。
压缩方案
  1. gateway进行压缩,对此gateway下的http业务统一都进行压缩。
  2. sidecat压缩,对指定业务进行压缩。
单个压缩
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: gzip spec: workloadSelector: labels: app: productpage #选择你要压缩的应用 configPatches: - applyTo: HTTP_FILTER #指定应用envoy配置中的补丁位置 match: context: SIDECAR_INBOUND #sidercar入站的路由监听集群 listener: filterChain: #匹配监听器中特定的过滤链 filter: #要应用补丁的特定过滤器的名称 name: envoy.filters.network.http_connection_manager #匹配的过滤器名称 subFilter: #匹配下级过滤器名称 name: envoy.filters.http.router patch: operation: INSERT_BEFORE #进行的操作 进行插入操作 value: ### 插入envoy配置 name: envoy.filters.http.compressor typed_config: '@type': type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor response_direction_config: common_config: content_type: - text/html - text/css - application/javascript disable_on_etag_header: true request_direction_config: common_config: enabled: default_value: false runtime_key: request_compressor_enabled compressor_library: name: text_optimized typed_config: '@type': type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip compression_level: BEST_COMPRESSION compression_strategy: DEFAULT_STRATEGY

网关压缩
kind: EnvoyFilter metadata: name: gzip namespace: istio-system spec: workloadSelector: labels: app: istio-ingressgateway configPatches: - applyTo: HTTP_FILTER match: -context: SIDECAR_INBOUND +context: GATEWAY listener: filterChain: filter: name: envoy.filters.network.http_connection_manager #匹配的过滤器名称 subFilter: #匹配下级过滤器名称 name: envoy.filters.http.router patch: operation: INSERT_BEFORE #进行的操作 进行插入操作 value: ### 插入envoy配置 name: envoy.filters.http.compressor typed_config: '@type': type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor response_direction_config: common_config: content_type: - text/html - text/css - application/javascript disable_on_etag_header: true request_direction_config: common_config: enabled: default_value: false runtime_key: request_compressor_enabled compressor_library: name: text_optimized typed_config: '@type': type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip compression_level: BEST_COMPRESSION compression_strategy: DEFAULT_STRATEGY

参考文档
  1. https://www.envoyproxy.io/doc...
  2. https://istio.io/latest/docs/...

    推荐阅读