Istio_06_Istio扩展
Extensibility
EnvoyFilter
EnvoyFilter(EF): 配置Envoy过滤器
- 本质: 将配置内容直接下发至Envoy
 - Istio各资源对象均交由Pilot解析转换为Envoy配置后再下发
 
EF常用配置清单:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: <String>
  namespace: <String>
spec:
  workloadSelector: <Object>       # Label匹配管理的服务
  priority: <Integer>              # 优先级(值越低, 优先级越高)
  configPatches: <[]Object>        # Envoy过滤器配置
  - match: <Object>                # 匹配条件
      context: <String>            # 配置生成的上下文(配置生效处: 出流量、入流量、网关)
      proxy: <Object>              # 代理的匹配条件
      listener: <Object>           # 监听器匹配
      routeConfiguration: <Object> # 路由匹配
      cluster: <Object>            # 服务匹配
    applyTo: <String>              # 应用到Envoy的配置对象
    patch: <Object>                # 操作
- path操作可分为: 
ADD、REMOVE、INSERT_BEFORE、INSERT_AFTER、INSERT_FIRST - 若匹配条件失败, 则将patch操作更改为
INSERT_FIRST 
RateLimit
RateLimit(限流): 流量规划阈值, 并在超出时拒绝请求
- 限流分为: 本地限流、全局限流
 - 限流功能基于数据面代理Envoy实现, 可通过EnvoyFilter配置限流参数
 
如: Istio的限流架构

- 全局限流要求对应服务实现标准限流接口的
gRPC 
本地限流: 每个数据面代理Envoy单独限制所治理服务的请求
- 基于令牌桶机制, 支持L4的连接限制和L7的请求数限制
 - 本地限流可能出现限流不均衡的问题(流量先分配后限流导致)
 
如: Istio本地限流原理

- 令牌桶初始化特定数量的令牌
 - 每个请求需消费个流派, 当请求无法获取令牌时则请求失败
 - 相隔固定时间之后向令牌桶填充特定数量的令牌, 令牌过多则丢弃之前的
 
全局限流: 基于标准限流接口的gRPC限制服务的请求
- 服务需实现基于限流标识和阈值配置, 执行各项限流控制
 - 数据面代理Envoy根据全局限流配置将请求的重要内容转换成限流标识
 - 全局代理配置: 原始请求的关键信息和服务限流标识的映射关系
 - 请求可匹配多个限流规则, 其中有条不满足都会拒绝该请求
 
WasmPlugin
WasmPlugin(WP): WebAssembly扩展机制
- 本质: 以CRD的形式声明
Wasm的用法 
WP常用配置清单:
apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <String>
  namespace: <String>
spec:
  selector: <Object>        # Label匹配管理的服务
  url: <String>             # Wasm二进制/镜像地址
  sha256: <String>          # 校验Wasm二进制/镜像的Hash值
  imagePullPolicy: <String> # 镜像拉取策略(与Pod相同)
  imagePullSecret: <String> # Wasm拉取镜像的凭证, Kubernetes中的Secret名称
  pluginName: <String>      # Wasm在Envoy配置中的名称
  pluginConfig: <Object>    # Wasm配置(根据Wasm程序决定)
  phase: <String>           # 插入位置(UNSPECIFIED_PHASE、AUTHN、AUTHZ、STATS)
  priority: <Integer>       # 优先级(相同phase的不同Wasm插入顺序)
  vmConfig: <Object>        # Wasm虚拟机配置, 以环境变量方式注入
- 若省略
spec.selector, 则作用于WP所在NS下的所有服务 
                    
                
                
            
        
浙公网安备 33010602011771号