kubernetes - 基于动态标头的路由和回退
问题描述
我想根据标头将流量路由到 pod - 带有后备。
期望的结果将是一个 k8s 集群,其中可以部署同一服务的多个版本并使用标头值路由到该集群。
svcA svcB svcC
这些服务中的每一个(git repo 的主分支)都将部署到默认命名空间或标记为“main”。每个服务的任何功能分支也可以部署到其自己的命名空间中或标有分支名称。
理想情况下,通过将标头设置为X-svcA
与分支名称匹配的值,我们会将任何流量路由到匹配的命名空间或标签。如果没有这样的名称空间或标签,请将流量路由到默认(主)pod。
if HEADERX && svcX:label
route->svcX:label
else
route->svcX
第一个问题 - istio 或 linkerd 是否可能(或类似的东西)
解决方案
您可以使用 Istio 做到这一点VirtualService
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
...
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: jason
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v1
在这里阅读更多。
推荐阅读
- nginx - 尽管匹配位置并显示正确的应用程序,nginx 将 url 更改为基本路径
- proxy - 如何在没有 CA 或 MITM 的情况下通过 HTTP 代理 HTTPS?
- c++ - 为什么警告会阻止我们编写优化程序?
- javascript - 使用 collection_select() 过滤 fullCalendar() 上的事件
- android - Android Studio 中未显示按钮
- javascript - A-Frame 超手移动抓取物体
- apache - 重写子域会导致 HTTP 重定向而不是
- sql-server - 用户为访问 SQL 代码选择变量
- c# - 通过 Lucene.net 3.0.3 或最新版本获取附近的地方
- c++ - 如果输入缓冲区不为空,则使用 getchar() 检测 Ctrl+d