kubernetes - 如何使用 Istio EnvoyFilter 删除 HTTP 请求标头
问题描述
我正在尝试使用通过app-identity-and-access-adapter控制的身份验证来部署Grafana。问题是适配器在成功验证时添加了 HTTP 授权标头,但 Grafana 也在寻找相同的标头,因此将请求作为失败的 HTTP API 请求拒绝。{"message":"Invalid API key"}
我尝试使用 EnvoyFilter 来剥离 Authorization 标头,如下所示:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: grafana
namespace: monitoring
spec:
workloadSelector:
labels:
app: grafana
configPatches:
# The first patch adds the lua filter to the listener/http connection manager
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
listener:
portNumber: 3000
filterChain:
filter:
name: "envoy.http_connection_manager"
subFilter:
name: "envoy.router"
patch:
operation: INSERT_BEFORE
value: # lua filter specification
name: envoy.lua
config:
inlineCode: |
function envoy_on_request(request_handle)
local originalHeader = request_handle:headers():get("Authorization")
if originalHeader then
request_handle:headers():remove("Authorization")
end
end
但它似乎不起作用。使用以下命令打印所有可用的标题:
for key, value in pairs(request_handle:headers()) do
request_handle:logWarn("key:" .. key .. " <--> value:" .. value)
end
显示标题不存在,但 Grafana 显然正在接收它。
我可能做错了什么?
Istio 版本:1.4.5
解决方案
推荐阅读
- vba - 我如何将宏模块与其余代码结合起来
- python - 如何使用 Python 扁平化 Json 文件?
- javascript - A string is separated by different delimeter . I have to reverse each wordof string with position of delimeter to be same
- javascript - 打印机打印损坏的图像图标而不是参考图像
- python - Aspen Plus:通过 Fortran 计算器执行命令行
- r - 如何将包括日期时间在内的数据帧以每日分辨率更改为半小时分辨率
- wiremock - Wiremock 独立服务器未开始使用 --print-all-network-traffic
- java - Java Scanner nextLine 问题,需要额外输入
- sql - 数字范围格式转换
- sapui5 - SAPUI5:使用扩展控件加载视图时出错