Envoy 測試筆記

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

2、動態資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章