Deploy di Applicazioni su Kubernetes: Esempi Pratici

Kubernetes è una delle piattaforme più utilizzate per gestire e orchestrare applicazioni containerizzate. Tuttavia, eseguire il deploy di un’applicazione su Kubernetes può sembrare complesso, specialmente per chi è alle prime armi. In questa guida pratica, vedremo come eseguire il deploy di un’applicazione su Kubernetes utilizzando file YAML, con esempi chiari e dettagliati. Alla fine di questo articolo, sarai in grado di eseguire il deploy di applicazioni su Kubernetes in modo autonomo.

Prerequisiti per il Deploy su Kubernetes

Prima di iniziare con il deploy, è importante avere alcune cose già pronte:

  1. Un Cluster Kubernetes Funzionante: Se non ne hai uno, puoi configurarne uno locale con Minikube o un cluster remoto con provider come Google Kubernetes Engine (GKE), Amazon EKS o Azure AKS.
  2. kubectl Configurato: kubectl è lo strumento da riga di comando per interagire con il cluster Kubernetes. Assicurati che sia installato e configurato per comunicare con il tuo cluster.
  3. Un’immagine Docker dell’Applicazione: Dovresti avere un’immagine Docker già pronta e disponibile su un registry pubblico (come Docker Hub) o privato.

Cos’è un File YAML in Kubernetes?

Prima di vedere gli esempi pratici, è fondamentale comprendere cos’è un file YAML in Kubernetes. YAML (YAML Ain’t Markup Language) è un formato leggibile dall’uomo utilizzato per definire la configurazione delle risorse in Kubernetes. Attraverso i file YAML, è possibile descrivere come un’applicazione dovrebbe essere distribuita nel cluster, specificando dettagli come immagini del container, quantità di risorse, replica dei pod, servizi esposti e molto altro.

Creare un Deployment di Base

Per iniziare, vediamo come creare un deployment di base per un’applicazione semplice. In questo esempio, utilizzeremo un’applicazione web containerizzata con Nginx.

  1. Crea un File YAML per il Deployment: Crea un file chiamato nginx-deployment.yaml con il seguente contenuto:

Spiegazione del File YAML:

  • apiVersion: Specifica la versione dell’API Kubernetes utilizzata.
  • kind: Tipo di risorsa, in questo caso Deployment.
  • metadata: Contiene il nome del deployment.
  • spec: Specifica il numero di repliche (pod) e le informazioni sul container, come l’immagine Docker e la porta esposta.
  1. Esegui il Deploy del File YAML: Esegui il seguente comando per creare il deployment nel cluster:

Questo comando eseguirà il deploy dell’applicazione definita nel file YAML. Kubernetes creerà tre pod dell’applicazione Nginx, come specificato.

  1. Verifica lo Stato del Deployment: Per verificare che tutto sia andato a buon fine, esegui il seguente comando:

Dovresti vedere il deployment nginx-deployment con tre repliche pronte.

Esposizione dell’Applicazione con un Service

Ora che il nostro deployment è attivo, dobbiamo esporre l’applicazione al di fuori del cluster utilizzando un Service. I Service in Kubernetes permettono di esporre i pod all’interno del cluster o all’esterno, come nel caso di un servizio di tipo LoadBalancer o NodePort.

  1. Crea un File YAML per il Service: Crea un file chiamato nginx-service.yaml con il seguente contenuto:

Spiegazione del File YAML:

  • apiVersion: Specifica la versione dell’API Kubernetes utilizzata.
  • kind: Tipo di risorsa, in questo caso Service.
  • metadata: Contiene il nome del service.
  • spec: Specifica il tipo di service (NodePort), il selettore per trovare i pod associati e le porte da esporre.
  1. Esegui il Deploy del Service: Esegui il seguente comando per creare il service nel cluster:

Questo comando esporrà l’applicazione Nginx sulla porta 30007 di ogni nodo del cluster.

  1. Verifica lo Stato del Service: Per verificare che il service sia attivo, esegui il seguente comando:

Dovresti vedere il nginx-service con il tipo NodePort e la porta correttamente configurata.

Aggiornare un Deployment Esistente

Uno dei vantaggi di Kubernetes è la possibilità di aggiornare le applicazioni in modo continuo senza downtime. Vediamo come aggiornare il deployment Nginx a una nuova versione.

  1. Modifica il File YAML del Deployment: Cambia l’immagine del container nel file nginx-deployment.yaml da:

a:

  1. Applica l’Aggiornamento: Esegui il comando per aggiornare il deployment:

Kubernetes gestirà l’aggiornamento dei pod uno alla volta, assicurando che ci siano sempre pod disponibili durante il processo.

  1. Verifica l’Aggiornamento: Controlla che l’aggiornamento sia andato a buon fine con il seguente comando:

Dovresti vedere un messaggio che conferma che il rollout è stato completato con successo.

Cancellare un Deployment

Quando non hai più bisogno di un deployment o un servizio, puoi rimuoverli facilmente con i seguenti comandi:

  1. Cancella il Deployment:
  1. Cancella il Service:

Questi comandi rimuoveranno rispettivamente il deployment e il service dal cluster Kubernetes.

Best Practices per il Deploy su Kubernetes

Per assicurarti che il deploy delle applicazioni su Kubernetes sia sempre efficiente e sicuro, segui queste best practices:

  1. Usa le Risorse Adeguate: Definisci limiti di risorse (CPU e memoria) per i pod per evitare che un’applicazione consumi tutte le risorse del cluster.
  2. Utilizza ConfigMap e Secret: Evita di inserire informazioni sensibili direttamente nei file YAML. Usa ConfigMap e Secret per gestire configurazioni e credenziali in modo sicuro.
  3. Monitora lo Stato del Cluster: Usa strumenti di monitoraggio come Prometheus e Grafana per tenere sotto controllo le performance delle tue applicazioni e l’integrità del cluster.

Conclusione

Con questa guida, hai appreso come eseguire il deploy di un’applicazione su Kubernetes, esporre il servizio e gestire aggiornamenti e cancellazioni. Ora sei pronto per sperimentare e implementare le tue applicazioni containerizzate su Kubernetes. Continua a esplorare e sperimentare con diverse configurazioni e funzionalità per sfruttare al meglio la potenza di Kubernetes!

Lascia un commento