Fondamenti di Docker e Kubernetes
Questo corso di formazione intensivo su Docker e Kubernetes offre una combinazione di concetti teorici e laboratori pratici, dando agli studenti l'opportunità di applicare le proprie conoscenze. Il corso copre le competenze essenziali di Kubernetes e Docker e fornisce un'introduzione di base all'integrazione continua.
Chi deve partecipare
Sviluppatori, architetti di sistema, responsabili del team tecnico, amministratori di sistema e professionisti DevOps che desiderano comprendere e utilizzare Kubernetes in ambienti cloud.
Vantaggi
- Scopri gli usi fondamentali della tecnologia dei container e i principi architettonici su come applicare i contenitori alle sfide tecniche.
- Crea contenitori con soluzioni pacchettizzate e software personalizzato.
- Usa gli ambienti Docker e Kubernetes CLI per distribuire soluzioni in ambienti locali (Docker) e cluster (Kubernetes).
- Scopri come i servizi stateful, come database, soluzioni di streaming e altre applicazioni speciali, possono essere implementati in configurazioni ad alta disponibilità con ridondanza e individuazione dei servizi e bilanciamento del carico.
- Mostra come altri componenti possono essere utilizzati per integrare i servizi all'interno della piattaforma Kubernetes.
- Scopri come Docker e tecnologie come Jenkins possono essere utilizzati per testare e creare continuamente contenitori in base alle modifiche al codice sorgente.
Programma
- Tecnologia Docker e Linux Container: introduzione e casi d'uso
- Terminologia dell'infrastruttura moderna
- Virtualizzazione
- Hypervisor
- Tipi di hypervisor
- Hypervisor di tipo 1
- Hypervisor di tipo 2
- Elaborazione di tipo 1 rispetto a quella di tipo 2
- Paravirtualizzazione
- Qualità di virtualizzazione (1/2)
- Qualità di virtualizzazione (2/2)
- Svantaggi della virtualizzazione
- Containerizzazione
- Virtualizzazione e containerizzazione
- Dove utilizzare la virtualizzazione e la containerizzazione
- Containerizzazione: di alto livello
- Sistemi di containerizzazione più diffusi
- Cosa sono i contenitori Linux
- docker
- OpenVZ
- Solaris Zones (contenitori)
- Strumenti di orchestrazione dei container
- Docker Swarm
- Kubernetes
- Mesos e Marathon
- Casi d'uso di Docker
- Microservizi
- Microservizi e contenitori/cluster
- Docker in azione
- Nozioni di base su Docker
- Dove posso eseguire Docker?
- Installazione di Docker Container Engine
- Casella degli strumenti Docker
- Che cos'è Docker?
- Architettura Docker
- Diagramma dell'architettura Docker
- Immagini Docker
- Contenitori Docker
- Integrazione Docker
- Servizi Docker
- Archivio pubblico Docker Application Container
- Comando Docker Run
- Avvio, ispezione e arresto dei contenitori Docker
- Volume Docker
- Docker file
- Docker Compose
- Utilizzo di Docker Compose
- Sezionare docker-compose.yml
- Specificare i servizi
- Dipendenze tra contenitori
- Iniezione di variabili di ambiente
- Gestione dello stato Docker
- Stato e dati in Docker
- Volumi
- Ulteriori informazioni sui volumi
- Usi per i volumi
- Lavorare con i volumi
- Crea volume
- Usa i volumi con i contenitori
- Supporti Bind
- Utilizzo di Bind Mounts
- Supporti tmpfs
- Archiviazione dei dati nel contenitore
- Driver di archiviazione
- Archiviazione dati remota
- Rete
- La rete bridge predefinita
- Reti bridge definite dall'utente
- Comandi di rete Docker
- Creazione di una rete bridge definita dall'utente
- Iniziativa Open Container e interfaccia Container Runtime
- Iniziativa Open Container (OCI)
- docker
- Architettura del motore Docker
- Esegui C
- contenitori
- vantaggi containerd
- CRIO-O
- Componenti CRI-O
- Kubernetes e CRI-O
- Usare Container Runtimes con Minikube
- Docker Runtime e Kubernetes
- Mettere insieme le cose
- Architettura Kubernetes
- Nozioni di base su Kubernetes
- Che cos'è Kubernetes?
- Orchestrazione dei container
- Diagramma dell'architettura
- Componenti
- Cluster Kubernetes
- Nodo principale
- Gestore di controllo Kube
- Nodi
- Cialda
- Utilizzo dei pod per raggruppare i contenitori
- Etichetta
- Sintassi dell'etichetta
- Selettore di etichette
- Annotazione
- Storage persistente
- Quota di risorse
- Interagire con Kubernetes
- Lavorare con Kubernetes
- Installazione
- Avvio
- Strumenti Kubernetes
- Interfaccia a riga di comando kubectl
- Proxy API
- Cruscotto
- Gerarchia dei componenti Kubernetes
- Distribuzioni
- Comandi di distribuzione
- Aggiornamento delle distribuzioni
- Considerazioni sulla rete
- Servizi
- Namespace
- Etichette
- Annotazioni
- Altri comandi utili
- Carico di lavoro Kubernetes
- Carico di lavoro Kubernetes
- Gestione dei carichi di lavoro
- Comandi imperativi
- Configurazione imperativa degli oggetti
- Configurazione dichiarativa degli oggetti
- Schema del file di configurazione
- Comprensione della versione dell'API
- Comprensione della versione dell'API
- Ottenere versioni API
- Applicazioni stateless
- File manifesto di distribuzione di esempio
- Lavorare con le distribuzioni
- Applicazioni con stato
- Esempio di file manifesto con stato
- Lavorare con StatefulSet
- Offerte di lavoro
- File Job Manifest di esempio
- Lavorare con Batch Job
- Set di demoni
- File Daemon Manifest di esempio
- Aggiornamenti continui
- Pianificazione e gestione dei nodi
- Pianificatore Kubernetes
- Salta Kubernetes Scheduler
- Processo di pianificazione
- Processo di pianificazione - Predicati
- Processo di pianificazione - Priorità
- Algoritmo di pianificazione
- Algoritmo di pianificazione Kubernetes
- Conflitti di pianificazione
- Controllo della pianificazione
- Selettori di etichette
- Affinità e antiaffinità dei nodi
- Esempio di affinità dei nodi
- Esempio di antiaffinità del nodo
- Concimi e tolleranze
- Macchiature e tolleranze - Esempio
- Gestione della rete
- Componenti di rete Kubernetes
- Il modello di rete Kubernetes
- Scenari di rete
- Comunicazione container-container
- Comunicazione Pod-Pod
- 1.3 Comunicazione Pod-Service
- Comunicazione con servizi esterni
- Accesso alle applicazioni
- Comandi utili
- Interfaccia di rete per container (CNI)
- Qual è il ruolo del CNI?
- Formato di configurazione CNI
- Esempio di configurazione CNI
- Esecuzione dei plugin CNI
- Gestione dello storage persistente
- Metodi di archiviazione
- Archiviazione del file system del sistema operativo container
- Volumi Docker
- Volumi Kubernetes
- Tipi di volume K8S
- Tipi di risorse cloud
- Configura mappe
- Creazione di ConfigMaps da Literals
- Creazione di ConfigMaps da file
- Usare ConfigMaps
- Dir vuota
- Utilizzo di un volume EmptyDir
- Altri tipi di volume
- Volumi persistenti
- Creazione di un volume
- Richiesta di volume persistente
- Volume persistente
- Pod che utilizza Persistent Volume
- Segreti
- Creare segreti dai file
- Creare segreti dai letterali
- Usare i segreti
- Contesto di sicurezza
- Utilizzo del contesto di sicurezza
- Lavorare con Helm
- Che cos'è Helm?
- Installazione di Helm
- Helm e KUBECONFIG
- Caratteristiche del timone
- Terminologia Helm
- Ricerca di grafici con helm CLI
- Aggiungere repository
- Helm Hub - Cerca
- Helm Hub - Pagina del grafico
- Installazione di un grafico
- Aggiornamento di una versione
- Ripristino di una versione
- Creazione di grafici personalizzati
- File grafici comuni
- Modelli Helm
- Installazione di un grafico personalizzato
- Grafici personalizzati di imballaggio
- Registrazione, monitoraggio e risoluzione dei problemi
- Differenze tra registrazione e monitoraggio
- Accesso a Kubernetes
- Registrazione di base
- Agenti di registrazione
- Stack fluido ed elastico
- Monitoraggio con Prometheus
- Kubernetes e Prometheus - Metriche
- Avvisi
- Pod per il debug
- Nodi di debug
- Debug di controller e servizi di replica
- Aggiornamento di Kubernetes
- Processo di aggiornamento
- Determina a quale versione eseguire l'aggiornamento
- Aggiorna kubeadm
- Aggiorna il nodo Control Plane
- Aggiorna kubelet e kubectl
- Aggiorna i nodi di lavoro
- Recupero da uno stato di errore
- Nozioni fondamentali sull'integrazione continua
- Integrazione continua Jenkins
- Caratteristiche di Jenkins
- Jenkins in corsa
- Scaricamento e installazione di Jenkins
- Esecuzione di Jenkins come applicazione autonoma
- Esecuzione di Jenkins su un server di applicazioni
- Installazione di Jenkins come servizio Windows
- Diversi tipi di lavoro in Jenkins
- Configurazione della gestione del codice sorgente (SCM)
- Lavorare con Subversion
- Lavorare con Git
- Crea trigger
- Pianifica i lavori di costruzione
- Sondaggio dell'SCM
- Fasi di costruzione di Maven
- Configurazione di Jenkins per accedere a Kubernetes
- Gasdotto Jenkins
- Uscita della pipeline Jenkins
- Installazione dei plugin Jenkins
- Esercizi di laboratorio
- Creazione di un account Docker e ottenimento di un token di accesso
- Gestione dei contenitori
- Immagini di edifici
- File Docker
- Guida introduttiva a Docker Compose
- Volumi Docker
- Gestione della rete personalizzata
- Configurazione di Minikube/Kubernetes per l'utilizzo di un account Docker personalizzato
- Accesso all'API Kubernetes
- Lavorare con i carichi di lavoro Kubernetes
- Pianificazione e gestione dei nodi
- Accesso alle applicazioni
- Utilizzo dello storage persistente
- Guida introduttiva a Helm
- Crea una pipeline CI con Jenkins
Prerequisiti richiesti
- Conoscenza dell'interfaccia a riga di comando (CLI) di Linux
- Ampia conoscenza dell'amministrazione dei sistemi Linux: file system Linux, networking e script bash.
- Concetti e metodologie di programmazione informatica. Gli esempi di codice completi per il corso sono forniti nei linguaggi di programmazione Python e Java.