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:
# 第一个补丁将 Lua 过滤器添加到 listener/http 连接管理器
- 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 过滤器规范
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