Contattataci

Struttura del corso

Giorno 1 – Container e gestione delle immagini

Introduzione alle piattaforme container

  • Confronto tra distribuzione tradizionale di applicazioni e distribuzione basata su container
  • Container e macchine virtuali
  • Tempi di esecuzione e motori dei container
  • Il ruolo di Docker, Kubernetes e OpenShift
  • Architetture tipiche delle piattaforme container
  • Fluidi di sviluppo, test e produzione

Lavorare con i container

  • Esecuzione e gestione dei container
  • Ciclo di vita dei container
  • Avvio, arresto e rimozione dei container
  • Esecuzione di comandi all’interno dei container
  • Variabili d’ambiente
  • Mappatura delle porte
  • Log dei container
  • Monitoraggio dell’utilizzo delle risorse e ispezione dei processi

Creazione di immagini container

  • Struttura e livelli delle immagini
  • Creazione di Dockerfile e Containerfile
  • Selezione delle immagini di base
  • Aggiunta delle dipendenze dell’applicazione
  • Configurazione dei punti di ingresso e dei comandi esecutivi
  • Caching delle immagini
  • Riduzione della dimensione delle immagini
  • Creazione di immagini riproducibili in ogni ambiente

I registri container

  • Registri pubblici e privati
  • Etichettatura e gestione delle versioni delle immagini
  • Upload e download di immagini
  • Autenticazione per l’accesso ai registri
  • Gestione della conservazione e pulizia delle immagini
  • Aspetti di base riguardanti la sicurezza delle immagini

Reti e archiviazione dei container

  • Concetti fondamentali sulle reti dei container
  • Rete bridge per i container
  • Esposizione delle porte
  • Comunicazione tra container
  • Bind mount e volumi
  • Archiviazione persistente dei dati nei container
  • Considerazioni relative al backup dei dati

Esercizi pratici

  • Esecuzione e ispezione di container
  • Creazione di un’immagine applicativa
  • Configurazione delle porte e delle variabili d’ambiente
  • Pubblicazione di un’immagine su un registro
  • Memorizzazione dei dati persistenti al di fuori del container

Giorno 2 – Architettura e carichi di lavoro in Kubernetes

Fondamenti di Kubernetes

  • Finalità dell’orchestrazione dei container
  • Architettura di Kubernetes
  • Componenti del control plane
  • Nodi lavoratori
  • Server API
  • Scheduler
  • Controller
  • Stato desiderato e stato attuale del cluster
  • Comunicazione con il cluster tramite kubectl

Risorse di Kubernetes

  • Pod
  • ReplicaSet
  • Deployment
  • Namespace
  • Etichette e annotazioni
  • Selettori
  • Definizione dichiarativa delle risorse
  • Manifesti YAML

Distribuzione di applicazioni

  • Creazione e gestione dei Deployment
  • Scalabilità dei carichi di lavoro
  • Aggiornamento delle immagini container
  • Rolling update
  • Rollback in caso di problemi
  • Cronologia delle distribuzioni
  • Reinicio dei carichi di lavoro
  • Gestione del numero di repliche dell’applicazione

Configurazione applicativa

  • ConfigMap
  • Secret
  • Variabili d’ambiente
  • File di configurazione
  • Separazione del codice applicativo dalla configurazione
  • Gestione delle impostazioni specifiche per ogni ambiente

Gestione delle risorse

  • Richiesta di CPU e memoria da parte delle applicazioni
  • Limiti impostabili su CPU e memoria
  • Quote di utilizzo delle risorse
  • Range dei limiti consentiti
  • Implicazioni sulla pianificazione delle risorse
  • Rilevamento e diagnosi di problemi legati alle risorse disponibili

Esercizi pratici

  • Distribuzione di un’applicazione containerizzata
  • Creazione e aggiornamento dei manifest Kubernetes
  • Scalabilità dell’applicazione in base alle esigenze
  • Esecuzione di rolling update e rollback successivo
  • Configurazione delle impostazioni applicative tramite ConfigMap e Secret
  • Definizione e monitoraggio delle richieste e dei limiti risorse

Giorno 3 – Reti, archiviazione e sicurezza in Kubernetes

Reti di Kubernetes

  • Modello di rete all’interno del cluster
  • Comunicazione tra Pod
  • Rilevamento dei servizi attivi
  • DNS all’interno del cluster
  • Servizi ClusterIP
  • Servizi NodePort
  • Servizi LoadBalancer
  • Concetti di ingress
  • Modalità di esposizione delle applicazioni al traffico esterno

