Creare immagini applicative custom da cui far partire istanze Virtuali o container Docker è un modo per ridurre drasticamente il boot time ed aumentare l’affidabilità della soluzione applicativa. Inoltre pre-installando le dipendenze ed il software di terze parti nella tua immagine custom puoi superare eventuali problemi di disponibilità di prodotti che non sono sotto il tuo diretto controllo.
E’ possibile chiaramente scegliere quanto software includere nell’immagine custom e le due soluzioni più comuni sono:
- una baseline image che contiene il minimo indispensabile come per es. configurazioni basiche, remote logging e security patch;
- una immutable image che contiene tutto il necessario per deployare l’applicazione come per es. database connnection, sensitive data, metadata e molto altro.
In un contesto di CI/CD la soluzione da ricercare è quella della immutable image ed è quella che affrontiamo di seguito. Contattaci subito e senza impegno per una consulenza sull’argomento.
Il processo di Building
Il Building di immagini segue quasi il medesimo percorso del Building di software e pertanto avrai l’applicazione di codice e script all’immagine e quindi la creazione di un artifact. L’artifact supererà quindi dei test e sarà inserito in un processo di controllo della versione. Implementando strumenti di DevOps, il processo di Building e Deploy sarà automatizzato e si otterrà una sistema efficiente ed affidabile.
Un’architettura di automated image building pipeline con Jenkins, Packer e Kubernetes
Per creare una pipeline automatizzata di building di immagini sono necessari i seguenti tool:
- Jenkins: un tool open source di continuous integration (CI). Attraverso Jenkins è possibile effettuare il poll di repository Git ed abbinare codice e software per costruire l’immagine
- Packer: uno strumento per creare immagini identiche per differenti piattaforme partendo da una comune configurazione. Supporta Shell, Chef, Puppet, Ansible, e Salt. Packer è utilizzato dagli agenti di Jenkins per costruire le immagini.
- Kubernetes: una tecnologia per gestire i container Docker e permettere l’automazione del deploy.
In pratica viene definito un job su Jenkins in base all’immagine di cui vuoi effettuare il build, il job quindi effettua il poll da un repository, per es. Git, che contiene gli script di configurazione ed un template di Packer che a sua volta descrive come effettuare il build. Durante il processo di poll, quando viene identificato un cambiamento o una modifica applicativa, Jenkins attiva il building agent che usa Packer per effettuare il build e creare un’immagine Docker. L’immagine Docker può essere quindi caricata automaticamente in un repository opportuno, per es. Container Registry, e quindi lasciare a Kubernetes la possibilità di effettuare il deploy.
Realizzare un’architettura di questo tipo semplifica enormemente il lavoro di building applicativo e permette di realizzare un vero processo di CI/CD in ambito DevOps. Contattaci subito e senza impegno per una consulenza sull’argomento.
Glue Labs ed il CI/CD
Siamo Google Cloud, Google Workspace e G Suite Enterprise for Education Partner e, grazie alle competenze specialistiche maturate in tantissimi settori e con numerosi Clienti ed un solido gruppo aziendale, ti forniamo formazione avanzata su tool come Jenkins e Kubernetes ed assistenza e supporto per qualsiasi progetto. Contattaci subito e senza impegno per maggiori informazioni.