如何解决istio 1.6中不建议使用的控制标头和路由
我需要使用istio根据标题路由流量,但是在istio1.6版本中不建议使用此选项。为什么在istio中不赞成使用控件头和路由?
解决方法
如istio documentation
中所述Istio 1.5中不推荐使用混合器策略,不建议将其用于生产。
考虑使用Envoy ext_authz过滤器,lua过滤器,或使用Envoy-wasm sandbox编写过滤器。
不建议使用控制标头和路由,只是用于此目的的混合器。如上所述,现在有多种方法可以做到这一点。
我不确定您到底想做什么,但是请看一下使节过滤器和虚拟服务。
使节过滤器
有一个使节过滤器,它向所有出站响应添加了一些自定义标头
kind: EnvoyFilter
metadata:
name: lua-filter
namespace: istio-system
spec:
workloadSelector:
labels:
istio: ingressgateway
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
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_response(response_handle)
response_handle:logInfo(" ========= XXXXX ========== ")
response_handle:headers():add("X-User-Header","worked")
end
从curl进行测试
$ curl -s -I -X HEAD x.x.x.x/
HTTP/1.1 200 OK
server: istio-envoy
date: Mon,06 Jul 2020 08:35:37 GMT
content-type: text/html
content-length: 13
last-modified: Thu,02 Jul 2020 12:11:16 GMT
etag: "5efdcee4-d"
accept-ranges: bytes
x-envoy-upstream-service-time: 2
x-user-header: worked
很少有值得检查的链接:
- https://blog.opstree.com/2020/05/27/ip-whitelisting-using-istio-policy-on-kubernetes-microservices/
- https://github.com/istio/istio/wiki/EnvoyFilter-Samples
- https://istio.io/latest/docs/reference/config/networking/envoy-filter/
虚拟服务
这里值得检查的另一件事是virtual service,您可以根据此处的匹配项进行标头路由。
中的示例HttpMatchRequest指定一组要满足的条件,以便将该规则应用于HTTP请求。例如,以下内容将规则限制为仅匹配URL路径以/ ratings / v2 /开头的请求,并且该请求包含具有值jason的自定义最终用户标头。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings-route
spec:
hosts:
- ratings.prod.svc.cluster.local
http:
- match:
- headers:
end-user:
exact: jason
uri:
prefix: "/ratings/v2/"
ignoreUriCase: true
route:
- destination:
host: ratings.prod.svc.cluster.local
另外,我的较旧的example在虚拟服务中具有基于标头的路由。
让我知道您是否还有其他问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。