EnvoyFilterUsesReplaceOperationIncorrectly
当 EnvoyFilter 使用 REPLACE 操作且 ApplyTo 设置为 HTTP_FILTER 或 NETWORK_FILTER 时,会出现此消息。这将导致 REPLACE 操作被忽略,因为 HTTP_FILTER 和 NETWORK_FILTER 不适用于 REPLACE。
一个例子
考虑一个具有 REPLACE 修补操作的 EnvoyFilter,其中此 EnvoyFilter 将被忽略
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: test-replace-2
namespace: bookinfo
spec:
workloadSelector:
labels:
app: reviews2
priority: 10
configPatches:
# The first patch adds the Lua filter to the listener/http connection manager
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
listener:
portNumber: 8080
filterChain:
filter:
name: "envoy.filters.network.http_connection_manager"
subFilter:
name: "envoy.filters.http.router"
patch:
operation: REPLACE
value: # Lua filter specification
name: envoy.lua
typed_config:
"@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
inlineCode: |
function envoy_on_request(request_handle)
-- Make an HTTP call to an upstream host with the following headers, body, and timeout.
local headers, body = request_handle:httpCall(
"lua_cluster",
{
[":method"] = "POST",
[":path"] = "/acl",
[":authority"] = "internal.org.net"
},
"authorize call",
5000)
end