如何为 tcp_proxy 过滤器添加外部授权?

How to add external authorization for tcp_proxy filter?

我使用 Envoy 为 TCP 代理了一项服务。我怎样才能添加 external authorization 呢? 以下是我的 envoy.yaml:

{
  "static_resources": {
    "listeners": [
      {
        "name": "listener_0",
        "address": {
          "socket_address": {
            "address": "0.0.0.0",
            "port_value": 10001
          }
        },
        "filter_chains": [
          {
            "filters": [
              {
                "name": "envoy.filters.network.tcp_proxy",
                "typed_config": {
                  "@type": "type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy",
                  "stat_prefix": "downstream_cx_total",
                  "cluster": "service_j"
                }
              }
            ]
          }
        ]
      }
    ],
    "clusters": [
      {
        "name": "service_j",
        "connect_timeout": "30s",
        "type": "LOGICAL_DNS",
        "dns_lookup_family": "V4_ONLY",
        "load_assignment": {
          "cluster_name": "service_j",
          "endpoints": [
            {
              "lb_endpoints": [
                {
                  "endpoint": {
                    "address": {
                      "socket_address": {
                        "address": "jitsi",  
                        "port_value": 443  
                      }
                    }
                  }
                }
              ]
            }
          ]
        },
        "transport_socket": {
          "name": "envoy.transport_sockets.tls",
          "typed_config": {
            "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext"
          }
        }
      },
    ]
  }
}

您需要在 envoy.filters.network.tcp_proxy 之前将 envoy.filters.network.ext_authz 过滤器插入到过滤器链中,并设置一个 cluster 来实际做出 Authz 决定。

envoy docs有一个很好的榜样。