Skip to content

Routing to multiple apps behind same DNS

When multiple applications want to use the same DNS of <subdomain>.endress.com there needs to be routing configurations. To allow this kind of setup we can provide a gateway.

gateway routing

HTTPRoute

The HTTPRoute has to be deployed by the application developers. A basic configuration of the route looks as follows:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: <route name>
spec:
parentRefs:
- name: gateway-waf
namespace: next-gateway-waf
sectionName: https-<company>-<project>[-<suffix>]
rules:
- matches:
- path:
type: PathPrefix
value: /<routing path>
backendRefs:
- name: <name of kubernetes service>
port: <port of kubernetes service>
  • route name : The name of the route can be chosen freely.
  • parentRefs.name : needs to point to the section of the project (follows convention https-<company>-<project>[-<suffix>] with a configurable suffix if there are multiple configurations in the same project. If used from another project, the name of the source project needs to be used).
  • routing path : path(s) that should route to the services configured in the backendRefs. Other routing options than the path are possible ( see HTTPRoute).
  • backendRefs.name : Name of the Kubernetes service that routes to the application pods.
  • backendRefs.port : Port of Kubernetes service.

Usage from other project

If project X creates a gateway behind DNS <subdomain>.endress.com, it is also possible to route traffic to other applications in a different project. This needs to be explicitly allowed and can be configured by the NEXT-Platform team.

Routing rules

There can be an unlimited number of HTTPRoute in potentially different namespaces, but the incoming request will only be routed to exactly one endpoint. It is in the responsibility of the application developers to configure routes that do not conflict. The matching rules can be found in the HTTPRouteRule reference.