Klastrowanie Kubernetes w środowisku wirtualnym Proxmox

W ramach tego projektu przygotowaliśmy środowisko oparte na własnej infrastrukturze, wykorzystujące Kubernetes i Proxmox. Klientem jest software house specjalizujący się w projektowaniu i wdrażaniu aplikacji mobilnych oraz internetowych. Dla klienta kluczowe były: wysoka dostępność, duża przepustowość w zakresie przetwarzania danych oraz szybkie wdrażanie nowych aplikacji.

Branża

geolokalizacja, inżynieria danych

Lokalizacja

Polska

Czas

01 - 09.2020

Wykorzystane technologie

Kubernetes Proxmox PostgreSQL OrientDB

Kontekst

Głównym celem projektu było osiągnięcie wysokiej elastyczności, dużej przepustowości w przetwarzaniu danych oraz wysokiej dostępności środowisk, na których hostowane jest oprogramowanie w postaci oferowanych produktów, tj. aplikacji. Wymaganiem było wdrożenie nowoczesnych i wiodących technologii, usprawniających istniejące procesy poprzez deployment przygotowany i skonfigurowany w ramach własnej infrastruktury klienta.

Cele

Celem projektu było przygotowanie środowiska o wysokiej dostępności z wykorzystaniem wiodącej technologii – Kubernetes, osadzonego w środowisku wirtualizowanym. Założenia techniczne obejmowały również zapewnienie płynnego skalowania poziomego i pionowego dla szybkiego przetwarzania danych, szybkiego i prostego wdrażania nowych aplikacji, automatycznego tworzenia środowisk, a także zewnętrznego dostępu do aplikacji za pomocą publicznych adresów IP i Load Balancerów. Dodatkowo zaplanowano instalację dodatkowych aplikacji działających jako osobne kontenery, służących do komunikacji z usługami uruchomionymi poza klastrem Kubernetes, ale w ramach tej samej wirtualnej infrastruktury.

Metoda

Po zdefiniowaniu wszystkich wymagań technicznych i zaakceptowaniu zaproponowanego rozwiązania przez klienta, podzieliliśmy zakres prac na kilka etapów technicznych. Pierwszym krokiem było przygotowanie środowiska pod Kubernetes – początkowe testy przeprowadzono na wirtualizacji VMWare, jednak zostały one odrzucone ze względu na niespełnienie wymagań dotyczących sieci i przepustowości. W kolejnym etapie zaproponowaliśmy wirtualizację Proxmox, która spełniła wymagania sieciowe, i na tej platformie został uruchomiony Kubernetes.

Następnie skonfigurowaliśmy zewnętrzny dostęp przez publiczne adresy IP oraz przygotowaliśmy manifesty Kubernetes dla: deploymentów, ingressów i usług dla każdej z planowanych aplikacji. Skonfigurowaliśmy również autoryzację i mechanizmy umożliwiające automatyczne wdrażanie aplikacji za pomocą narzędzia CI/CD klienta. Dodatkowo przeprowadziliśmy konfigurację potoków danych, przygotowaliśmy osobne maszyny wirtualne (KVM) oraz zainstalowaliśmy i skonfigurowaliśmy aplikacje działające poza klastrem Kubernetes (PostgreSQL, OrientDB).

Podsumowanie

Stworzyliśmy gotowe rozwiązanie do automatycznej instalacji klastra Kubernetes, opartego na KVM w ramach wirtualizacji Proxmox, na dedykowanym serwerze z jednym adresem IP publicznym. Tym samym spełniliśmy założenia i cele projektu - osiągnięto wymaganą wysoką przepustowość przetwarzania danych, uproszczoną i szybką konfigurację usług oraz zautomatyzowane wdrażanie aplikacji. Rozwiązanie to ułatwia codzienną pracę zespołu technicznego oraz pozwala na bardziej efektywne i skuteczne dostarczanie produktów klienta jego odbiorcom i partnerom biznesowym.