我有以下过滤器:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: proper-filter-name-here
namespace: istio-system
spec:
workloadSelector:
labels:
app: istio-ingressgateway
configPatches:
- applyTo: NETWORK_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: "envoy.http_connection_manager"
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:logDebug("Hello World!")
end
我正在检查网关的日志,它看起来不像是应用了过滤器。
1.如何调试EnvoyFilter?
1.在哪里可以看到每个请求应用了哪些过滤器?
1条答案
按热度按时间bjp0bcyl1#
这个主题在the documentation中有很好的描述:
最简单的Istio日志记录是Envoy’s access logging。Envoy代理将访问信息打印到其标准输出。Envoy容器的标准输出可以通过
kubectl logs
命令打印出来。你问过:
在哪里可以看到每个请求应用了哪些过滤器?
基于this issue on github:
没有通用机制。
因此,如果您想查看对每个请求应用了什么过滤器,您必须创建您的自定义解决方案。
但是,没有任何问题,您可以根据文档中的这个片段获得关于每个请求的日志:
如果您使用
IstioOperator
CR来安装Istio,请在配置中添加以下字段:否则,将等效设置添加到原始
istioctl install
命令中,例如:您还可以通过将
accessLogEncoding
设置为JSON
或TEXT
来选择JSON和文本。您可能还希望通过编辑accessLogFormat
来自定义访问日志的格式。有关所有这三种设置的详细信息,请参考全局网格选项:
meshConfig.accessLogFile
meshConfig.accessLogEncoding
meshConfig.accessLogFormat
您还可以更改访问日志格式,并从链接的指令测试访问日志。
参见(编辑):