Kubernetes ingress using YARP as a reverse proxy and load balancer.
The ingress solution can run in two modes:
- Standalone controller: a single application that both watches cluster Ingress resources and handles routing.
- Controller + Monitor: the monitor watches cluster Ingress resources and builds an YARP configuration; the controller retrieves that configuration from the monitor and performs routing.
The only installation method currently supported is through yarp-ingress Helm chart.
helm repo add yarp-ingress https://yarp-contrib.github.io/kubernetes-ingress
helm repo updatehelm install yarp-ingress yarp-ingress/yarp-ingressThis installs YARP ingress on the cluster in the default configuration.
Check chart's README and its values for information on how to install in different modes and cloud providers.
Pre-built images are published to GitHub Container Registry.
docker pull ghcr.io/yarp-contrib/kubernetes-ingress/controller:latestAvailable input arguments:
- --controller-class (-c): IngressClass controller name (maps to IngressClass.spec.controller). Default:
microsoft.com/ingress-yarp - --controller-service-name (-s): Name of the Kubernetes Service where the controller is running. Default:
yarp-ingress - --controller-service-namespace (-n): Namespace of the Kubernetes Service where the controller is running. Default:
yarp - --monitor-url (-m): URL where the monitor exposes its dispatch endpoint. Must include the path /api/dispatch. Required when controller and monitor run separately.
docker pull ghcr.io/yarp-contrib/kubernetes-ingress/monitor:latestAvailable input arguments:
- --controller-class (-c): IngressClass controller name (maps to IngressClass.spec.controller). Default:
microsoft.com/ingress-yarp - --controller-service-name (-s): Name of the Kubernetes Service where the controller is running. Default:
yarp-ingress - --controller-service-namespace (-n): Namespace of the Kubernetes Service where the controller is running. Default:
yarp
- This controller uses Yarp.Kubernetes.Controller internally and so it supports all its optional Ingress annotations.
- Both applications (controller and monitor) make available
/health/liveand/health/readyendpoints on port 10264. Currently they only return a 200/OK response, with no further internal logic. - SSL/TLS termination is currently not (directly) supported. You can do the termination yourself, prior to sending the traffic to the controller's service.