0Pricing
DevOps Bootcamp · Lezione

Comprendere i Deployment

Scopra come i Deployment automatizzano la gestione di Pod e ReplicaSet per le applicazioni stateless.

Comprendere i Deployment è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 1 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.

Cosa sono i Deployment?

Benvenuto! In Kubernetes, gestire le applicazioni significa gestire i relativi Pod. Tuttavia, gestire direttamente i singoli Pod o persino i ReplicaSet può diventare complesso.

Un Deployment è un oggetto di livello superiore che semplifica la gestione delle applicazioni stateless. Lo si può considerare il responsabile dell'applicazione.

  • Definisce lo stato desiderato dell'applicazione.
  • Garantisce il mantenimento di tale stato anche in caso di errore dei Pod.
  • Automatizza gli aggiornamenti e i rollback.

Perché usare i Deployment?

I Deployment offrono vantaggi significativi per eseguire le applicazioni in modo affidabile in Kubernetes:

  • Gestione automatizzata: gestiscono la creazione, la scalabilità e l'eliminazione dei Pod.
  • Autoriparazione: se un Pod si arresta in modo anomalo, il Deployment lo sostituisce automaticamente per mantenere il numero desiderato di repliche.
  • Aggiornamenti dichiarativi: descrive il nuovo stato desiderato e il Deployment determina come raggiungerlo, ad esempio eseguendo il rollout di nuove versioni.

Sono il metodo consigliato per gestire le applicazioni stateless.

Ruolo principale dei Deployment

In sostanza, un Deployment gestisce i ReplicaSet. Il compito di un ReplicaSet è garantire che sia sempre in esecuzione un numero specificato di repliche dei Pod.

Un Deployment usa quindi i ReplicaSet per raggiungere il proprio obiettivo: garantire che l'applicazione disponga del numero corretto di Pod integri in esecuzione, secondo la definizione fornita.

Questa astrazione semplifica notevolmente la definizione e la gestione del ciclo di vita dell'applicazione.

Anatomia di un YAML per Deployment

Come la maggior parte degli oggetti Kubernetes, i Deployment vengono definiti usando YAML. Ecco le sezioni principali che si trovano in genere:

  • apiVersion e kind: identificano il tipo di oggetto (Deployment).
  • metadata: nome, etichette e così via del Deployment stesso.
  • spec: la definizione principale, che include:
    • replicas: il numero desiderato di Pod.
    • selector: il modo in cui il Deployment individua i Pod che gestisce.
    • template: il modello dei Pod da creare.

Il template del Pod

Il campo template all'interno di spec di un Deployment è estremamente importante. Si tratta essenzialmente di una definizione completa di un Pod.

Tutti i Pod creati da questo Deployment useranno questo template. Ciò significa che è possibile definire:

  • Le immagini dei container da usare.
  • Le porte da esporre.
  • Le variabili d'ambiente.
  • Le richieste e i limiti delle risorse.
  • E molto altro.

Le modifiche a questo template attivano aggiornamenti dell'applicazione.

Creazione di un Deployment semplice

Definiamo un Deployment per un semplice server web Nginx. Desideriamo 3 repliche.

Noti che selector.matchLabels deve corrispondere a template.metadata.labels. In questo modo si indica al Deployment quali Pod gestisce.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Applicazione del Deployment

Per creare questo Deployment nel cluster Kubernetes, ad esempio Minikube, si usa il comando kubectl apply. Salvi il codice YAML precedente come nginx-deployment.yaml.

kubectl creerà l'oggetto Deployment. Il controller del Deployment rileverà quindi questo oggetto e agirà creando un ReplicaSet, che a sua volta creerà i 3 Pod Nginx.

kubectl apply -f nginx-deployment.yaml

Ispezione del Deployment

Dopo averlo applicato, è possibile controllare lo stato del Deployment e dei Pod che gestisce:

  • kubectl get deployments: mostra il Deployment.
  • kubectl get replicasets: mostra il ReplicaSet creato dal Deployment.
  • kubectl get pods -l app=nginx: mostra i Pod gestiti dal Deployment tramite il relativo selettore di etichette.
  • kubectl describe deployment my-nginx-deployment: fornisce informazioni dettagliate sul Deployment, inclusi gli eventi.
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deployment

Mantenimento dello stato desiderato

Una delle funzionalità più potenti dei Deployment è la capacità di mantenere lo stato desiderato. Se si definisce replicas: 3, il Deployment garantirà che siano sempre in esecuzione 3 Pod.

Provi a eliminare manualmente uno dei Pod Nginx (kubectl delete pod <pod-name>). Il Deployment ne creerà rapidamente uno nuovo per sostituirlo. Questa è l'autoriparazione in azione.

Verifica rapida

Quale tipo di applicazione viene gestito principalmente da un Deployment?

Riepilogo: comprendere i Deployment

Ottimo lavoro! Ha mosso i primi passi con i Deployment di Kubernetes.

  • I Deployment sono oggetti di alto livello per la gestione delle applicazioni stateless.
  • Automatizzano la creazione, la scalabilità e l'autoriparazione dei Pod gestendo i ReplicaSet.
  • Si definisce un Deployment usando un manifest YAML, specificando il numero desiderato di replicas e un template per i Pod.
  • kubectl apply crea il Deployment, mentre kubectl get/describe aiuta a monitorarlo.

Ora approfondiremo i ReplicaSet e il modo in cui garantiscono il numero desiderato di Pod.

Domande Frequenti

La lezione «Comprendere i Deployment» è gratuita?

Sì — il testo completo di «Comprendere i Deployment» è 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 «Comprendere i Deployment»?

Scopra come i Deployment automatizzano la gestione di Pod e ReplicaSet per le applicazioni stateless. 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 1 di 4.

Quanto tempo richiede la lezione «Comprendere i Deployment»?

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. Comprendere i Deployment
  2. Scalabilità delle applicazioni con i ReplicaSet
  3. Aggiornamenti progressivi e rollback
  4. Strategie di deployment: blue-green e canary
← Torna a DevOps Bootcamp