Kubernetes w praktyce
Czas trwania szkolenia:5 dni (40h)
Kod kursu:KUBERNETES
Poziom zaawansowania:
O szkoleniu Kubernetes w praktyce
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
Wymagania
- Praktyczna znajomość wybranej technologii kontenerowej np. Docker
- Wiedza z zakresu programowania, sieci komputerowych oraz systemu Linux
Zalety
- Szkolenie i prezentowane przykłady dostarczają ogromną dawkę praktycznych informacji
- Zdobywana wiedza ma dużą wartość merytoryczną i może być zastosowana podczas rozwiązywania problemów w rzeczywistych projektach
- Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
- Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
- Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
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
Program
Wprowadzenie do kontenerów na przykładzie platformy Docker
- Architektura, komponenty oraz wersjonowanie narzędzia Docker
- 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 najłatwiejszy sposób na instalację lokalnego klastra
- Dashboard czyli podgląd stanu klastra w przeglądarce internetowej
- 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
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)
- Utrwalanie danych z użyciem wolumenów różnego typu
- Dynamiczne oraz statyczne zarządzanie wolumenami w klastrze
Dodatkowe funkcjonalności
- Kontrolowanie poprawnego funkcjonowania aplikacji za pomocą różnego rodzaju próbówek (Liveness, Readiness oraz Startup probes)
- Konfiguracja automatycznego skalowania aplikacji ze względu na obciążenie przy użyciu Horizontal Pod Autoscalers
- Uruchamianie kontenerów/zadań przed startem głównej aplikacji
- Startowanie aplikacji na określonych maszynach oraz konfiguracja zależności pomiędzy uruchomionymi kontenerami (nodeSelector, affinity/antiAffinity, taints/tolerations)
- Zarządzanie zasobami klastra: minimalnymi oraz maksymalnymi limitami przypisanymi do kontenerów
- Priorytety aplikacji w klastrze oraz wywłaszczanie kontenerów z niskim priorytetem
- Utrzymanie maszyn klastra wraz z przygotowaniem okien obsługi
- Omówienie polityk aktualizacji aplikacji (recreate, ramped, blue/green, canary, a/b testing, shadow)
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
- Testy penetracyjne klastra Kubernetes
- Ograniczenie uprawnień oraz kontrola dostępu aplikacji do komponentów systemu operacyjnego z użyciem SecurityContext
- Wymuszanie globalnych standardów specyfikacji aplikacji wykorzystując Pod Security Policy
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)
- Kubeless, Kubeapps, kubectx, kubens i inne narzędzia użyteczne w codziennej pracy z klastrem Kubernetes