出站 https 流量的 Envoy 过滤器

Ste*_*rov 5 kubernetes istio

我正在尝试拦截来自 pod 的所有出站 http/s 流量,并向请求添加自定义标头。在阅读了一些文档后,我了解到 SIDECAR_OUTBOUND 上的 envoy 过滤器和一些自定义 lua 代码可以解决这个问题。这就是我所做的配置:

---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: outbound-filter
spec:
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: SIDECAR_OUTBOUND
        listener:
          filterChain:
            filter:
              name: envoy.http_connection_manager
              subFilter:
                name: envoy.router
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.lua
          typed_config:
            '@type': type.googleapis.com/envoy.config.filter.http.lua.v2.Lua
            inlineCode: |
              function envoy_on_request(request_handle)
                  request_handle:logWarn("Hello World")
                  request_handle:headers():add("origin", os.getenv("ISTIO_META_WORKLOAD_NAME"))
              end
Run Code Online (Sandbox Code Playgroud)

它对于 http 请求来说工作得非常好。但是,当请求通过 https 时,过滤器似乎根本不运行,我不明白原因是什么。有什么方法可以对 https 请求应用过滤器吗?

Ars*_*sen 0

如果特使不知道如何解密流量,它将无法向请求添加标头