istio - 为特定的路由或路径应用 EnvoyFilter
问题描述
我想在 Istio 中使用 EnvoyFilter 来指定特定路由或路径的行为。
例如,如果 Pod 有多个访问路径,例如 /foo 和 /bar,则拒绝访问 /foo 并返回状态 500,但允许访问 /bar。
我只知道如何使用workloadSelector 阻止对特定Pod 的所有访问,如下所示:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: block-all
spec:
workloadSelector:
labels:
app: { some-pods-label }
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
listener:
filterChain:
filter:
name: "envoy.http_connection_manager"
subFilter:
name: "envoy.router"
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(handle)
handle:respond({[":status"] = "500"})
end
有没有比在 lua 脚本中为所有路径编写条件语句更好的方法?
或者有没有办法使用 VirtualService 的元数据来确定是否应用 EnvoyFilter?
解决方案
推荐阅读
- c# - 创建可重用函数以根据 EF Core 数据模型中的相关数据返回值的最佳方法是什么?
- c++ - 如何对指向具有多个条件的类的不同实例的指针向量进行排序?
- python - 如何将元素添加到依赖于 Python 中该字符串的另一个元素的 JSON 字符串
- java - 如何使用 java 使用属性或 VM 选项打开 SSL/TLS 验证?
- laravel - 在 Windows 上使用宅基地安装 npm 的问题
- performance - 在 ocaml 中调试多余的 GC 时间
- javascript - AWS lambda no such file exists in serverless 错误
- c - 如何在C中更改函数中的指针值
- c++ - 在makefile中进行模式匹配时得到错误的文件名
- c# - Postman 生成的代码在 C# 控制台上获取 {"error":"invalid_client"}