envoy使用示例
来源:原创
时间:2019-11-10
作者:脚本小站
分类:云原生

示例1:简单使用示例
envoy.yaml
static_resources: listeners: - name: listener_0 address: socket_address: address: 0.0.0.0 port_value: 15001 filter_chains: - filters: - name: envoy.echo
Dockerfile:
FROM envoyproxy/envoy-alpine:v1.11.1 ADD envoy.yaml /etc/envoy/
示例2:envoy.echo
envoy.yaml
static_resources:
listeners:
name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 80 }
filter_chains:
- filters:
- name: envoy.tcp_proxy
typed_config:
"@type": type.googleapis.com/envoy.config.filter.network.tcp_proxy.v2.TcpProxy
stat_prefix: tcp
cluster: test_cluster
clusters:
- name: test_cluster
connect_timeout: 0.25s
type: STATIC
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: test_cluster
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address: { address: 127.0.0.1, port_value: 8081 }docker-compose.yaml
version: '3'
services:
envoy:
image: envoyproxy/envoy-alpine:v1.11.1
volumes:
- ./envoy.yaml:/etc/envoy/envoy.yaml
network_mode: "service:mainserver"
depends_on:
- mainserver
mainserver:
image: ikubernetes/mini-http-server:v0.3
networks:
envoymesh:
aliases:
- webserver
- httpserver
networks:
envoymesh: {}示例3:
http egress代理配置示例:
docker-compose.yaml
version: '3.3'
services:
envoy:
build:
context: .
dockerfile: Dockerfile-envoy
volumes:
- ./envoy.yaml:/etc/envoy/envoy.yaml
networks:
envoymesh:
aliases:
- envoy
depends_on:
- webserver1
- webserver2
expose:
- "80"
webserver1:
image: ikubernetes/mini-http-server:v0.3
networks:
envoymesh:
aliases:
- webserver1
- myservice
expose:
- "8081"
webserver2:
image: ikubernetes/mini-http-server:v0.3
networks:
envoymesh:
aliases:
- webserver2
- myservice
expose:
- "8081"
networks:
envoymesh: {}envoy.yaml:
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 127.0.0.1, port_value: 80 }
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
stat_prefix: egress_http
codec_type: AUTO
route_config:
name: test_route
virtual_hosts:
- name: web_service_1
domains: ["*.ik8s.io","ik8s.io"]
routes:
- match: { prefix: "/" }
route: { cluster: web_cluster_1 }
- name: web_service_2
domains: ["*.k8scast.cn","k8scast.cn"]
routes:
- match: { prefix: "/" }
route: { cluster: web_cluster_2 }
http_filters:
- name: envoy.router
clusters:
- name: web_cluster_1
connect_timeout: 0.25s
type: STRICT_DNS
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: web_cluster_1
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address: { address: myservice, port_value: 8081 }
- name: web_cluster_2
connect_timeout: 0.25s
type: STRICT_DNS
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: web_cluster_2
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address: { address: webserver1, port_value: 8081 }Dockerfile-envoy:
FROM envoyproxy/envoy-alpine:v1.11.1 RUN apk update && apk --no-cache add curl
启动docker-compose:
docker-compose up docker exec -it http_egress_envoy_1 sh curl -H "host: www.ik8s.io" 127.0.0.1:80/hostname curl -H "host: www.k8scast.cn" 127.0.0.1:80/hostname
http ingress服务暴露示例:
envoy.yaml
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 80 }
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
stat_prefix: ingress_http
codec_type: AUTO
route_config:
name: test_route
virtual_hosts:
- name: web_service_1
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: web_cluster }
http_filters:
- name: envoy.router
clusters:
- name: web_cluster
connect_timeout: 0.25s
type: STATIC
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: web_cluster
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address: { address: 127.0.0.1, port_value: 8081 }docker-compose.yaml
version: '3'
services:
envoy:
image: envoyproxy/envoy-alpine:v1.11.1
volumes:
- ./envoy.yaml:/etc/envoy/envoy.yaml
network_mode: "service:mainserver"
depends_on:
- mainserver
mainserver:
image: ikubernetes/mini-http-server:v0.3
networks:
envoymesh:
aliases:
- webserver
- httpserver
networks:
envoymesh: {}