envoy是代理服务,支持3/4过滤器,7层过滤器,HTTP2、gRPC等。


image.png


Envoy配置:

node: 节点标识,一个Pod代表一个node

static_resources:定义静态配置

dynamic_resources:定义动态配置资源,xDS来获取配置,动态和静态可以同时出现

admin:envoy内置的管理接口

reacing:分布式跟踪

layered_runtime:层级化的运行时使用RTDS动态加载配置

hds_config:health check健康检查动态配置

overload_manager:过载管理器

stats_sinks:统计信息接收器

{
"node": "{...}",
"static_resources": "{...}",
"dynamic_resources": "{...}",
"cluster_manager": "{...}",
"hds_config": "{...}",
"flags_path": "...",
"stats_sinks": [],
"stats_config": "{...}",
"stats_flush_interval": "{...}",
"watchdog": "{...}",
"tracing": "{...}",
"runtime": "{...}",
"layered_runtime": "{...}",
"admin": "{...}",
"overload_manager": "{...}",
"enable_dispatcher_stats": "...",
"header_prefix": "..."
}


过滤器:

image.png


配置生成器:

在源码中的configs目录中:

configgen.py 配置生成器脚本

envoy_service_to_service_v2.template.yaml 服务间通信脚本

envoy_front_proxy_v2.template.yaml 前端代理模板

envoy_double_proxy_v2.template.yaml 双重代理模版


启动envoy:

envoy -c <path to config>.{json,yaml,pb,pb_text}

配置文件可以是静态或动态,或者混合模式。

static_resources.listeners

static_resources.clusters

static_resources: # 顶级配置段
  listeners: # 监听器
  - name:
    address: {}
    filter_chains: []
  clusters: #集群
  - name:
    type:
    connect_timeout: {}
    lb_policy:
    load_assignment: {}