Instalacja Camunda w klastrze Kubernetes za pomocą Rancher
Zestaw aplikacji możemy zainstalować w klastrach Kubernetes na dwa sposoby:
- Instalacja Helm Chart przez CLI (użycie konsoli)
- Instalacja Helm Chart przez GUI Ranchera
W tym tutorialu wykorzystamy ten pierwszy sposób.
Wybranie właściwego klastra
Repozytorium i instalację aplikacji przeprowadzamy w wybranym przez nas klastrze w Rancher. Upewnij się że działasz na właściwym klastrze. Wybierz 'Home" a następnie kliknij na właściwy klaster (tutaj jest to 'camunda-cluster'):
Dodanie repozytorium Helm
Camunda posiada reposytorium Helm. Możesz dodać to repozytorium Helm z chartami Camunda, aby móc z nich korzystać. Po wykonaniu tego kroku Helm będzie mógł pobierać i instalować chart'y dostępne pod adresem https://helm.camunda.io.
Krok wyżej wybrał(a)ś właściwy klaster. Teraz rozwiń 'Apps' i kliknij na 'Repositories'. Następnie klinij przycisk 'Create':
Na ekranie który pojawi się po wciśnięciu przycisku "Create" wpisz dane repozytorium plus dodatkowy opis:
Instalowanie aplikacji
Helm charts to gotowe pakiety do zarządzania aplikacjami na Kubernetes, które zawierają definicje zasobów potrzebnych do instalacji oraz konfiguracji aplikacji w klastrze. We wcześniejszym kroku dodaliśmy ich repozytorium dla aplikacji Camunda. W tym kroku przechodzimy do ich wyboru. Rozwiń menu "Apps" i kliknij na "Charts". W filtrze wpisz pierwsze litery nazwy naszej aplikacji ('cam'):
Instalacja Rancher do obslugi klastrow Kubernetes
Co potrzebujemy by uruchomić Kubernetes
Poniższy tutorial jest o tym jak stworzyć testowe środowisko Kubernetes. Nie jest to materiał szkoleniowy o samym Kubernetes ani też o pozostałych komponentach które są wymagane dla uzyskania tego środowiska. Kubernetes jest systemem zlożonym i jego poznanie wymaga zaangażowania.
Kubernetes to system do zarządzania kontenerami, który automatyzuje wdrażanie, skalowanie i zarządzanie aplikacjami kontenerowymi w klastrze. Umożliwia łatwe zarządzanie grupą kontenerów jako jedną jednostką. Dlaczego wymaga środowiska Docker?
- Platforma Kontenerowa: Kubernetes wykorzystuje Docker do tworzenia i zarządzania kontenerami.
- Standardizacja: Kubernetes opiera się na standardach kontenerów, a Docker jest de facto standardem dla tworzenia tych kontenerów.
Kubernetes najczęściej uruchamiany jest z kontenerami Docker, jest systemem orkiestracji kontenerów, ale może wykorzystywać także inne środowiska niż Docker do tworzenia kontenerów.
Dlaczego uruchamianie Dockera w Windows to bardzo zły pomył?
Choć docker.com udostępnia swoje oprogramowanie także dla systemu operacyjnego Windows, w praktyce nie nadaje się ono nawet do testów nie mówiąc już produkcyjnej instalacji Dockera. Instalacja Docker'a potrafi się zaorać sama z siebie w Windows w każdym momencie bez właściwie żadnej przyczyny. Oto kilka punktów 'formalnych' dlaczego Docker w Windows to niezbyt wspaniały pomysł:
-
Wydajność: Docker na Windows wymaga maszyny wirtualnej, co wprowadza dodatkowy narzut i opóźnienia w uruchamianiu kontenerów.
-
Kompatybilność: Niektóre obrazy są zoptymalizowane dla Linuxa i mogą nie działać poprawnie na Windowsie.
-
Ograniczone Narzędzia: Mniej narzędzi do zarządzania kontenerami, co utrudnia automatyzację i monitorowanie.
-
Problemy z Systemem Plików: Różnice w systemach plików mogą prowadzić do problemów z wydajnością i interoperacyjnością.
Dla środowisk produkcyjnych zaleca się korzystanie z systemów Linux.
Instalacja platformy Camunda BPMN wersji 8
Camundę można uruchomić jako klaster Dokera ale wykorzystywanie Dokera w Windows dla Camundy na produkcji nie jest zalecane przez producenta oprogramowania; taka instalacja tylko w celach testowych. Camunda zaleca użycie Kubernetes
Różnice między klastrami Docker a klastrami Kubernetes:
-
Cel i Zastosowanie:
- Klastry Docker: Służą do uruchamiania i zarządzania pojedynczymi kontenerami. Idealne dla prostych aplikacji.
- Klastry Kubernetes: Oferują zaawansowane zarządzanie kontenerami w dużych, złożonych aplikacjach. Umożliwiają automatyzację i orkiestrację.
-
Architektura:
- Klastry Docker: Zazwyczaj działają na jednym hoście; mogą korzystać z Docker Swarm dla podstawowej orkiestracji.
- Klastry Kubernetes: Składają się z węzła master i węzłów roboczych. Mają złożoną architekturę z różnymi komponentami.
-
Zarządzanie Zasobami:
- Klastry Docker: Ręczne zarządzanie kontenerami, bez automatycznego monitorowania.
- Klastry Kubernetes: Automatyczne zarządzanie stanem aplikacji, samodzielne monitorowanie i działania naprawcze.
-
Funkcjonalność:
- Klastry Docker: Podstawowe funkcje uruchamiania i zarządzania kontenerami.
- Klastry Kubernetes: Zaawansowane funkcje, takie jak automatyczne skalowanie, aktualizacje bez przestojów i integracja z CI/CD.
Tworzymy klaster Kubernetes w kontenerze Dokera
Pobranie Kind
W tym celu wykorzystamy Kind. Kind (Kubernetes IN Docker) to narzędzie open-source, które umożliwia uruchamianie klastrów Kubernetes lokalnie w kontenerach Docker. Jest zaprojektowane głównie dla deweloperów i testerów, którzy potrzebują lekkiego i łatwego w zarządzaniu środowiska Kubernetes do celów testowych i deweloperskich.
Kluczowe cechy Kind:
- Klastry Kubernetes w Dockerze: Uruchamia całe klastry Kubernetes wewnątrz kontenerów Docker, co pozwala na szybkie tworzenie i usuwanie klastrów.
- Przyjazne dla deweloperów: Idealne do testowania aplikacji Kubernetes, Helm Charts oraz eksperymentowania z funkcjami Kubernetes bez konieczności posiadania pełnej infrastruktury.
- Zgodność z Kubernetes: Klastry utworzone za pomocą Kind są zgodne z oficjalnymi specyfikacjami Kubernetes, co umożliwia realistyczne testowanie.
- Łatwa instalacja: Wymaga jedynie Dockera i Kind, a tworzenie i zarządzanie klastrami odbywa się za pomocą prostych poleceń, takich jak
kind create cluster
.
Pobieramy Kind ze strony https://kind.sigs.k8s.io. Jeśli planujesz używać tego polecenia często, dodaj je do 'Path' Windows.
Tworzymy klaster w Dokerze
By rozpocząc ten etap musisz oczywiście mieć zainstalowany Docker w systemie - pobierasz oprogramowanie Docker Desktop ze strony docker.com. Być może wolisz wykorzystać do tego celu Hyper-V; Docker nie jest jedynym możliwym środowiskiem klastrów Kubernetes. Tworzymy klaster w Dokerze ktora bedzie domem dla naszych modułów Camundy:
.\kind.exe create cluster --name camunda-platform-local
W rezultacie wykonania tego polecenia zobaczysz odpowiedz podobną do tej poniżej
PS C:\temp> .\kind.exe create cluster --name camunda-platform-local
Creating cluster "camunda-platform-local" ...
✓ Ensuring node image (kindest/node:v1.31.0) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-camunda-platform-local"
You can now use your cluster with:
kubectl cluster-info --context kind-camunda-platform-local
Thanks for using kind! 😊
Dlaczego w Windows instaluje się Minikube zamiast samego Kubernetes?
Instalacja Minikube zamiast pełnej wersji Kubernetes na systemie Windows (i innych systemach operacyjnych) wynika z kilku powodów:
1. Skomplikowana Architektura Kubernetes
Kubernetes to kompleksowy system orkiestracji kontenerów, który wymaga wielu komponentów, takich jak:
- API Server
- Controller Manager
- Scheduler
- Kubelet
- Kube Proxy
- etcd (baza danych)
Zainstalowanie wszystkich tych komponentów na lokalnej maszynie byłoby skomplikowane i wymagałoby zaawansowanej konfiguracji. Minikube upraszcza ten proces.
2. Lokalne Środowisko
Minikube jest narzędziem zaprojektowanym do tworzenia lokalnych klastrów Kubernetes. Jest idealne do:
- Rozwoju i testowania: Umożliwia deweloperom łatwe uruchamianie i testowanie aplikacji w środowisku Kubernetes bez potrzeby zarządzania pełnym klastrem.
- Szybkiej konfiguracji: Minikube automatycznie konfiguruje klaster na lokalnej maszynie, co znacznie przyspiesza proces uruchamiania Kubernetes.
3. Wymagania Systemowe
Pełne wdrożenie Kubernetes na lokalnej maszynie może wymagać znacznych zasobów systemowych oraz odpowiedniej infrastruktury, co nie jest idealne dla deweloperów pracujących na komputerach osobistych. Minikube pozwala na uruchamianie klastra w bardziej ograniczonym środowisku.
4. Szybka Iteracja
Minikube umożliwia szybkie uruchamianie i zatrzymywanie klastra, co jest szczególnie przydatne w procesie ciągłej integracji i dostarczania (CI/CD).
5. Wsparcie dla Różnych Środowisk Wirtualizacyjnych
Minikube działa w różnych środowiskach wirtualizacyjnych (np. VirtualBox, Hyper-V, Docker), co czyni go bardziej elastycznym narzędziem dla deweloperów.
Podsumowanie
Minikube jest świetnym rozwiązaniem dla deweloperów, którzy chcą szybko i łatwo pracować z Kubernetes bez konieczności zarządzania pełnym klastrem, co wymagałoby znacznie więcej zasobów i wiedzy technicznej. Dla bardziej zaawansowanych wdrożeń produkcyjnych, organizacje zwykle korzystają z usług zarządzanych lub wdrożeń wieloklastrowych.