0Pricing
DevOps Bootcamp · Lezione

Service per l'accesso di rete

Renda accessibili le applicazioni all'interno e all'esterno del cluster utilizzando i vari tipi di Service di Kubernetes.

Service per l'accesso di rete è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 2 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.

Che cos'è un Service Kubernetes?

In Kubernetes, i Pod sono le unità distribuibili più piccole. Sono progettati per essere effimeri, cioè possono essere creati, eliminati o sostituiti in qualsiasi momento, ricevendo spesso nuovi indirizzi IP.

Questa natura dinamica rende difficile per le altre applicazioni trovarli e comunicare con loro in modo affidabile. È qui che entrano in gioco i Service!

Service per l'accesso di rete — illustrazione 1

Fornire un accesso di rete stabile

Un Service Kubernetes funge da endpoint di rete stabile per un insieme di Pod. Pensatelo come un indirizzo permanente che non cambia, anche se cambiano i Pod che si trovano dietro di esso.

  • I Service forniscono un indirizzo IP e un nome DNS coerenti.
  • Possono distribuire il traffico tra più Pod.
  • Garantiscono la disponibilità continua quando i Pod vengono ridimensionati o riavviati.

Collegare i Pod ai Service

Come fa un Service a sapere verso quali Pod instradare il traffico? Utilizza label e selector.

Quando create i Pod, assegnate loro delle label (coppie chiave-valore come app: my-app). Un Service specifica quindi un selector che corrisponde a queste label, creando un collegamento dinamico.

Accesso interno con ClusterIP

ClusterIP è il tipo di Service predefinito e più comune. Assegna un indirizzo IP interno stabile all'interno del cluster Kubernetes. Questo IP è raggiungibile solo da altri Pod o Node all'interno del cluster.

È ideale per i servizi backend (come un database o un'API) che devono comunicare solo con altri servizi all'interno dell'applicazione.

Definire un Service ClusterIP

Ecco una semplice definizione YAML per un Service ClusterIP. Notate il selector che corrisponde alla label app: my-backend e il modo in cui port viene associato a targetPort.

apiVersion: v1
kind: Service
metadata:
  name: my-backend-service
spec:
  selector:
    app: my-backend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080 # Port your application listens on
  type: ClusterIP

Accesso esterno con NodePort

Un Service NodePort espone l'applicazione su una porta statica sull'indirizzo IP di ogni Node. In questo modo il servizio è accessibile dall'esterno del cluster utilizzando l'indirizzo IP di qualsiasi Node e la porta specificata.

Il valore di nodePort rientra generalmente nell'intervallo 30000-32767. È utile per un semplice accesso esterno o negli ambienti di sviluppo.

Definire un Service NodePort

Per esporre esternamente il servizio tramite un NodePort, impostate type: NodePort. Potete specificare facoltativamente un nodePort; in caso contrario, Kubernetes ne sceglierà uno automaticamente.

apiVersion: v1
kind: Service
metadata:
  name: my-frontend-service
spec:
  selector:
    app: my-frontend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80 # Port your application listens on
      nodePort: 30080 # Optional: specific port on the Node
  type: NodePort

Load balancer cloud

Il tipo di Service LoadBalancer è progettato per gli ambienti cloud. Quando create questo tipo di Service, il cloud provider (come AWS, GCP o Azure) esegue automaticamente il provisioning di un load balancer esterno.

Questo load balancer riceve un indirizzo IP pubblico e instrada il traffico esterno direttamente verso i Pod, spesso con funzionalità avanzate come la terminazione SSL.

Definire un Service LoadBalancer

Per le applicazioni accessibili pubblicamente in un cluster Kubernetes cloud, LoadBalancer è la scelta ideale. Semplifica notevolmente la gestione dell'accesso esterno.

apiVersion: v1
kind: Service
metadata:
  name: my-web-app-lb
spec:
  selector:
    app: my-web-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Scegliere il Service giusto

Il vostro team sta distribuendo una nuova applicazione su Kubernetes. Considerate i seguenti scenari:

  • Un'API backend a cui devono accedere solo altri servizi all'interno del cluster.
  • Un web server frontend che deve essere accessibile da Internet e che state distribuendo presso un cloud provider (AWS, GCP o Azure).

Quale tipo di Service è più adatto per il web server frontend?

Riepilogo: Service per l'accesso di rete

Abbiamo imparato che i Service Kubernetes forniscono un accesso di rete stabile a Pod dinamici. Sono essenziali per consentire alle applicazioni di comunicare in modo affidabile.

  • ClusterIP: solo per la comunicazione interna al cluster.
  • NodePort: espone un servizio su una porta statica sull'IP di ogni Node, rendendolo accessibile esternamente in casi d'uso specifici.
  • LoadBalancer: si integra con i cloud provider per eseguire il provisioning di un load balancer esterno destinato all'accesso pubblico.

Scegliere il tipo di Service corretto è fondamentale per controllare il modo in cui le applicazioni vengono esposte.

Domande Frequenti

La lezione «Service per l'accesso di rete» è gratuita?

Sì — il testo completo di «Service per l'accesso di rete» è 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 «Service per l'accesso di rete»?

Renda accessibili le applicazioni all'interno e all'esterno del cluster utilizzando i vari tipi di Service di Kubernetes. 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 2 di 4.

Quanto tempo richiede la lezione «Service per l'accesso di rete»?

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. Deployment per app stateless
  2. Service per l'accesso di rete
  3. ConfigMap e Secret
  4. Ingress e routing esterno
← Torna a DevOps Bootcamp