Envoy 过滤器仅应用于对外部负载均衡器的调用,而不应用于特定服务的入站入口流量
Envoy Filter is only getting applied on calls to External Load Balancer but not on Traffic to inbound ingress for Specific Service
我有一个 K8s 集群,使用以下命令公开了它的地址:kubectl get svc istio-ingressgateway -n istio-system
-> 让我们假设地址是 a467.kongz.com
我的集群中有一个 Envoy 过滤器,它利用 ExtAuth 并将额外的 header Is-Kong-Verified
附加到响应 headers
考虑与此类似的东西 -> ()
现在,当我对 -> curl -v a467.kongz.com/stream/1
进行 API 调用时
这到达外部验证系统并且响应 header 附加了 Is-Kong-Verified
然后最终到达上游服务 Kong Stream
Service Pod(/stream/1)
现在,当我调用 Kong Stream Service 时,它作为 https://stream.kongz.com/stream/1 通过 Ingress 公开给 Public,请求没有被选择由 Envoy 过滤器向上但到达最终服务。
最终目标
需要Envoy过滤器应用于集群内的所有传入请求,即使直接请求服务
注意:目标 Service/deployment 已注入 Istio-Sidecar
我查了一些文档,意识到应该有一个像Ambassador,Nginx这样的网关服务作为服务的代理。因此,当 client/user 调用 Nginx 代理时,它会将流量路由到 ALB 或集群地址,然后通过 Envoy 过滤器,然后到达上游服务。
是否可以在没有任何代理系统(nginx、ambassdor)的情况下实现最终目标,还是我遗漏了什么?
提前感谢您的回答。
终于,我找到了查询的解决方案
与以下文档中的 spec.configPatches.context=GATEWAY
配置相比
应该改为spec.configPatches.context=SIDECARD_INBOUND
并且工作负载选择器需要更改为与任何命名空间
下的目标pods匹配的标签
使用以下文档获取更多上下文
https://istio.io/latest/docs/reference/config/networking/envoy-filter/#EnvoyFilter-PatchContext
现在这将允许 API 通过 Envoy 过滤器拦截的 Ingress 调用特定服务
确保 Pods 具有与工作负载选择器匹配的标签 spec.workloadSelector.labels
例如,它应该类似于下面的
spec:
workloadSelector:
labels:
externalAuth: enabled
并且您的 Pod 具有标签 externalAuth: enabled
我有一个 K8s 集群,使用以下命令公开了它的地址:kubectl get svc istio-ingressgateway -n istio-system
-> 让我们假设地址是 a467.kongz.com
我的集群中有一个 Envoy 过滤器,它利用 ExtAuth 并将额外的 header Is-Kong-Verified
附加到响应 headers
考虑与此类似的东西 -> (
现在,当我对 -> curl -v a467.kongz.com/stream/1
进行 API 调用时
这到达外部验证系统并且响应 header 附加了 Is-Kong-Verified
然后最终到达上游服务 Kong Stream
Service Pod(/stream/1)
现在,当我调用 Kong Stream Service 时,它作为 https://stream.kongz.com/stream/1 通过 Ingress 公开给 Public,请求没有被选择由 Envoy 过滤器向上但到达最终服务。
最终目标
需要Envoy过滤器应用于集群内的所有传入请求,即使直接请求服务
注意:目标 Service/deployment 已注入 Istio-Sidecar
我查了一些文档,意识到应该有一个像Ambassador,Nginx这样的网关服务作为服务的代理。因此,当 client/user 调用 Nginx 代理时,它会将流量路由到 ALB 或集群地址,然后通过 Envoy 过滤器,然后到达上游服务。
是否可以在没有任何代理系统(nginx、ambassdor)的情况下实现最终目标,还是我遗漏了什么?
提前感谢您的回答。
终于,我找到了查询的解决方案
与以下文档中的 spec.configPatches.context=GATEWAY
配置相比
应该改为spec.configPatches.context=SIDECARD_INBOUND
并且工作负载选择器需要更改为与任何命名空间
使用以下文档获取更多上下文 https://istio.io/latest/docs/reference/config/networking/envoy-filter/#EnvoyFilter-PatchContext
现在这将允许 API 通过 Envoy 过滤器拦截的 Ingress 调用特定服务
确保 Pods 具有与工作负载选择器匹配的标签 spec.workloadSelector.labels
例如,它应该类似于下面的
spec:
workloadSelector:
labels:
externalAuth: enabled
并且您的 Pod 具有标签 externalAuth: enabled