Я пытаюсь применить некоторый код Lua только к модулю шлюза istio-ingressgateway. В общем, я хочу запускать код Lua для каждого запроса, который поступает во входной шлюз.
Я смог заставить это работать со старым устаревшим синтаксисом, используя filters
, как показано ниже.
Это работает на Istio 1.4.6:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: my-filter
namespace: default
labels:
some-labels
spec:
workloadSelector:
labels:
istio: ingressgateway
authn-ns1: enabled
filters:
- filterName: envoy.lua
filterType: HTTP
listenerMatch:
listenerType: GATEWAY
listenerProtocol: HTTP
filterConfig:
inlineCode: |
function envoy_on_request(request_handle)
request_handle:logDebug("Hello World")
end
Однако мне не удалось заставить это работать с новым синтаксисом, и я немного запутался, как собрать это воедино. Я попытался объединить примеры из документации https://istio.io/docs/reference/config/networking/envoy-filter/, но мне не повезло заставить это работать.
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: my-filter
namespace: default
spec:
workloadSelector:
labels:
istio: ingress-gateway
configPatches:
- applyTo: NETWORK_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: "envoy.http_connection_manager"
patch:
operation: INSERT_BEFORE
value: # lua filter specification
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:logDebug("Hello World")
end
Я не нашел слишком много примеров нового синтаксиса, и ни один, который применяет фильтр к входному шлюзу. У меня есть развернутый шлюз, но я не использую инъекцию коляски.
Знаете ли вы, как я мог бы создать фильтр-посланник так, чтобы я мог применять код Lua к каждому входящему запросу с использованием нового синтаксиса? Есть ли хорошие примеры того, как это сделать, используя новый синтаксис? Любой совет очень ценится.