Co to jest OpenStack?
Czytając artykuł na temat wykorzystania kubernetes przez różne platformy chmurowe, natrafiłem na produkt OpenStack. Klasyfikował się on na 3 pozycji (wśród chmur, 4 z on-premises), wyprzedzając Azure. A to znaczy, że warto się przynajmniej na tyle zainteresować produktem, by wiedzieć co to i po co on jest.
TL;DR
OpenStack to chmura, którą można zainstalować na swoim sprzęcie i tworzyć zarówno chmury prywatne, jak i publiczne. Cały projekt jest open source i został zainicjonowany przez NASA oraz Rackspace.
Krótka historia
W 2010 roku NASA i Rackspace Hosting zjednoczyli się i stworzyli inicjatywę open source – OpenStack. Platformę do tworzenia chmur prywatnych, jak i publicznych. Wraz z czasem coraz więcej firm i organizacji dołączało się do wspierania projektu: HP, Oracle, Debian, Intel, Red Hat czy też Ubuntu. Ogólnie masa znanych firm.
Co nie przeszkodziło NASA stwierdzić, że jednak ten fajny pomysł nie jest dla nich taki fajny i po 3 latach nie widzą postępu, więc powiedzieli papa. Jednak cała architektura, jak i pierwsze wersje OpenStack brały dużo z NASA. Co też wpłynęło na nazwy poszczególnych elementów/modułów systemu.
Jak każda chmura, przychodzi ona ze swoim nazewnictwem i swoimi modułami, jak i szeregiem mini narzędzi do tworzenia poszczególnych elementów w systemie.
Co się składa na OpenStack?
OpenStack składa się z szeregu modułów. Część z modułów udostępnia narzędzie, z którego można korzystać. Co lepsze, z powodu, że OpenStack został napisany w Pythonie, to wszystkie narzędzia są dostępne jako paczki python. Próba instalacji tego jakoś bardziej “normalnie” - nie istnieje. Dodatkowo dla mnie nie pojęte jest to, że mam ~10różnych poleceń. To, co zrobił Azure, wydaje się więc fajne: az MODUŁ parametry. Dzięki czemu użytkownik ma jeden punkt dostępu, a nie ~10.
Opisuje po krótce moduły tylko z jednego powodu – ja sam nie rozumiem, co do mnie ludzie mówią lub piszą w sprawie OpenStack. Więc bardzo chciałbym to zrozumieć. Przynajmniej by swift nie kojarzył mi się tylko z językiem programowania a z object storage. Mam nadzieję, że komuś to się też przyda.
- freezer– backupowanie i ratowanie ;)
- ironic– wykorzystanie sprzętu fizycznego, a nie wirtualnego do udostępnienia i zarządzania nim w chmurze.
- nova– to samo co ironic tylko dla maszyn wirtualnych. Dla bare metal zostanie wykorzystany ironic. By działać, potrzebuje minimum keystone, glance i neutron.
- keystone– zarządzanie tożsamością, jak i wsparcie uwierzytelniania, do tego centralny zbiór informacji o użytkownikach i dostępnych dla nich usługach.
- glance– serwis do zarządzania obrazami VM. Taki centralny rejestr dostępnych maszyn VM, z którym możemy skorzystać, jak i też możemy dodać nowe maszyny do rejestru. Glance jednak nie jest odpowiedzialny za “przechowywanie” tych obrazów. To są już inne usługi.
- neutron– w skrócie system do zarządzania sieciami i adresami IP.
- magnum– system do tworzenia orchiestracji kontenerów docker. Sam w sobie nie jest orchestratorem. Może on wykorzystać kubernetes, swarm, jak i mesos.
- horizon– UI/Dashboard do zarządzania OpenStack, nie wszystko jest możliwe, plus za to, że jest.
- sahara– udostępnienie takich usług do przetwarzania danych jak Hadoop, Spark czy Storm.
- trove– DBaaS – Database as a Service.
- designate– umożliwia zarządzanie DNS multi-tenant. Można to nazwać DNS as a Service i podobnie jak magnum on tylko pośredniczy w dostępie do, a nie jest usługą DNS.
- congress– Policy as a Service, umożliwia określanie zasad, jakie powinny być przestrzegane, jak i ich monitorowanie oraz działanie proaktywne i reaktywne. Wykorzystuje inne usługi w celu gromadzenia danych i weryfikacji policy.
- watcher– optymalizacja wykorzystania zasobów.
- octavia– load balancing.
- zaqar– system wiadomości i notyfikacji.
- tricircle– automatyzacja zarządzania siecią dla wielu regionów (powody).
- blazar– system rezerwacji i wypożyczania zasobów.
- searchlight– indeksowanie i przeszukiwanie zasobów OpenStack.
- manila– udostępnia API do zarządzania udostępnieniami dysków. Przynajmniej ja to tak rozumiem. Że niezależnie od systemy plików możemy współdzielić odpowiednie foldery, dyski między innymi zasobami.
- solum– środowisko programistyczne umożliwiające prostą integrację usług OpenStack. Przynajmniej ja to tak rozumiem.
- swift– rozproszony systemem przechowywania blobów. Eventually consistent.
- heat– system orchiestracji chmury w deklaratywny sposób, taki yaml dla k8s czy arm templates w azure.
- mistral– usługa umożliwiająca budowanie przepływów prac bez pisania kodu… tylko trzeba napisać yaml ;)
- barbican– przechowywanie bezpiecznie danych, secure key storage.
- vitrage– narzędzie do analizy problemów w chmurze.
- ceilometer- narzędzie do zbierania danych (sposobie wykorzystywania, zasobach itp.) w znormalizowany sposób i przekazywanie tych danych pomiędzy komponentami OpenStack.
- panko– przechowywanie i przetwarzanie eventów wygenerowanych przez celiometer.
- aodh– jeżeli zdarzy się coś konkretnego (zdefiniowanego), to wykonaj następujące akcje.
Wydaje mi się, że opisałem większość albo wszystkie aktualnie wykorzystywane moduły/komponenty. Jest to na pewno dobry overview. Przynajmniej teraz, jak będziemy gadać o magnumach, to nikt nie skoczy do sklepu ;)
Taka moja obserwacja. Z jednej strony fajnie, że mają różne ciekawe nazwy produktów. Z drugiej strony ciężko jest mi się domyśleć, co autor miał na myśli. Chociaż… może takie nazwy zapadają w pamięć i potem łatwiej się to pamięta?
Wiem jedno, że jakby ktoś do mnie mówił o OpenStack, a ja bym nie znał tej listy słów i modułów, to byłby to dla mnie język chiński.
Podsumowane
Jak dla mnie, by w pełni korzystać z OpenStack, trzeba się dobrze znać na sieciach. Mamy tak naprawdę IaaS, a nie PaaS. Z drugiej strony, mamy kontrolę nad tym, co i jak chcemy. Każda rzecz ma swoje plusy, jak i minusy.
Sam jestem ciekaw, jak będzie się z tego wszystkiego korzystało! :)