Ingress Controller

El ingress controller es un servicio que se ejecuta en un pod y que permite observar los objetos endpoint. Cuando un nuevo objeto es creado, ingress controller lo detecta y aplica las reglas que tenga definidas para enrutar el tráfico (normalmente HTTP).

En resumen, permite enrutar tráfico desde fuera de un cluster a los servicios del mismo.

Cualquier tecnología que sirviera como proxy inverso se puede utilizar como ingress controller. Uno de los más comunes es nginx.

Ejemplos de configuración de nginx para diferentes plataformas ( docker desktop, minikube, AWS, GCP, Azure…)

Instalación de un ingress controller

Podemos instalar el ingress controller basado en nginx con helm. En esta página tengo la documentación sobre Helm.

Primero añadimos el repositorio de ingress-nginx y actualizamos:

 helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
 helm repo update

Descargamos el chart:

helm fetch ingress-nginx/ingress-nginx --untar

Modificamos el fichero values.yaml y en la línea que pone kind: Deployment actualizamos el valor por DaemonSet quedando así:

## DaemonSet or Deployment
kind: DaemonSet

Instalamos el chart que acabamos de modificar:

helm install myingress .

Ahora ya podemos añadir objetos de tipo ingress en kubernetes.

Manifiesto de kubernetes

Podemos declarar el objeto del manifiesto de kubernetes como en el siguiente ejemplo:

apiVersion: networking.k8s.io/v1beta1 
kind: Ingress 
metadata:
rules:
  - host: <hostname> 
    http:
      paths:
      - backend:
          service:
            name: <nombre> 
            port:
              number: <puerto> 
        path: /
        pathType: ImplementationSpecific

Gestión de objetos ingress

Los principales comando de gestión son:

kubectl get ingress
kubectl delete ingress <nombre>
kubectl edit ingress <nombre>

Última modificación August 12, 2022: Helm e ingress de Kubernetes (1388655)