pol*_*per 6 debugging istio envoyproxy
我有下面的过滤器。
我正在检查网关的日志,看起来没有应用过滤器。
EnvoyFilter?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
Run Code Online (Sandbox Code Playgroud)
文档中对此主题进行了很好的描述:
\n\n\n最简单的 Istio 日志记录是Envoy\xe2\x80\x99s 访问日志记录。Envoy 代理将访问信息打印到其标准输出。然后可以通过命令打印 Envoy\xe2\x80\x99s 容器的标准输出
\nkubectl logs。
您曾问过:
\n\n\n在哪里可以查看每个请求应用了哪些过滤器?
\n
基于github上的这个问题:
\n\n\n没有通用机制。
\n
因此,如果您想查看对每个请求应用了哪些过滤器,则必须创建自定义解决方案。
\n但是,没有任何问题,您可以根据文档中的此片段获取有关每个请求的日志:
\n\n\n如果您使用
\nIstioOperatorCR 安装 Istio,请将以下字段添加到您的配置中:
spec:\n meshConfig:\n accessLogFile: /dev/stdout\nRun Code Online (Sandbox Code Playgroud)\n\n\n否则,请将等效设置添加到原始
\nistioctl install命令中,例如:
istioctl install <flags-you-used-to-install-Istio> --set meshConfig.accessLogFile=/dev/stdout\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n
accessLogEncoding您还可以通过设置为JSON或 在 JSON 和文本之间进行选择TEXT。\n您可能还想 通过编辑 来自定义访问日志的 格式accessLogFormat。有关所有这三个设置的更多信息,请参阅 全局网格选项:
\n
meshConfig.accessLogFilemeshConfig.accessLogEncodingmeshConfig.accessLogFormat另请参阅(编辑):
\n\n\n\n
\n- EnvoyFilters 将出现在您告诉 Istio 放置它们的位置。通常,错误的 EnvoyFilter 将表现为 Envoy 拒绝配置(即不处于上述 SYNCED 状态),并且您需要检查 Istiod (Pilot) 日志中是否有来自 Envoy 拒绝配置的错误。
\n
\n\n\n\n
\n- 如果配置\xe2\x80\x99根本没有出现在Envoy中\xe2\x80\x93 Envoy没有ACK它,或者它\xe2\x80\x99是一个EnvoyFilter配置\xe2\x80\x93它\xe2\x80\x99s配置可能无效(Istio 无法在语法上验证 EnvoyFilter 内部的配置)或者位于 Envoy\xe2\x80\x99s 配置中的错误位置。
\n
| 归档时间: |
|
| 查看次数: |
5646 次 |
| 最近记录: |