Ingress Controllers
There are numerous ingress controllers available for Kubernetes. This includes options officially supported by the Kubernetes project and others third-party controllers. While Humanitec is capable of working with any ingress controller, it defaults to assuming the ingress-nginx controller is used.
This page provides a general guide to configuring Humanitec to work with any ingress controller as well as more details on the 3 Kubernetes supported controllers of ingress-nginx, AWS Load Balancer Controller and ingress-gce.
Limitations
Humanitec currently does not support dynamically generated load balancers. This means that the load balancer IP or DNS name must be known before a deployment commences.
Configure ingress controllers #
There are 2 areas that required updates work configure an ingress controller in Humanitec:
-
The
loadbalancer
field in thek8s-cluster
resource type that represents the Kubernetes Cluster.This must always be set
-
The
ingressClassName
that is set in theingress
resource.This is only required if you use an ingress controller other than ingress-nginx or have defined your own ingress class.
Working with ingress-nginx #
Documentation, including installation instructions, can be found here.
Determining the load-balancer #
The load-Balancer IP or DNS name can be determined for a default ingress-nginx installation via:
kubectl get service ingress-nginx-controller -n ingress-nginx
The EXTERNAL-IP
field contains the IP address of the load balancer that has been provisioned.
Working with AWS load balancer ingress controller #
Documentation, including installation instructions, can be found here.
Ingress annotations #
In general, the following annotations must be set on the ingress:
Annotation | Value | Description |
---|---|---|
alb.ingress.kubernetes.io/target-type |
ip |
Allows ingress to route to normal services of type ClusterIP |
alb.ingress.kubernetes.io/group.name |
humanitec-ingress-group |
Ensures that only a single ALB is provisioned for all ingress objects in the cluster - working around the limitation mentioned at the top of the page. |
Working with gce-ingress #
Coming soon