Struttura del corso
Giorno 1 – Container e Gestione delle Immagini
Introduzione alle Piattaforme Containerizzate
- Distribuzione tradizionale delle applicazioni confrontata con la distribuzione basata su container
- Container e macchine virtuali
- Runtimes dei container e motori di containerizzazione
- Il ruolo di Docker, Kubernetes e OpenShift
- Arcbitetture comuni delle piattaforme containerizzate
- Flussi di lavoro per sviluppo, test e produzione
Lavorare con i Container
- Esecuzione e gestione dei container
- Ciclo di vita del container
- Avvio, arresto ed eliminazione dei container
- Esecuzione di comandi all'interno dei container
- Variabili d'ambiente
- Mappatura delle porte
- Log dei container
- Utilizzo delle risorse e ispezione dei processi
Creazione di Immagini di Container
- Struttura e layer delle immagini
- Creazione di Dockerfile e Containerfiles
- Selezione delle immagini base
- Aggionamento delle dipendenze dell'applicazione
- Configurazione dei punti di ingresso e dei comandi
- Caching delle immagini
- Riduzione della dimensione delle immagini
- Creazione di immagini riproducibili
Registri Container
- Registri pubblici e privati
- Tagging e versioning delle immagini
- Pubblicazione e scaricamento delle immagini
- Autenticazione delle immagini
- Retention e pulizia delle immagini
- Considerazioni basilari sulla sicurezza delle immagini
Networking e Storage dei Container
- Concetti di rete dei container
- Rete bridge
- Esposizione delle porte
- Comunicazione container-to-container
- Bind mounts e volumi
- Dati persistenti dei container
- Considerazioni per il backup
Esercitazioni Pratiche
- Eseguire ed ispezionare i container
- Creare un'immagine di un'applicazione
- Configurare porte e variabili d'ambiente
- Pubblicare un'immagine su un registro
- Archiviare dati persistenti al di fuori di un container
Giorno 2 – Architettura di Kubernetes e Carichi di Lavoro
Fondamenti di Kubernetes
- Lo scopo dell'orchestrazione dei container
- Architettura di Kubernetes
- Componenti del piano di controllo
- Nodi worker
- API server
- Scheduler
- Controller
- Stato del cluster e stato desiderato
- Comunicazione con il cluster utilizzando kubectl
Risorse di Kubernetes
- Pods
- ReplicaSets
- Deployments
- Namespace
- Etichette e annotazioni
- Selectors
- Dichiarazione delle risorse dichiarative
- Manifests YAML
Deployment delle Applicazioni
- Creazione e gestione dei Deployments
- Scalatura dei carichi di lavoro
- Aggiornamento delle immagini dei container
- Aggiornamenti rolling
- Rollback
- Cronologia dei deployment
- Riavvio dei carichi di lavoro
- Gestione delle repliche dell'applicazione
Configurazione delle Applicazioni
- ConfigMaps
- Secrets
- Variabili d'ambiente
- File di configurazione
- Separe il codice dell'applicazione dalla configurazione
- Gestire le impostazioni specifiche per l'ambiente
Gestione delle Risorse
- Richieste di CPU e memoria
- Limiti di CPU e memoria
- Quote di risorsa
- Limit ranges
- Implicazioni sullo scheduling
- Diagnosi dei guasti relativi alle risorse
Esercitazioni Pratiche
- Deployare un'applicazione containerizzata
- Creare e aggiornare i manifest di Kubernetes
- Scalare un'applicazione
- Eseguire un aggiornamento rolling e un rollback
- Configurare l'applicazione utilizzando ConfigMaps e Secrets
- Applicare richieste e limiti delle risorse
Giorno 3 – Networking, Storage e Sicurezza di Kubernetes
Networking di Kubernetes
- Modello di networking del cluster
- Comunicazione pod-to-pod
- Service discovery
- DNS all'interno del cluster
- Servizi ClusterIP
- Servizi NodePort
- Servizi LoadBalancer
- Concetti di Ingress
- Pattern di esposizione delle applicazioni
Network Policies
- Controllo del traffico tra i carichi di lavoro
- Regole di ingress ed egress
- Controllo del traffico basato sui namespace
- Test della connettività di rete
- Risoluzione dei problemi di comunicazione dei servizi
Storage Persistente
- Storage effimero e persistente
- Volumi
- PersistentVolumes
- PersistentVolumeClaims
- StorageClasses
- Provisioning dinamico
- Modalità di accesso
- Politiche di reclaim
- Storage per applicazioni stateful
Controllo dell'Accesso in Kubernetes
- Concetti di autenticazione e autorizzazione
- Role-Based Access Control (RBAC)
- Roles e ClusterRoles
- RoleBindings e ClusterRoleBindings
- Account di servizio
- Accesso con privilegio minimo
- Ispezione dei permessi effettivi
Sicurezza dei Carichi di Lavoro
- Contesti di sicurezza
- Esecuzione dei container come utente non-root
- Capacità Linux
- Filesystem in sola lettura
- Gestione dei secrets
- Provenienza delle immagini
- Rischi comuni di configurazione
Esercitazioni Pratiche
- Esporre un'applicazione utilizzando i servizi Kubernetes
- Configurare l'ingress
- Limitare il traffico utilizzando una network policy
- Fornire storage persistente
- Configurare i permessi RBAC
- Eseguire un carico di lavoro con un contesto di sicurezza appropriato
Giorno 4 – Lavoro con gli Ambienti OpenShift
Introduzione a OpenShift
- OpenShift come piattaforma applicativa basata su Kubernetes
- Risorse Kubernetes in un ambiente OpenShift
- Architettura del cluster OpenShift
- Progetti e namespace
- Utenti della piattaforma e account di servizio
- Lavoro con la console web
- Lavoro con l'interfaccia a riga di comando (CLI) di OpenShift
Gestione dei Progetti e dell'Accesso
- Creazione e gestione dei progetti
- Assegnazione dei permessi utente
- Ruoli a livello di progetto
- Accesso amministrativo
- Quote di risorsa
- Limit ranges
- Account di servizio
- Revisione delle risorse del progetto
Deployment delle Applicazioni
- Deploy di immagini containerizzate
- Creazione di carichi di lavoro applicativi
- Gestione dei deployment
- Scalatura delle applicazioni
- Aggiornamento delle versioni dell'applicazione
- Rollback
- Gestione della configurazione dell'applicazione
- Lavoro con i secrets
Esposizione delle Applicazioni
- Servizi in OpenShift
- Routes
- Concetti TLS
- Accesso interno ed esterno alle applicazioni
- Nomi host e certificati
- Risoluzione dei problemi delle route e dei servizi
Storage in OpenShift
- Persistent Volume Claims
- StorageClasses
- Attaccare lo storage ai carichi di lavoro
- Carichi di lavoro stateful
- Permessi di accesso allo storage
- Risoluzione dei problemi di montaggio dei volumi
Scheduling e Gestione dei Nodi
- Etichette e selectors
- Node selectors
- Taints e tolerations
- Concetti di affinità e anti-affinità
- Piazzamento dei carichi di lavoro
- Cordoning e draining dei nodi
- Considerazioni per la manutenzione dei nodi
Esercitazioni Pratiche
- Accedere a un ambiente OpenShift
- Creare e configurare un progetto
- Deploy ed esporre un'applicazione
- Configurare l'accesso utente e dell'account di servizio
- Attaccare storage persistente
- Scalare e aggiornare un carico di lavoro in esecuzione
Giorno 5 – Operazioni, Monitoraggio e Risoluzione dei Problemi
Monitoraggio della Piattaforma
- Monitoraggio della salute del cluster e delle applicazioni
- Metriche delle risorse
- Salute dei nodi
- Stato dei carichi di lavoro
- Capacità e utilizzo delle risorse
- Identificazione dei vincoli di prestazione
Logging ed Eventi
- Log dei container
- Log dei pods
- Log precedenti dei container
- Eventi Kubernetes
- Messaggi dell'applicazione e della piattaforma
- Filtraggio e interpretazione dei dati operativi
Health Checks
- Startup probes
- Readiness probes
- Liveness probes
- Progettazione di endpoint di salute utili
- Diagnosi dei guasti dei probe
- Prevenzione dei riavvii non necessari delle applicazioni
Risoluzione dei Problemi dei Carichi di Lavoro
- Pods in attesa (pending)
- Guasti nel pull delle immagini
- Loop di crash
- Variabili d'ambiente mal configurate
- Monti falliti
- Risorse insufficienti
- Errori di autorizzazione
- Problemi di connettività dei servizi e delle route
- Problemi DNS
- Guasti nell'avvio dell'applicazione
Sicurezza Operativa
- Revisione dei permessi
- Utilizzo degli account di servizio
- Gestione sicura delle credenziali
- Pratiche di sicurezza delle immagini
- Isolamento di rete
- Auditing dell'accesso alla piattaforma
- Applicazione del principio del privilegio minimo
Manutenzione e Gestione del Ciclo di Vita
- Controlli di routine della piattaforma
- Manutenzione dei nodi
- Considerazioni per il backup delle applicazioni
- Backup della configurazione
- Pianificazione degli aggiornamenti
- Gestione dei cambiamenti
- Test degli aggiornamenti
- Pianificazione del rollback
- Concetti di disaster recovery
Workshop Pratico Finale
I partecipanti completano uno scenario operativo end-to-end:
- Creare e taggare un'immagine container.
- Pubblicare l'immagine su un registro.
- Deployare l'applicazione su Kubernetes o OpenShift.
- Configurare le impostazioni e le credenziali dell'applicazione.
- Esporre l'applicazione.
- Attaccare storage persistente.
- Configurare i permessi di accesso.
- Aggiungere health checks.
- Scalare e aggiornare l'applicazione.
- Diagnosi e risoluzione di un guasto introdotto.
Formato del Corso
- Lezioni interattive e discussioni tecniche.
- Dimostrazioni dell'istruttore.
- Esercitazioni pratiche estese.
- Workshop di amministrazione e risoluzione dei problemi basati su scenari.
- Lavoro pratico in ambienti container, Kubernetes e OpenShift.
Opzioni di Personalizzazione del Corso
- Il corso può essere adattato all'infrastruttura esistente dei partecipanti, al provider cloud e agli strumenti container utilizzati.
- Il bilanciamento tra gli argomenti su Docker, Kubernetes e OpenShift può essere regolato in base all'esperienza del team.
- Gli esercizi pratici possono essere personalizzati in base alle applicazioni dell'organizzazione, ai processi di deployment e ai requisiti operativi.
Avviso sui Marchi
OpenShift è un marchio registrato di Red Hat, Inc. Questa formazione sviluppata in modo indipendente non è affiliata, sostenuta o autorizzata da Red Hat.
Requisiti
I partecipanti dovrebbero avere:
- Esperienza nell'utilizzo della riga di comando Linux.
- Conoscenze base di amministrazione di sistema o DevOps.
- Una comprensione generale dei concetti di networking.
- Dimestichezza con i processi di rilascio del software.
Un'esperienza precedente con Docker, Kubernetes o OpenShift è utile ma non obbligatoria.
Recensioni (7)
Reda ha fornito spiegazioni e ha semplificato molto la comprensione
Eric Van Wyk
Corso - Docker, Kubernetes and OpenShift 3 for Administrators
Traduzione automatica
I laboratori sono stati i migliori. Molto pratici e forniscono un'esperienza hands-on. Personalmente, ritengo che sia il modo più efficace per comprendere realmente il corso e applicare i concetti trattati.
Hishaam Johnstone
Corso - Docker, Kubernetes and OpenShift 3 for Administrators
Traduzione automatica
Ho apprezzato molto la volontà di aiutare e spiegare ulteriormente quando c'era incertezza
Letlotlo Miffi
Corso - Docker, Kubernetes and OpenShift 3 for Administrators
Traduzione automatica
Adriano ha studiato l'argomento molto approfonditamente, che è lo stile che preferisco di più: meno focus sui comandi e più sul meccanismo che li sottostà. Le situazioni discusse erano ben supportate da esempi pratici, il che ha aiutato molto a comprendere i contenuti presentati.
Mariusz BANASZCZYK - Sopra Steria
Corso - Docker, Kubernetes and OpenShift for Administrators
Traduzione automatica
Conoscenza approfondita di Adriano. Spiegazione dei concetti fondamentali
Tomasz Szalankiewicz - LPP SA
Corso - Docker, Kubernetes and OpenShift for Administrators
Traduzione automatica
Mi è generalmente piaciuto il presentatore.
Josif Kovacevic - ANZ
Corso - Docker, Kubernetes and OpenShift for Administrators
Traduzione automatica
Adrian clearly knows and enjoys this technology.
Tom Edginton - National Oceanography Centre
Corso - Docker, Kubernetes and OpenShift for Administrators
Traduzione automatica