Dominik Miklaszewski
by Dominik Miklaszewski

Categories

Tags

Trwa szał na wdrażanie “kubków” (czyli Kubernetesa). Czasem mocno na siłę. Niepotrzebnie. Często zaniepokojeni radiosłuchacze pytają - “jeśli nie docker swarm, docker-compose, to co jak nie Kubernetesy?!”. Jest jeszcze Nomad.

Nomad

Jest to składnik flagowego pakietu Hashicorpa - Nomad, Consul, Vault, Terraform. Hashicorp naprawdę intensywnie pracował przez ostatnie 3 lata, aby uzyskać orkiestrację wagi lekkiej dla aplikacji skonteneryzowanych i nie-skonteneryzowanych, a przy tym zapewnić dostatecznie elastyczną i bezpieczną platformę dla aplikacji zwinnie i ciągle (wciąż?) rozwijanych, wspierając “persistent storage”, skalowalne wykorzystanie zasobów, strefy deploymentu, rollbacki/rollouty, dostania się do kontenera przez wirtualny shell, metryki prometeuszowe, itd. Ostatnio - już w tym roku, dołożył do wersji darmowej “namespace-y”. Integracja z Consulem i Vaultem jest bajecznie prosta i wysoce skalowalna (w porównaniu z integracją np. Kubernetesa z Vaultem).

Ktoś powie, “no tak ..ale jest jeszcze K3s, czy minikube, które stawiam w 10 minut na swoim laptopie”. Fakt, ale w ten sposób można też postawić Nomada - ściągasz binarkę i odpalasz w trybie server i client w jednym. Tak samo Consula i Vaulta. do tego trzy konfigi (w HCLu albo jsonie). Bum.

Informacje na temat innych klocków devopsowego ekosystemu, które lubią współpracować z nomadem znajdziemy tutaj. Lista ta jest co jakiś czas aktualizowana.

Consul

Czym jest Hashicorp Consul? Jest narzędziem służącym do rozwiązywania paru problemów związanych z orkiestracją aplikacji. W wewnętrznym świecie aplikacji skonteneryzowanych i rozproszonych (bye, bye 3-tier architecture) fajnie byłoby, aby usługi, które te aplikacje oferują były odnajdywane, identyfikowane, konfigurowane, testowane (healthchecks), a komunikacja między nimi była bezpieczna i stabilna (jak np. w architekturze microservisowej).

A wszystko to działoby się w sposób wysoce zautomatyzowany i szybki. No i od tego jest Consul ze swoim zcentralizowanym rejestrem usług (wie jakie ma usługi), magazynem klucz-wartość (KV - key-value store, czyli wie która usługa ma jaki konfig, oraz grafami połączeń i wzajemnym TLSem). I w dodatku, działa tak samo niezależnie od platformy (Win, Linux, MacOS). I nadal jest to jedna binarka. W nowszych (tegorocznych) wydaniach consula mamy jeszcze jedną ważna funkcjonalność consul connect, gdzie poprzez CLI (komenda consul ..) uruchamiamy sidecar proxy dla danej usługi, umożliwiając wspólną komunikację z inną usługą poprzez TLS. Rolę “iptables” w tym świecie pełnią intencje consula, tak “intentions” opisujące co z czym może się łączyć a co nie. Taadam, 0-trust architecture! :)

Bardzo ładną i dość precyzyjną charakterystykę consula znajdziecie tutaj. (Oprócz tego, oczywiście dokumentacja na stronach Hashicorp, aczkolwiek czasem inni są to w stanie lepiej ująć i opisać).

Vault

O vaulcie można pisać i pisać. Jest to chyba najbardziej rozpoznawalny (prócz Terraforma) produkt Hashicorpa. Chociażby dlatego, że daje się integrować z wieloma devopsowymi ekosystemami i środowiskami. Nam vault przyda się jako bezpieczny magazyn wszelkich kredek dla przyszłych aplikacji. Vault wykorzysta przy tym rozproszony i bezpieczny storage (KV) oferowany przez consula.

Domowy lab

Bardzo lubię kompaktowość rozwiązania Hashicorpa i dla lepszego poznania i nauczenia się tej technologii zbudowałem sobie w domu lab. Jeśli tam zajrzycie, zobaczycie jak od zera:

  • zbudować stabilną, niezawodną (HA), bezpieczną platformę dla wdrożeń aplikacji skonteneryzowanych (i nieskonteneryzowanych) opartą o orkiestrację Nomada, usługi Consula i bezpieczny magazyn wszelkich danych do uwierzytelniania i autoryzacji - Vaulta ustawionego w trybie “Master-Transit”, tak by za każdym restartem “odpięczętowanie” Vaulta następowało automatycznie),
  • przećwiczyć nieskomplikowany sposób na ustawienie własnego Root CA, intermediate CA i wszelkich potrzebnych nam certyfikatów do bezpiecznej komunikacji samego klastra, jak i komunikacji z klastrem,
  • A na koniec, w ramach ćwiczenia z “deploymentu” na Nomadzie, postawić prawie bezpieczny rejestr obrazów dockerowych zarządzany przez Nomada właśnie.

Plany

Pewnie za jakiś czas, pojawi się tutaj post o bardziej zaawansowanych zabawach z Nomadem, “persistent storage”, integracja z CI, polityki bezpieczeństwa w consulu, zarządzanie równoczesne usługami skon- i nieskonteneryzowanymi, PKI na vaulcie.