Kubernetes 入口条件路由

Kubernetes ingress conditional routing

是否可以在 Kubernetes 中配置一个入口控制器,仅当传入请求具有特定的 header 值时才将 HTTP 请求路由到服务?

示例

带有以下内容的 HTTP 请求header

X-MY-CUSTOM-HEADER: accepted-value

应该转发到 service1

带有以下内容的 HTTP 请求header

X-MY-CUSTOM-HEADER: invalid-value

应该被屏蔽

如果可能的话,您能否详细说明一下或指向一些文档,因为我找不到此类用例的文档

如果您使用的是 nginx 入口控制器,您可以使用 Configuration snippet 注释来完成。然后你可以添加这样的东西:

nginx.ingress.kubernetes.io/configuration-snippet: |
  map $http_x_custom_header $not_ok {
      default "1";
      Value1  "0";
      Value2  "0";
      Value3  "0";
  }

  if ($not_ok) {
      return 403; 
  }

更多信息here

Traefik 2.0、Istio 和 Ambassador 支持基于 Header 的路由。

更多信息来自 https://discuss.kubernetes.io/t/header-based-ingress-routing/6322