Envoy 测试笔记
envoy 提供的官方镜像:
- envoyproxy/envoy
- envoyproxy/envoy-alpine
镜像配置文件
/etc/envoy/envoy.yaml
默认监听 端口:10000
// 测试命令
docker run -d --name envoy-test -p 10000:10000 \
-v /home/zhangfeng/envoy/conf:/etc/envoy/ \
envoyproxy/envoy
docker run -it --name envoy-test -p 10000:10000 envoyproxy/envoy bash
docker rm -f envoy-test
docker restart envoy-test
docker cp envoy-test:/etc/envoy/envoy.yaml /home/zhangfeng/envoy/conf
1、静态测试
http_connection_manager
// 配置文件如下
- match:
prefix: "/app1/"
route:
# host_rewrite: 192.168.1.102 # 改写host头为此值
prefix_rewrite: "/e3e1bf8f-46c6-4b43-b2f7-bb61a01e7962/hello/" # 改写URL前缀
cluster: backsvc
clusters:
- name: backsvc
connect_timeout: 0.25s
type: LOGICAL_DNS
# Comment out the following line to test on v6 networks
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: backsvc
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 192.168.1.102
port_value: 8080
// 浏览器请求
http://192.168.1.102:10000/app1/
// 后端服务
http://192.168.1.102:8080/e3e1bf8f-46c6-4b43-b2f7-bb61a01e7962/hello
admin:
access_log_path: /tmp/admin_access.log
address:
socket_address:
protocol: TCP
address: 127.0.0.1
port_value: 9901
static_resources: # 静态资源
listeners: # 监听器 https://www.envoyproxy.cn/v2apireference/listenersandlds
- name: listener_0 # 配置该监听器的唯一名称
address: # 监听器应该监听的地址
socket_address: # https://www.envoyproxy.cn/v2apireference/networkaddresses
protocol: TCP
address: 0.0.0.0 # 套接字的地址 若配置为一个空的地址,意味着将绑定到0.0.0.0或::
port_value: 10000 # 多个监听器可以监听Linux上的0端口,因为实际的端口将被OS分配
filter_chains: # 这个监听器需要使用的过滤器列表
- filters:
- name: envoy.filters.network.http_connection_manager # 要实例化的过滤器的名称。 该名称必须与支持的过滤器匹配。内置的过滤器有:envoy.echo http_connection_manager mongo_proxy redis_proxy tcp_proxy
config: # 对应的过滤器配置,这取决于被实例化的过滤器 e.g. http_connection_manager
stat_prefix: ingress_http
codec_type: AUTO
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes: # https://www.envoyproxy.cn/v1apireference/httprouteconfiguration/route
- match:
prefix: "/app1/"
route:
# host_rewrite: 192.168.1.102
prefix_rewrite: "/e3e1bf8f-46c6-4b43-b2f7-bb61a01e7962/hello/"
cluster: backsvc
http_filters:
- name: envoy.filters.http.router
clusters:
- name: backsvc
connect_timeout: 0.25s
type: LOGICAL_DNS
# Comment out the following line to test on v6 networks
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: backsvc
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 192.168.1.102
port_value: 8080