Konteneryzacja i DevOps
uSerwisy https://www.nginx.com/blog/introduction-to-microservices/
Dużo serwisów serwisów, które chcielibyśmy instalować, aktualizować restartować. Najlepiej bez wpływu na inne serwisów które mają swoje zależności, wymagania konfiguracyjne itd.. Podejścia: Współdzielenie systemu (wiele serwisów na jednym hoście)? = Kłopoty Jeden serwis per host = Koszty
Wirtualizacja vs. konteneryzacja Żródło: docs.docker.com
Podstawowe pojęcia Image – spakowany obraz aplikacji Dockerfile – skrypt wdrożeniowy Registry – magazyn gotowych obrazów Container – instancja aplikacji utworzonej z obrazu działająca na komputerze docelowym docelowym (uruchomiony obraz)
Źródło:docs.microsoft.com
Mur niezrozumienia Zmiany Stabilność Zródło:blog.eriksen.com.br
DevOps Źródło:goto.docker.com dzone.com
Cykliczne podejście Źródło:dzone.com
Kolejne etapy Źródło:dzone.com
Potok CI/CD Źródło:dzone.com
Kontenery vs. CI/CD Aplikacje nie mają zależności systemowych Aktualizacje mogą być łatwo realizowane oddzielnie dla poszczególnych części systemu (uSerwisu) Jako artefakt CI/CD może produkować obraz Obraz może być składowany w rejestrze
Okablowanie Problem: Konfiguracja komunikujących się ze sobą elementów Kwestia skali Różne środowiska – pot. różne konfiguracje: nazwy/adresy liczba instancji serwisów klucze/hasła odniesienia do świata poza dokerem
Swarm – raczej statycznie Zarządzanie klastrem (wiele hostów) Zintegrowany z silnikiem dokera (od 1.1.1) Deklaratywny model opisu serwisów Dla serwisu można określić liczbę zadań wdrożeniowych (->instancji) Czuwanie nad stanem: Węzeł managera roju może monitorować i np. cyklicznie dodawać brakujące serwisy Wsparcie dla sieci obejmującej kilka hostów (service discovery) Równoważenie – można dystrybuować serwisy między węzłami i ew. wyeksponować porty dla zewnętrznego load balancer-a wykorzystać Wsparcie dla rolowanych updatów
Swarm – pojęcia Node – instancja docker engine (silnika) – może być jedna/wiele na host, w chmurze nie będzie to widoczne Manager/Worker node – węzeł zarządzający rojem i węzeł wykonujący zadania Serwis definicja zadania do wykonania Serwis globalny – serwis tworzony jako instancja dostępna dla wszystkich węzłów Serwis replikowany – serwis tworzony w odpowiedniej liczbie kopii i dystrybuowany między węzłami Task (zadanie) - obejmuje kontener i ew komendy do wykonania wewnątrz kontenera
Własna chmurka OpenStack - otwarty system operacyjny w chmurze, wykorzystywany do tworzenia środowisk prywatnych i publicznych chmur. zapewnia gotową do produkcji warstwę IaaS (Infrastructure as a Service) dla aplikacji i maszyn wirtualnych. Skomplikowany 60 komponentów, określanych również jako „usługi”, (sześć to podstawowe komponenty, kontrolujące najważniejsze aspekty chmury) Alternatywa „on-premise” dla: AWS, Google Cloud, MS Azure czy DigitalOcean.
Dynamiczny klaster Kubernetes (K8s) zautomatyzowane uruchamianie, skalowania i obsługi kontenerów aplikacji. Pozwalla sworzyć grupy funkcjonalne (PODs) - ściśle powiązane kontenery aplikacji w celu łatwego zarządzania i dostępności w ramach grupy. Ponad tym Kubernetes zapewnia kolejną warstwę, która pozwala na dynamiczne zarządzanie usługami. Dbanie o odpowiednią liczbę instancji i dostosowywanie tej liczby do obciążenia Równoważenie obciążenia hostów Automatyzacja zadań wdrożeniowych