0Pricing
DevOps Bootcamp · Lezione

Ingress per l'accesso esterno

Configuri Ingress per gestire l'accesso esterno ai Service, offrendo routing HTTP/S e bilanciamento del carico.

Ingress per l'accesso esterno è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Oltre NodePort e LoadBalancer

Abbiamo esaminato diversi tipi di Service Kubernetes, come NodePort e LoadBalancer, per esporre le applicazioni all'esterno.

Sebbene siano utili, possono diventare difficili da gestire quando i requisiti di accesso esterno sono complessi, soprattutto quando è necessario ospitare molte applicazioni o API su un unico indirizzo IP con regole di instradamento specifiche.

È qui che entra in gioco Ingress, che offre una soluzione più potente e flessibile.

Introduzione a Kubernetes Ingress

Ingress è un oggetto API di Kubernetes che gestisce l'accesso esterno ai Service di un cluster, principalmente per il traffico HTTP e HTTPS.

  • Funziona come punto di ingresso unico per le richieste esterne.
  • Consente l'instradamento HTTP/S in base agli hostname o ai percorsi URL.
  • Può inoltre fornire funzionalità come la terminazione SSL/TLS e il bilanciamento del carico.

Consideri Ingress come un intelligente controllore del traffico che indirizza il traffico web ai Service interni corretti.

Il controller Ingress

Una risorsa Ingress consiste semplicemente in un insieme di regole e non gestisce direttamente il traffico. Per rendere operativo Ingress, è necessario che nel cluster sia in esecuzione un Ingress Controller.

Ingress Controller monitora le risorse Ingress e configura un load balancer esterno (o un reverse proxy) in base alle regole definite.

Tra gli Ingress Controller più diffusi ci sono Nginx, Traefik e quelli specifici dei provider cloud, come GCE Ingress per Google Cloud o AWS Load Balancer Controller.

Come funzionano le regole Ingress

Ingress definisce regole che associano le richieste esterne in ingresso a specifici Service backend all'interno del cluster. In genere, queste regole specificano:

  • Host: il nome di dominio (ad esempio www.my-app.com).
  • Path: il percorso URL (ad esempio /api, /blog).
  • Backend Service: il Service Kubernetes e la porta a cui inoltrare il traffico.

Ingress Controller valuta queste regole per ogni richiesta in ingresso, così da determinare la destinazione corretta.

Creazione di un YAML Ingress

Come le altre risorse Kubernetes, Ingress viene definito usando un manifest YAML. Ecco una struttura di base che illustra i campi principali:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-web-service
            port:
              number: 80

Ingress semplice basato sul percorso

Creiamo una risorsa Ingress che instradi tutto il traffico per il percorso radice (/) di myapp.example.com verso un Service denominato my-web-service sulla porta 80.

Prima di applicare questo Ingress, verifichi che nel cluster siano in esecuzione un Deployment e un Service denominati my-web-service.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: basic-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-web-service
            port:
              number: 80

Deployment di Ingress

Per eseguire il deployment della risorsa Ingress, salvi il YAML in un file (ad esempio basic-ingress.yaml) e usi kubectl apply:

kubectl apply -f basic-ingress.yaml

Può verificare lo stato di Ingress con kubectl get ingress. Ingress Controller configurerà quindi il load balancer esterno in base a queste regole.

Per eseguire un test, in genere dovrà aggiornare il file locale /etc/hosts (o il DNS) in modo che punti myapp.example.com all'indirizzo IP esterno di Ingress Controller.

Esempio di instradamento basato sull'host

Ingress è perfetto per ospitare più applicazioni su un unico indirizzo IP esterno usando hostname diversi. In questo esempio, app1.example.com viene instradato verso service-app1, mentre app2.example.com viene instradato verso service-app2.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: host-routing-ingress
spec:
  rules:
  - host: app1.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-app1
            port:
              number: 80
  - host: app2.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-app2
            port:
              number: 80

Più percorsi, un solo host

È anche possibile instradare percorsi URL diversi dello stesso hostname verso Service backend differenti. Questa soluzione è ideale per le architetture a microservizi o per sezioni diverse di una singola applicazione.

Ad esempio, le richieste a api.example.com/users vengono indirizzate a users-service, mentre quelle a api.example.com/products vengono indirizzate a products-service.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: path-routing-ingress
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /users
        pathType: Prefix
        backend:
          service:
            name: users-service
            port:
              number: 80
      - path: /products
        pathType: Prefix
        backend:
          service:
            name: products-service
            port:
              number: 80

Verifica dello scopo di Ingress

Quali delle seguenti sono i principali vantaggi dell'utilizzo di Kubernetes Ingress?

Riepilogo: Ingress per un instradamento intelligente

Ottimo lavoro! Ha imparato a conoscere Kubernetes Ingress, un componente essenziale per gestire il modo in cui gli utenti esterni interagiscono con le applicazioni.

  • Ingress offre un instradamento HTTP/S flessibile basato su hostname e percorsi URL.
  • Richiede un Ingress Controller (come Nginx) che monitori le regole Ingress e configuri l'instradamento.
  • Semplifica l'esposizione di più Service tramite un unico indirizzo IP esterno, rendendo il cluster più efficiente e facile da gestire.

Imparare a usare Ingress è fondamentale per creare applicazioni cloud-native robuste e accessibili.

Domande Frequenti

La lezione «Ingress per l'accesso esterno» è gratuita?

Sì — il testo completo di «Ingress per l'accesso esterno» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Ingress per l'accesso esterno»?

Configuri Ingress per gestire l'accesso esterno ai Service, offrendo routing HTTP/S e bilanciamento del carico. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Ingress per l'accesso esterno»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Esposizione delle app con i Service
  2. Tipi di Service: ClusterIP, NodePort, LoadBalancer
  3. Ingress per l'accesso esterno
  4. DNS e service discovery
← Torna a DevOps Bootcamp