Szkolenie: Kubernetes w praktyce
Na szkoleniu Kubernetes w Praktyce opanujesz zaawansowane umiejętności konteneryzacji, zarządzania kontenerami oraz wdrażania i skalowania aplikacji w środowisku Kubernetes.
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:5 dni (40h)
Kod kursu:KUBERNETES
Kubernetes w praktyce
Cele szkolenia
Wprowadzenie do wykorzystania platformy Kubernetes
Poznanie dobrych praktyk związanych z wdrażaniem aplikacji wykorzystujących kontenery (w szczególności opartych o architekturę mikroserwisów)
Nabycie umiejętności wykorzystania Kubernetes w zakresie monitorowania, tuningu i skalowania aplikacji
Dla kogo?
Deweloperów i administratorów oraz każdej osoby, zainteresowanej tworzeniem, uruchamianiem i zarządzaniem aplikacjami wykorzystującymi kontenery
Zalety
Podstawy i zaawansowane techniki pracy z Dockerem – przedstawienie działania kontenerów, tworzenia i zarządzania obrazami, implementacja najlepszych praktyk w zakresie optymalizacji aplikacji oraz zarządzania ich cyklem życia w środowisku kontenerowym
Praktyczna administracja klastrami Kubernetes – instalacja i konfiguracja klastrów przy użyciu narzędzi takich jak kubeadm, implementacja strategii monitorowania z wykorzystaniem Prometheus i Grafana oraz optymalizacja komunikacji między usługami w klastrze
Rozbudowane mechanizmy uwierzytelniania i autoryzacji – wdrażanie metod uwierzytelniania (np. z użyciem certyfikatów lub integracji z systemami zewnętrznymi) oraz konfiguracja zaawansowanej kontroli dostępu opartej na rolach (RBAC) w środowisku Kubernetes
Skuteczne zarządzanie siecią i danymi wrażliwymi – konfiguracja sieci w Kubernetes (np. CNI, ingress), zarządzanie routingiem i publikacją aplikacji, efektywne zarządzanie zmiennymi środowiskowymi oraz bezpieczne przechowywanie danych przy użyciu mechanizmów Secret i Persistent Volumes.e działania kontenerów, tworzenia i zarządzania obrazami, implementacja najlepszych praktyk w zakresie optymalizacji aplikacji oraz zarządzania ich cyklem życia w środowisku kontenerowym
Wymagania
Praktyczna znajomość wybranego narzędzia do startowania kontenerów np. Docker
Wiedza z zakresu programowania, sieci komputerowych oraz systemu Linux
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Wprowadzenie do kontenerów na przykładzie platformy Docker
Architektura, komponenty oraz wersjonowanie narzędzia Docker
containerd, cri-o, podman jako narzędzia tworzące kontenery w systemie Linux
Budowa i optymalizacja obrazów aplikacji przy użyciu Dockerfile
Rejestry obrazów - gdzie przechowywać paczki swoich aplikacji
Ekosystem Docker - przegląd narzędzi powstałych wokół platformy Docker
Codzienna administracja kontenerami - gromadzenie logów, metryki wydajności, polityki restartowania aplikacji
Bezpieczeństwo kontenerów - co zrobić, aby zabezpieczyć system operacyjny oraz inne aplikacje przed złośliwym oprogramowaniem
Omówienie różnic pomiędzy lokalną, a produkcyjną konfiguracją kontenerów
Architektura Kubernetes
Komponenty klastra (masters oraz workers)
Zarządzanie obiektami Kubernetes (imperatywne oraz deklaratywne)
Manifesty obiektów - struktura oraz format (YAML)
Docker w orkiestratorze Kubernetes
Nowe wydania oraz okna wsparcia dla starszych wersji platformy
Podstawy konfiguracji
Minikube jako jeden ze sposobów na instalację lokalnego klastra
Podział klastra na wirtualne przestrzenie (Namespaces)
Kubernetes wykorzystujący maszyny fizyczne lub wirtualne? To nie ma znaczenia (Nodes)
Pod jako podstawowa jednostka alokacji procesów w klastrze
Labels and Selectors - grupowanie obiektów za pomocą etykiet
Services - konfiguracja komunikacji pomiędzy aplikacjami w klastrze jak i dostęp do aplikacji ze świata zewnętrznego
Zarządzanie liczbą replik aplikacji oraz sposobem ich aktualizacji za pomocą Deployments
Jobs/CronJobs czyli sposób na uruchamianie zadań skryptowych w klastrze Kubernetes
Konfiguracja centralnego monitoringu oraz logowania przy użyciu DaemonSets
StatefulSets jako sposób na uruchamianie aplikacji stanowych w klastrze
Uwierzytelnianie oraz autoryzacja
Organizacja informacji o klastrach i użytkownikach w pliku kubeconfig
Przedstawienie typów użytkowników w Kubernetes: używanych przez administratorów (użytkownicy) oraz aplikacje (konta serwisowe)
Omówienie strategii uwierzytelniania w klastrze, od użytkownika z hasłem, przez certyfikaty x509, po tokeny OpenID
Kontrola dostępu oparta na rolach jako sposób na przypisywanie uprawnień do użytkowników
Walidacja lub modyfikacja żądań za pomocą Admission Controllers
Sieci
Porównanie architektury sieciowej: Docker vs. Kubernetes
CNI jako interfejs służący do konfiguracji kart sieciowych kontenerów
Omówienie różnych sposobów na publikacje aplikacji za pomocą Services (ClusterIP, NodePort, LoadBalancer, ExternalIP, ExternalName)
Ingress czyli przekierowanie przychodzących zapytań HTTP do aplikacji uruchomionych w Kubernetes (na przykładzie kontrolera nginx)
Blokada komunikacji sieciowej w klastrze za pomocą Network Policies
Konfiguracja serwera rozwiązywania nazw w klastrze (coredns)
Storage
Zarządzanie zmiennymi środowiskowymi i plikami konfiguracyjnymi aplikacji z użyciem ConfigMaps
Przechowywanie danych wrażliwych takich jak: hasła, klucze czy tokeny za pomocą Secrets (generic, docker-registry, tls)
CSI jako API przeznaczone do integracji z: programowymi systemami przechowywania danych, dyskami fizycznymi lub usługami przechowywania danych dostawcow chmur
Utrwalanie danych z użyciem wolumenów różnego typu (emptyDir, hostPath)
Dynamiczne oraz statyczne zarządzanie wolumenami w klastrze (PersistentVolume ,PersistentVolumeClaim, StorageClass)
Dodatkowe funkcjonalności
Kontrolowanie poprawnego funkcjonowania aplikacji za pomocą różnego rodzaju próbówek (livenessProbe, readinessProbe oraz startupProbe)
Konfiguracja automatycznego skalowania aplikacji ze względu na obciążenie przy użyciu HPA (HorizontalPodAutoscaler)
Uruchamianie kontenerów/zadań przed startem głównej aplikacji (initContainers)
Startowanie aplikacji na określonych maszynach oraz konfiguracja zależności pomiędzy uruchomionymi aplikacjami (nodeSelector, affinity/antiAffinity, taints/tolerations)
Zarządzanie zasobami klastra: zarezerwowanymi oraz maksymalnymi limitami przypisanymi do kontenerów (resourceRequests, resourceLimits, ResourceQuota, LimitRange)
Priorytety aplikacji w klastrze oraz wywłaszczanie kontenerów z niskim priorytetem (PriorityClass)
Utrzymanie maszyn klastra wraz z przygotowaniem okien obsługi
Omówienie ogolnych polityk aktualizacji aplikacji (recreate, ramped, blue/green, canary, a/b testing, shadow) oraz ich implementacji w Kubernetes
Logowanie oraz Monitoring
Omówienie różnych architektur zbierania logów w klastrze Kubernetes wraz z przeglądem najpopularniejszych narzędzi
Centralny monitoring zasobów w klastrze na przykładzie: Prometheus, AlertManager, Grafana
Bezpieczeństwo
Skanowanie obrazów kontenerów w poszukiwaniu CVE oraz SBOM przy użyciu trivy
Sprawdzenie zgodności konfiguracji klastra Kubernetes z najlepszymi praktykami zawartymi w CIS Kubernetes Benchmark
Ograniczenie uprawnień oraz kontrola dostępu aplikacji do komponentów systemu operacyjnego z użyciem SecurityContext
Dystrybucje oraz użyteczne narzędzia
Kubernetes jako usługa na przykładzie najpopularniejszych dostawców chmur publicznych (GKE, EKS, AKS)
Zautomatyzowana instalacja klastra przy użyciu Kubernetes Operations (KOPS)
Instalacja klastra Kubernetes "on premise" (Kubespray)
Cloud Native Landscape - aplikacje wspierające prace z Kubernetes
Helm jako natywny menedżer pakietów aplikacji w Kubernetes
Struktura plikow paczki
Podstawowe obiekty wbudowane w Helm (Release, Values, Files)