Politiche di rete

  • Controllo del flusso di comunicazione tra carichi di lavoro
  • Regole per l’ingresso e l’uscita dal traffico
  • Gestione delle regole a livello di namespace
  • Verifica della connettività rete
  • Risoluzione dei problemi legati alla comunicazione tra servizi

Archiviazione persistente

  • Tipologie di archiviazione: temporanea e persistente</li>
  • Volumi</li>
  • PersistentVolume</li>
  • PersistentVolumeClaim</li>
  • StorageClass</li>
  • Sistema dinamico di provisioning dello storage</li>
  • Modalità d’accesso alle risorse di storage</li>
  • Regole di recupero dei dati dopo il rilascio</li>
  • Archiviazione per applicazioni che richiedono dati stabili</li>

Controllo degli accessi in Kubernetes</h4>
  • Concetti di autenticazione e autorizzazione</li>
  • Gestione dell’accesso basata sui ruoli (RBAC)</li>
  • Ruoli e ClusterRole</li>
  • Binding dei ruoli agli utenti: RoleBinding e ClusterRoleBinding</li>
  • Account servizio</li>
  • Applicazione del principio di accesso minimo</li>
  • Analisi delle autorizzazioni effettive attribuite agli utenti</li>

Sicurezza dei carichi di lavoro</h4>
  • Contesti di sicurezza</li>
  • Esecuzione dei container con privilegi limitati (non root)</li>
  • Capabilità Linux abilitate per i container</li>
  • Sistema di file in sola lettura per maggiore protezione</li>
  • Gestione sicura delle credenziali tramite Secret</li>
  • Verifica dell’origine e affidabilità delle immagini utilizzate</li>
  • Identificazione dei rischi comuni legati alla configurazione</li>

Esercizi pratici</h4>
  • Esposizione di un’applicazione tramite i servizi Kubernetes</li>
  • Configurazione dell’ingress per la gestione del traffico esterno</li>
  • Limitazione dei flussi di rete secondo le politiche definite</li>
  • Provisioning di archiviazione persistente per l’applicazione</li>
  • Gestione delle autorizzazioni tramite il sistema RBAC</li>
  • Esecuzione di un carico di lavoro rispettando i requisiti minimi di sicurezza</li>

Giorno 4 – Lavorare con gli ambienti OpenShift</h3>

Introduzione a OpenShift</h4>
  • OpenShift come piattaforma applicativa basata su Kubernetes</li>
  • Risorse di Kubernetes disponibili in un ambiente OpenShift</li>
  • Architettura dei cluster OpenShift</li>
  • Progetti e namespace in OpenShift</li>
  • Utenti della piattaforma e account servizio</li>
  • Utilizzo della console web di OpenShift</li>
  • Uso dell’interfaccia a riga di comando OpenShift CLI</li>

Gestione dei progetti e degli accessi</h4>
  • Creazione e amministrazione dei progetti</li>
  • Assegnazione delle autorizzazioni agli utenti</li>
  • Ruoli applicabili a livello di progetto</li>
  • Gestione dell’accesso amministrativo</li>
  • Impostazione e monitoraggio delle quote risorse</li>
  • Definizione dei range limiti per le risorse disponibili</li>
  • Account servizio utilizzabili nell’ambiente</li>
  • Analisi dettagliata delle risorse presenti in un progetto</li>

Distribuzione di applicazioni</h4>
  • Distribuzione delle immagini container create in precedenza</li>
  • Creazione dei workload applicativi richiesti</li>
  • Gestione ciclica dei Deployment attivi</li>
  • Scalabilità delle risorse distribuite</li>
  • Aggiornamento verso nuove versioni dell’applicazione</li>
  • Implementazione del rollback in caso di problemi</li>
  • Gestione e personalizzazione della configurazione applicativa</li>
  • Sicuro utilizzo dei dati sensibili tramite Secret</li>

Esposizione delle applicazioni</h4>
  • Servizi gestiti in OpenShift</li>
  • Concetti legati alle route di rete</li>
  • Aspetti della sicurezza TLS</li>
  • Accesso all’applicazione da reti interne ed esterne</li>
  • Gestione degli hostname e dei certificati SSL</li>
  • Risoluzione dei problemi di connettività legati a route e servizi</li>

