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

  1. 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
    
  2. 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
    
  3. 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ó

  1. 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
    
  2. Verifica que l'Ingress s'ha creat correctament:

    kubectl get ingress
    
  3. Afegeix una entrada al fitxer /etc/hosts per accedir al servei:

    <Ingress Controller IP> hello-world.local
    
  4. 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

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

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats