一、envoy示例
- 克隆envoy示例仓库
git clone https://github.com/iKubernetes/servicemesh_in_practise.git
git checkout develop # 切换到develop分支
- tcp-proxy
cd servicemesh_in_practise/Envoy-Basics/tcp-front-proxy/
# 修改docker-compose配置文件
vim docker-compose.yaml
services:
envoy:
image: envoyproxy/envoy-alpine:v1.21-latest
environment: # 添加环境变量
- ENVOY_UID=0 # 添加环境变量
# 启动
docker-compose up
# 验证
curl 172.31.1.2
- http-ingress
cd servicemesh_in_practise/Envoy-Basics/http-ingress
# 修改docker-compose配置文件,如上所示,添加环境变量
# 启动
docker-compose up
# 验证
curl 172.31.3.2
- http-egress
cd servicemesh_in_practise/Envoy-Basics/http-egress
# 修改docker-compose配置文件,如上所示,添加环境变量
# 启动
docker-compose up
# 进入容器验证
docker exec -it httpegress_client_1 bash
curl 127.0.0.1
- http-front-proxy
cd servicemesh_in_practise/Envoy-Basics/http-front-proxy
# 修改docker-compose配置文件,如上所示,添加环境变量
# 启动
docker-compose up
# 验证
curl -H "Host: www.ik8s.io" 172.31.2.2
curl -I -H "Host: www.magedu.com" 172.31.2.2
- admin-interface
cd servicemesh_in_practise/Envoy-Basics/admin-interface
# 修改docker-compose配置文件,如上所示,添加环境变量
# 启动
docker-compose up
# 验证
curl -H "Host: www.ik8s.io" 172.31.2.2
curl -I -H "Host: www.magedu.com" 172.31.2.2
curl 172.31.5.2:9901 # 访问管理页面
curl 172.31.5.2:9901/help # 以文本形式展示管理页面
admin commands are:
/: Admin home page
/certs: print certs on machine
/clusters: upstream cluster status
/config_dump: dump current Envoy configs (experimental)
/contention: dump current Envoy mutex contention stats (if enabled)
/cpuprofiler: enable/disable the CPU profiler
/drain_listeners: drain listeners
/healthcheck/fail: cause the server to fail health checks
/healthcheck/ok: cause the server to pass health checks
/heapprofiler: enable/disable the heap profiler
/help: print out list of admin commands
/hot_restart_version: print the hot restart compatibility version
/init_dump: dump current Envoy init manager information (experimental)
/listeners: print listener info
/logging: query/change logging levels
/memory: print current allocation/heap usage
/quitquitquit: exit the server
/ready: print server state, return 200 if LIVE, otherwise return 503
/reopen_logs: reopen access logs
/reset_counters: reset all counters to zero
/runtime: print runtime values
/runtime_modify: modify runtime values
/server_info: print server version/status information
/stats: print server stats
/stats/prometheus: print server stats in prometheus format
/stats/recentlookups: Show recent stat-name lookups
/stats/recentlookups/clear: clear list of stat-name lookups and counter
/stats/recentlookups/disable: disable recording of reset stat-name lookup names
/stats/recentlookups/enable: enable recording of reset stat-name lookup names
curl 172.31.5.2:9901/listeners # 查看监听端口
curl 172.31.5.2:9901/clusters # 查看集群
curl 172.31.5.2:9901/config_dump # 打印配置信息
curl 172.31.5.2:9901/stats # 统计数据信息接口
curl 172.31.5.2:9901/stats/prometheus # 查看prometheus数据兼容格式
prometheus四种数据类型:counter,guage,histogram,summary
- layered-runtime
cd servicemesh_in_practise/Envoy-Basics/layered-runtime
# 修改docker-compose配置文件,如上所示,添加环境变量
# 启动
docker-compose up
# 验证
curl 172.31.14.2:9901/runtime # 查看runtime配置
curl -XPOST 172.31.14.2:9901/runtime_modify?hi=true # 修改runtime配置,添加hi=true值,添加成功返回"ok"
二、envoy springboot应用
- 修改镜像,使用http-ingress代理方式起应用
# 修改docker-compose配置文件
vim docker-compose.yaml
services:
envoy:
image: envoyproxy/envoy-alpine:v1.21-latest
environment: # 添加环境变量
- ENVOY_UID=0 # 添加环境变量
...
webserver01:
image: ikubernetes/spring-boot-helloworld:v0.9.6 # 修改应用镜像
# 修改envoy配置文件
vim envoy.yaml
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 81 } # 修改envoy监听端口
...
- endpoint:
address:
socket_address: { address: 127.0.0.1, port_value: 80 } # 修改应用监听端口号,demo应用监听端口号为80,需要保持一致
# 启动
docker-compose up
# 验证