istio关于开启gzip压缩
简介
【istio关于开启gzip压缩】开始阶段我们在kubernetes
中使用ingress-nginx
来提供http
对外暴漏服务,由于服务网格的流行,开始将ingress
切换了istio
,通常只是使用了gateway
和vs
相关功能和一些网络鉴权功能,后期业务需求,需要http
压缩功能,所以需要开启istio
的gzip
功能,经官方文档istio
默认时没有开启压缩的功能,但是可以通过EnvoyFilter
来对代理进行插件扩展。
环境
- kubernetes1.18版本
- istio 1.10.1版本。
- gateway进行压缩,对此gateway下的http业务统一都进行压缩。
- 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
参考文档
- https://www.envoyproxy.io/doc...
- https://istio.io/latest/docs/...
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 醒不来的梦
- 关于自我为中心的一点感想
- 定投,开启个人品牌之路
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 关于Ruby的杂想
- 关于读书的思考
- 关于this的一些问题(1)
- 《声之形》