Ostatnio czytając artykuł na temat wykorzystania kubernetes przez różne platformy chmurowe, natrafiłem na produkt OpenStack. Produkt ten klasyfikował się 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ł on zainicjonowany przez NASA i 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. W raz 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 widza 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 Python to wszystkie narzędzia są dostępne jako paczki python. Próba tego instalacji 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ądzanie 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 na produktu. 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 ciekawe jak będzie się z tego wszystkiego korzystało! :)