Archiviazione in OpenShift</h4>
  • Gestione dei PersistentVolumeClaim</li>
  • Configurazione delle classi di storage disponibili</li>
  • Associazione della memoria di archiviazione ai carichi di lavoro specifici</li>
  • Supporto per applicazioni che richiedono dati stabili</li>
  • Gestione delle autorizzazioni relative all’accesso allo storage</li>
  • Identificazione e risoluzione dei problemi di montaggio degli storage</li>

Pianificazione dei nodi e gestione della rete</h4>
  • Utilizzo delle etichette e dei selettori per i carichi di lavoro</li>
  • Selezione dei nodi su cui eseguire le applicazioni</li>
  • Gestione di vincoli Taint e Toleration per l’accesso ai nodi</li>
  • Definizione delle regole di affinità e anti-affinità</li>
  • Pianificazione ottimale della distribuzione dei workload</li>
  • Protezione temporanea dei nodi tramite il comando “cordoning” e loro svuotamento prima di manutenzioni</li>
  • Considerazioni operative durante la manutenzione dei nodi</li>

Esercizi pratici</h4>
  • Accesso all’ambiente OpenShift disponibile in laboratorio</li>
  • Creazione e configurazione di un nuovo progetto</li>
  • Distribuzione ed esposizione pubblica di un’applicazione</li>
  • Assegnazione delle autorizzazioni necessarie a utenti e account servizio</li>
  • Collegamento di archiviazione persistente alle risorse applicative</li>
  • Scalabilità dell’applicazione e aggiornamento progressivo della versione in esecuzione</li>

Giorno 5 – Operazioni, monitoraggio e risoluzione dei problemi</h3>

Monitoraggio della piattaforma</h4>
  • Monitoraggio costante dello stato di salute del cluster e delle applicazioni presenti</li>
  • Raccolta e visualizzazione dei dati metriche sulle risorse utilizzate</li>
  • Stato operativo dei nodi fisici che compongono il cluster</li>
  • Verifica dello stato di funzionamento dei carichi di lavoro distribuiti</li>
  • Monitoraggio dell’utilizzo complessivo delle risorse e capacità residue</li>
  • Rilevamento precoce di possibili limitazioni prestazionali</li>

Log e eventi del sistema</h4>
  • Lettura e analisi dei log generati dai container attivi</li>
  • Gestione e ispezione dei log relativi ai Pod</li>
  • Visualizzazione dei dati di log delle esecuzioni precedenti</li>
  • Rilevamento degli eventi e avvisi generati da Kubernetes</li>
  • Analisi dei messaggi inviati dal sistema e dall’applicazione in esecuzione</li>
  • Filtraggio e interpretazione delle informazioni operative per individuare problemi</li>

Verifiche di integrità delle applicazioni</h4>
  • Configurazione dei probe di avvio (Startup Probe)</li>
  • Definizione e monitoraggio dei probe di prontezza all’uso (Readiness Probe)</li>
  • Utilizzo dei probe di vitalità per verificare la correttezza operativa (Liveness Probe)</li>
  • Creazione di endpoint di salute utili al processo di diagnosi</li>
  • Diagnostica rapida e affidabile in caso di fallimento dei test di integrità</li>
  • Misure preventive per evitare riavvii non necessari dell’applicazione</li>

Risoluzione dei problemi relativi ai workload</h4>
  • Analisi dei Pod bloccati nello stato “Pending”</li>
  • Individuazione delle cause di insuccesso nell’estrazione delle immagini container</li>
  • Risoluzione dei cicli ricorrenti di crash nei container</li>
  • Verifica della correttezza delle configurazioni e delle variabili d’ambiente impostate</li>
  • Gestione delle problematiche legate alla mancata montatura delle risorse richieste</li>
  • Rilevamento dei casi di carenza delle risorse assegnate all’applicazione</li>
  • Analisi e correzione degli errori generati da permessi di accesso errati</li>
  • Individuazione delle cause che impediscono il corretto scambio comunicativo tra servizi e route definiti</li>
  • Riscontro e risoluzione dei problemi legati alla risoluzione dei nomi DNS</li>
  • Verifica dei fattori responsabili dell’insuccesso dell’avvio delle applicazioni</li>

Sicurezza operativa</h4>
  • Rivisione periodica e aggiornamento degli autorizzi impostati</li>
  • Analisi dell’uso corretto e della gestione ottimale degli account servizio</li>
  • Attuazione di procedure riguardanti la sicurezza delle credenziali riservate</li>
  • Adozione rigorosa di buone pratiche per il controllo e la tracciabilità delle immagini container</li>
  • Gestione dell’isolamento rete tramite politiche definite a livello di piattaforma</li>
  • Monitoraggio costante degli accessi alla piattaforma da parte di utenti autorizzati e non</li>
  • Rispetto rigoroso del principio della concessione minima dei privilegi necessari ad ogni soggetto</li>

