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: {}