Introducció
Ingress Controllers són components essencials en Kubernetes per gestionar l'accés extern als serveis dins del clúster. Proporcionen una manera de definir regles per a la distribució del tràfic HTTP i HTTPS, permetent la configuració de rutes, balanceig de càrrega, terminació SSL, i més.
Objectius d'Aprenentatge
En aquesta secció, aprendràs:
- Què és un Ingress i un Ingress Controller.
- Com configurar un Ingress Controller en un clúster de Kubernetes.
- Com definir recursos Ingress per gestionar el tràfic HTTP/HTTPS.
- Bones pràctiques i consells per utilitzar Ingress Controllers.
Què és un Ingress?
Un Ingress és un objecte de Kubernetes que gestiona l'accés extern als serveis dins del clúster, normalment HTTP. Un Ingress pot proporcionar:
- Rutes HTTP: Definició de regles per a la distribució del tràfic HTTP/HTTPS.
- Balanceig de Càrrega: Distribució del tràfic entre múltiples serveis.
- Terminació SSL: Gestió de certificats SSL per a connexions HTTPS.
Exemple d'un Recurs Ingress
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: example-service port: number: 80
En aquest exemple, el recurs Ingress defineix una regla per dirigir el tràfic HTTP a example.com
cap al servei example-service
en el port 80.
Què és un Ingress Controller?
Un Ingress Controller és un component que llegeix els recursos Ingress i configura un proxy de tràfic per implementar les regles definides. Hi ha diversos Ingress Controllers disponibles, com ara:
- NGINX Ingress Controller
- Traefik
- HAProxy
- Istio
Instal·lació d'un Ingress Controller
A continuació, es mostra com instal·lar l'NGINX Ingress Controller utilitzant Helm, una eina de gestió de paquets per Kubernetes.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update helm install my-ingress-controller ingress-nginx/ingress-nginx
Aquestes comandes afegeixen el repositori d'Helm per a l'NGINX Ingress Controller, actualitzen els repositoris i instal·len l'Ingress Controller en el clúster.
Definició de Recursos Ingress
Exemple de Configuració d'Ingress amb SSL
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: - example.com secretName: example-tls rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: example-service port: number: 80
En aquest exemple, el recurs Ingress defineix una regla per dirigir el tràfic HTTPS a example.com
cap al servei example-service
en el port 80, utilitzant el secret example-tls
per a la terminació SSL.
Exercicis Pràctics
Exercici 1: Crear un Ingress per a un Servei
-
Crea un servei de desplegament senzill:
apiVersion: apps/v1 kind: Deployment metadata: name: hello-world spec: replicas: 2 selector: matchLabels: app: hello-world template: metadata: labels: app: hello-world spec: containers: - name: hello-world image: k8s.gcr.io/echoserver:1.4 ports: - containerPort: 8080
-
Exposa el desplegament com un servei:
apiVersion: v1 kind: Service metadata: name: hello-world spec: selector: app: hello-world ports: - protocol: TCP port: 80 targetPort: 8080
-
Crea un recurs Ingress per exposar el servei:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: hello-world-ingress spec: rules: - host: hello-world.local http: paths: - path: / pathType: Prefix backend: service: name: hello-world port: number: 80
Solució
-
Aplica els manifests YAML per crear el desplegament, el servei i l'Ingress:
kubectl apply -f deployment.yaml kubectl apply -f service.yaml kubectl apply -f ingress.yaml
-
Verifica que l'Ingress s'ha creat correctament:
kubectl get ingress
-
Afegeix una entrada al fitxer
/etc/hosts
per accedir al servei:<Ingress Controller IP> hello-world.local
-
Accedeix al servei mitjançant el navegador web o
curl
:curl http://hello-world.local
Resum
En aquesta secció, has après què són els Ingress Controllers i com configurar-los en un clúster de Kubernetes. També has après a definir recursos Ingress per gestionar el tràfic HTTP/HTTPS cap als serveis dins del clúster. Els Ingress Controllers són una eina poderosa per gestionar l'accés extern i proporcionar funcionalitats avançades com el balanceig de càrrega i la terminació SSL.
Curs de Kubernetes
Mòdul 1: Introducció a Kubernetes
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Mòdul 2: Components Bàsics de Kubernetes
Mòdul 3: Gestió de Configuració i Secrets
Mòdul 4: Xarxes en Kubernetes
Mòdul 5: Emmagatzematge en Kubernetes
Mòdul 6: Conceptes Avançats de Kubernetes
Mòdul 7: Monitorització i Registre
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster