routes - 如何在 Envoy Proxy 中基于 Http header 进行路由

标签 routes http-headers envoyproxy

我正在发送带有以下 header 的 http 请求。

标题 = {"InstanceId": "1"}

如何使用此 header 值(即 1)路由到集群(端点)

我实际上想在 envoy.yaml 中做什么:

如果(header.InstanceId == 1)

Route to cluster A

否则如果(header.InstanceId == 2)

Route to cluster B

谁能帮帮我。 提前致谢。

最佳答案

如果你想根据headers将流量重定向到不同的集群,你可以定义下面的监听器(有趣的部分是static_resources.listeners[0].filter_chains[0].filters[0].route_config .virtual_hosts[0].routes 部分,定义了两个匹配):

static_resources:
  listeners:
  - address:
      socket_address:
        address: 0.0.0.0
        port_value: 8080
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          codec_type: AUTO
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains:
              - "*"
              routes:
              - match:
                  prefix: "/"
                  headers:
                    - name: "InstanceId"
                      exact_match: "1"
                route:
                  cluster: clusterA
              - match:
                  prefix: "/"
                  headers:
                    - name: "InstanceId"
                      exact_match: "2"
                route:
                  cluster: clusterB
          http_filters:
          - name: envoy.filters.http.router

关于routes - 如何在 Envoy Proxy 中基于 Http header 进行路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70959882/

相关文章:

javascript - Backbone 路由器

php - Zend 框架 1.12 的简单路由

javascript - 无需哈希或正则表达式的替代单页应用程序路由机制

angularjs - 平均堆栈 : angular routing vs express routing

php - X-Backside-Transport header 有什么作用?

http-headers - 静态 Assets 的 Netlify header 缓存控制

api - 如何阻止用户直接访问服务器的 API 并强制他们使用 UI?

java - ISTIO sidecar导致Java grpc客户端高并发负载下抛出 "UNAVAILABLE: upstream connect error or disconnect/reset before headers"

kubernetes - Istio |不使用 Istio 入口网关的 TLS 双向认证

java - 如何在 Java 字符串中存储 grpc 编码数据?