我试图拦截来自pod的所有出站http / s通信,并将自定义标头添加到请求中。阅读了一些文档之后,我了解到,在SIDECAR_OUTBOUND上使用使能过滤器和一些自定义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
对于HTTP请求,它工作得很好。但是,当请求通过https时,过滤器似乎根本不运行,我不知道是什么原因。 还有什么方法可以将过滤器应用于https请求吗?
答案 0 :(得分:0)
如果 Envoy 不知道如何解密流量,它将无法向请求添加标头