Kubernetes ingress conditional routing

12/7/2018

Is it possible to configure an ingress controller in Kubernetes to route the HTTP requests to a service only if the incoming requests have a certain value for a header?

Example

An HTTP request with following header

X-MY-CUSTOM-HEADER: accepted-value

should be forwarded to service1

An HTTP request with following header

X-MY-CUSTOM-HEADER: invalid-value

should be blocked

If is possible could you detail a bit or point to some documentation as I wasn't able to find documentation for such usecase

--
kubernetes
kubernetes-ingress

2 Answers

12/23/2019

Traefik 2.0, Istio and Ambassador support Header based routing.

More information from https://discuss.kubernetes.io/t/header-based-ingress-routing/6322

-- Green Lei
Source: StackOverflow

12/7/2018

If you are using an nginx ingress controller you can do it with a Configuration snippet annotation. Then you can add something like this:

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; 
  }

Some more info here.

-- Rico
Source: StackOverflow