# 05 | Ingress Controller = NGINX [https://kubernetes.github.io/ingress-nginx/](https://kubernetes.github.io/ingress-nginx/) [https://github.com/kubernetes/ingress-nginx](https://github.com/kubernetes/ingress-nginx) The ingress controller provides external access to services in the cluster by acting as a reverse proxy. In this case, I've selected nginx which is simple to configure, and very fast. It does not have as many fancy features as some other options though. ```bash helm upgrade --install ingress-nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace -f values.yaml ``` Example usage: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-mandelmapper annotations: cert-manager.io/issuer: letsencrypt spec: ingressClassName: nginx rules: - host: mandelmap.home.stevenpolley.net http: paths: - path: / pathType: Prefix backend: service: name: mandelmapper port: number: 6161 tls: - hosts: - mandelmap.home.stevenpolley.net secretName: mandelmap-cert --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-myservicea spec: ingressClassName: nginx rules: - host: myservicea.foo.org http: paths: - path: / backend: service: name: myservicea port: number: 8080 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-myserviceb cert-manager.io/issuer: letsencrypt spec: ingressClassName: nginx rules: - host: myserviceb.foo.org http: paths: - path: / backend: service: name: myserviceb port: number: 8443 tls: - hosts: - myserviceb.foo.org secretName: example-tls --- # A secret must also be provided, this will be created by cert-manager apiVersion: v1 kind: Secret metadata: name: example-tls data: tls.crt: tls.key: type: kubernetes.io/tls ```