NGINX Ingress
The NGINX Ingress that can load balance Websocket, gRPC, TCP and UDP applications. It supports standard Ingress features such as content-based routing and TLS/SSL termination. Several NGINX and NGINX Plus features are available as extensions to Ingress resources through Annotations and the ConfigMap resource. It's one of the most common ways to do things such as serve web content out of your Kubernetes Cluster
Product: NGINX Ingress
Install Type: Helm (Chart)
Container Image: K8s Registry
Installation Details
You should have some kind of LoadBalancer defined, like MetalLB prior to installing so the ingress can obtain an IP from outside of the cluster. In addition, you may wish to set:
allowSnippetAnnotations: true
To allow some additional configuration on individual ingresses for certain deployments
For Helm charts, I generally pull the values to a file and modify that file for my specific needs:
helm show values ingress-nginx --repo https://kubernetes.github.io/ingress-nginx > values.yaml
This allows me to modify different environment specific configurations such as persistent storage and others. Please configure as appropriate for your environment. You can visit the NGINX Ingress Deployment Guide for more documentation about how to specifically install this in your environment.
I have deployed two ingress controllers in my lab. One that can take external traffic that I direct ports 80 and 443 from my router and another one that is for internal sites only that has no port mappings from outside my network. For example, I want to expose this page to the world at large so it's defined to use my internet facing ingerss (nginx). There is no need to expose things like Adminer, the Ad Guard Admin UI, or the Longhorn Admin UI with the same ingress I share services to the internet at large since only bad thing can happen from that. For these "internal only" services I leverage an ingress named "nginx-int" to provide consistent access without having to bother with NodePort IPs or constantly using Kubernetes port forwarding.
Once you have made all of your changes, deploy with the following:
helm upgrade --install ingress-nginx ingress-nginx \
-f values.yaml --repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace