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.
Instalación de un ingress controller
Podemos instalar el ingress controller basado en nginx con [[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>