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