Manutenzione ed evoluzione continua della piattaforma</h4>
  • Svolgimento sistematico di controlli operativi programmati per il monitoraggio dello stato generale</li>
  • Interventi ordinari di manutenzione e aggiornamento dei nodi fisici componenti del cluster</li>
  • Stesura strategie per la conservazione sicura ed efficace delle applicazioni durante modifiche strutturali</li>
  • Gestione sistematica delle copie di backup relative alle configurazioni principali della piattaforma</li>
  • Progettazione di un piano dettagliato per i futuri aggiornamenti software e migliorie architetturali</li>
  • Gestione sistematica dei cambiamenti operativi in modo da ridurre l’impatto sui servizi presenti</li>
  • Sviluppo di scenari ipotetici per il test accurato degli aggiornamenti prima della loro attivazione completa</li>
  • Redazione e verifica delle strategie di rollback in caso di malfunzionamenti non previsti</li>
  • Adozione di metodiche consolidate di ripristino d’emergenza ed elaborazione dei disastri informatici</li>

Workshop pratico finale</h3>

I partecipanti dovranno portare a termine uno scenario completo, che va dalla progettazione alla corretta manutenzione:

  • Creazione e marcatura adeguata di un’immagine container da utilizzare</li>
  • Upload della stessa su un registro centrale accessibile a tutti i team</li>
  • Distribuzione effettiva dell’applicazione risultante in ambienti Kubernetes o OpenShift secondo le linee guida imposte</li>
  • Configurazione corretta delle impostazioni operativa e dei dati sensibili richiesti dall’applicazione stessa</li>
  • Esposizione pubblica, tramite i meccanismi opportuni, dell’applicazione finita agli utenti esterni</li>
  • Connessione e corretta configurazione di risorse archiviazione a durata indefinita per supportare l’evoluzione futura dell’applicazione</li>
  • Definizione dei parametri di autorizzazione appropriati in base ai profili d’utilizzo dei vari utenti coinvolti</li>
  • Creazione e verifica puntuale dei test di salute richiesti dalla logica operativa dell’applicazione stessa</li>
  • Riscalare il carico in corso o implementare nuove versioni seguendo le best practice previste per la scalabilità continua</li>
  • Localizzazione delle cause di eventuali malfunzionamenti introdotti appositamente nello scenario pratico e loro correzione in tempo reale</li>

Formato del corso</h4>
  • Lezioni interattive e dibattiti tecnici sotto la guida dell’istruttore</li>
  • Demo dal vivo di gestione applicativa operata direttamente dall’esperto formativo</li>
  • Numerosi esercizi pratici mirati a consolidare le competenze acquisite in precedenza</li>
  • Sessioni operative focalizzate su problematiche reale di amministrazione e risoluzione di disfunzioni nei diversi ambienti virtuali</li>
  • Lavoro costante dei partecipanti direttamente all’interno di piattaforme container, Kubernetes o OpenShift simulate in aula</li>

Opzioni personalizzabili del corso</h4>
  • Il programma didattico può essere adattato per rispondere alle specifiche infrastrutture, ai provider cloud e alle tecnologie container scelte dalle organizzazioni interessate</li>
  • La proporzione delle sezioni dedicate a Docker, Kubernetes ed OpenShift potrà essere modificata in base all’esperienza pregressa dei partecipanti coinvolti</li>
  • Gli esercizi pratici risultano facilmente adattabili alle esigenze operative, al flusso produttivo e alle tempistiche di distribuzione proprie della realtà lavorativa dei clienti industriali</li>

Avvertenza sui marchi</h4>

OpenShift è un marchio registrato di Red Hat, Inc. Questo corso è stato sviluppato in autonomia e non risulta legato, approvato né autorizzato ufficialmente da tale azienda.

Requisiti

I partecipanti devono possedere:

  • Esperienza nell’utilizzo della riga di comando Linux.
  • Conoscenze di base in ambito amministrazione sistemica o DevOps.
  • Comprensione generale dei concetti di rete.
  • Familiarità con i processi di distribuzione del software.

L’esperienza precedente con Docker, Kubernetes o OpenShift è utile ma non obbligatoria.

 35 ore

Numero di Partecipanti


Prezzo per partecipante

Recensioni (7)

Corsi in Arrivo

Categorie relative