組織架構
- Listeners::它們定義了 Envoy 代理如何接受傳入的請求。目前,Envoy Proxy 僅支持基於 TCP 的偵聽器。建立連接後,將其傳遞給一組過濾器進行處理
- Filters:它們是可以處理入站和出站數據的管道架構的一部分。此功能啓用過濾器,例如 Gzip,可在將數據發送到客戶端之前對其進行壓縮
- Routers:這些將流量轉發到所需的目的地(集羣)。
- Clusters:它們定義流量的目標端點和配置設置。
特點
- 每個工作線程運行一個非阻塞事件循環
- 轉發日誌爲stdout和stderr
- 通過docker配置低權限用戶
- xDS 配置(discovery service)
- eds, cds, lds
- file-based,RESTful-api,gRPC
- 灰度測試 weight
- 方便集成監控(Jaeger)和指標(Prometheus)
簡單樣例
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 10000 }
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { host_rewrite: www.google.com, cluster: service_google }
http_filters:
- name: envoy.router
clusters:
- name: service_google
connect_timeout: 0.25s
type: LOGICAL_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
hosts: [{ socket_address: { address: google.com, port_value: 443 }}]
tls_context: { sni: www.google.com }
admin:
access_log_path: /tmp/admin_access.log
address:
socket_address: { address: 0.0.0.0, port_value: 9901 }
參考
envoy官方教程