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 (Continuous Integration i Continuous Delivery/Continuous Deployment).
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. Kind wykorzystuje K8S.
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.
Zarządząnie projektami i środowiskami oraz migracja projektów w Apache HOP
Projekty w Apache HOP
Projekt to zbiór wszystkich plików używanych przez HOP które są powiązane z naszą pracą. Zwykle obejmuje to metadane, potoki, przepływy pracy, pliki referencyjne, dokumentację i tak dalej. Dobrą praktyką jest wykorzystywanie systemu kontroli wersji, np. GIT, by zapewnić spójność plików.
Organizacja prac w projekty jest wskazana jeśli prace nad rozwiązaniem prowadzi więcej niż jedna osoba. Definiowanie wspólnych zmiennych środowiskowych i konfiguracji na poziomie projektu umożliwia spójność i ułatwia współpracę. Wszyscy członkowie zespołu mogą korzystać z tych samych ustawień, co minimalizuje błędy wynikające z niezgodności konfiguracji.
Konfiguracje projektu przechowywane są w pliku hop-config.json, z którego hop/configdomyślnie odczytywany jest plik hop-config.json. Użyj zmiennej systemu operacyjnego HOP_CONFIG_FOLDER aby zapisać konfigurację Hop w folderze poza folderem Hop. Umożliwi to zachowanie listy projektów w przypadku zmiany instalacji Hop lub aktualizacji do nowszej wersji Hop.
Projekty mogą dziedziczyć metadane i zmienne z projektu nadrzędnego.
Projekty w Hop Gui będą pamiętać otwarte pliki, poziomy powiększenia i inne ustawienia interfejsu użytkownika.
Tworzenie projektu
Aby utworzyć nowy projekt należy w pasku zadań wybrać symbol 'p+':
W wyniku kliknięcia na tę ikonę pojawi się okno 'Project Properties' w którym zdefiniujemy lokalizację projektu (jeśli folder nie został utworzony wcześniej możemy użyć opcji by go utworzyć), opis projektu, nazwę pliku przetrzymującą ustawienia projektu i inne cechy:
Nie wszystko jest “Sztuczną Inteligencją”
Czym jest wyszukiwanie wektorowe i w jaki sposób współpracuje z modelami językowymi
Bardzo wiele projektów „sztucznej inteligencji” korzysta z techniki zwanej wyszukiwaniem wektorowym. To często najlepszy sposób by z dużego zbioru danych wybrać te informacje które następnie zostaną użyte przez model językowy do przygotowania odpowiedzi na nasze zapytanie. Wyszukiwanie wektorowe bardzo często stosowane jest w Retrieval-Augmented Generation (RAG) - technikach zwiększania dokładności i wiarygodności generatywnych modeli sztucznej inteligencji za pomocą faktów pobieranych ze źródeł zewnętrznych.
Przykład interakcji wyszukiwania wektorowego i LLM
Chcielibyśmy dowiedzieć się "How many liters of water does a Dutch windmill pump out per minute?". Pierwsza czynnością jest przekształcenie naszego zapytania na wektor - proces znajdywania podobnych informacji szuka podobnych wektorów do wektora referencyjnego. W rezultacie przeszukiwania zbioru wektorowa baza danych zwraca kilka rekordów z największym podobieństwem do naszego wzorca (naszego zapytania). Te rekordy są siła rzeczy powiązane kontekstowo z naszym zapytaniem.
Tak uzyskana informacja trafia do Dużego Modelu językowego jako dane które zostaną użyte do przygotowania finalnej odpowiedzi. LLM do wygenerowania odpowiedzi wykorzystał wiedzę zawartą w modelu plus dostarczoną z wektorowej bazy danych.