Blog IT, Blog Marketing

Docker i Kubernetes. Technologie w pracy DevOpsa

Docker i Kubernetes. Technologie w pracy DevOpsa

Tomasz Staśkiewicz , 21.02.2022 r.

O tym, kim jest DevOps Engineer pisaliśmy w tym artykule. Dla przypomnienia – DevOps pochodzi od połączenia dwóch słów: development – rozwój oraz operations – działania. Model pracy w kulturze DevOps jest coraz bardziej popularny, ale czy wiesz, z jakimi technologiami pracuje DevOps Engineer na co dzień?W tym artykule dowiesz się też, z jakich narzędzi korzysta, by jego praca była wydajna i efektywna.

  • Czym jest Docker i do czego się go wykorzystuje w pracy DevOps Engineera?
  • Historia Dockera
  • Jak wygląda obraz kontenera i do czego służy?
  • Docker w pracy DevOpsa – budowa środowiska, projektu, instalacja aplikacji na serwerze
  • Czym jest Kubernetes?
  • Ciekawostki o platformie Kubernetes – czy znasz je wszystkie?
  • Wykorzystanie K8 w pracy DevOpsa
  • Główne funkcje Kubernetes
  • Z czego składa się architektura K8?
  • Co warto mieć na uwadze, zanim zainstalujesz K8 po raz pierwszy?

Docker. Czym jest i do czego wykorzystuje go DevOps Engineer?

Docker jest narzędziem, które pozwala na umieszczenie programu wraz z jego zawartością np. bibliotekami czy danymi w wirtualnym kontenerze, który można uruchomić na dowolnym urządzeniu z systemem Linux. Kontenery tworzone za pomocą Dockera są od siebie niezależne i odrębne. Dzięki temu można aktywować dodatkowy system operacyjny z gotową do pracy aplikacją. Chociaż kontenery nie są ze sobą powiązane, mogą się między sobą komunikować za pomocą odpowiednio zdefiniowanych kanałów wymiany informacji. Kontenery są lżejsze niż wirtualizacja, gdyż są uruchamiane na wspólnym systemie operacyjnym.

Krótka historia Dockera

Początki Dockera wiążą się z firmą dotCloud, w której został zaprojektowany jako wewnętrzmy projekt i rozwijany przez Solomona Hykesa i Sebastiena Pahla. W 2013 r. podczas konferencji PyCon został udostępniony publicznie. Obecnie działa jako program open source, ale od 9 lat cieszy się niegasnącą popularnością wśród programistów i DevOps Engineerów na całym świecie.

Obraz kontenera

Mimo że, jak wspomnieliśmy powyżej, kontenery Dockera działają niezależnie od siebie, można je połączyć za pomocą nowego odrębnego kontenera oraz odpowiedniego połączenia sieciowego pomiędzy wszystkimi kontenerami. Aby zbudować obraz kontenera, trzeba zapisać kontener w formie pliku. Obrazem kontenera jest oprogramowanie, na które składają się:

  • kod,
  • środowisko wykonawcze oraz konkretne narzędzia systemowe;
  • biblioteki oraz ustawienia

Wszystkie te elementy są potrzebne do bezpiecznego i efektywnego uruchomienia aplikacji.

Metodę budowania obrazów kontenera można także wykorzystać w projektowaniu obrazu aplikacji (dostarczanie aplikacji w formie obrazów, które można zautomatyzować przy pomocy odpowiednich narzędzi i przyspieszyć tym samym cały proces).

Docker w pracy DevOpsa. Jak można go wykorzystać?

Docker przydaje się do zbudowania środowiska programistycznego, w którym będą projektowane aplikacje. W jaki sposób je zbudować? Przede wszystkim, jeszcze zanim przystąpisz do instalacji Dockera, zapamiętaj regułę KISS lub BUZI, która ułatwi Twoją pracę. Reguła ta oparta jest na prostej zasadzie – Bez Udziwnień Zapisu, Idioto! W skrócie trzymaj się nieskomplikowanej terminologii i narzędzi, by ułatwić pracę sobie i innym członkom zespołu.

Budowa środowiska programistycznego

W jaki sposób zbudować środowisko programistyczne z wykorzystaniem Dockera? Pierwszym krokiem jest oczywiście instalacja samego Dockera, której nie będziemy opisywać w tym kroku. Aby stworzyć pierwsze środowisko programistyczne, wystarczy Ci gotowa baza danych, którą możesz pobrać z oficjalnego repozytorium Dockera. Zawsze wybieraj najbardziej aktualną wersję obrazu bazy danych, aby mieć pewność, że jest stabilna.

Aby poprawnie pobrać obraz bazy danych i stworzyć kontener, przydadzą Ci się następujące parametry:

  • e – ustawia zmienną środowiskową POSTGRES_PASSWORD, można jej używać nieskończoną ilość razy,
  • d – uruchamia polecenie w tle,
  • p 5432:5432 – przekierowanie portu hosta na port kontenera;
  • name – nazwa kontenera,
  • postgres – nazwa obrazu.

Docker Compose

Czym jest Docker Compose? To narzędzie, które pozwala na zadeklarowanie definicji jednego lub kilku kontenerów w jednym pliku (docker-compose.yml). Zamiast uruchamiać poszczególne kontenery osobno, można użyć Docker Compose, aby uruchomić je jednocześnie w środowisku rozwojowym.

Parametry, z których będziesz korzystać w celu szybszego uruchomienia kontenera(ów) za pomocą Docker Compose to:

  • db – czyli identyfikator kontenera;
  • image – wskazanie konkretnego obrazu;
  • environment – definiowanie zmiennych środowiskowych;
  • ports – definiowanie mapowania portów;
  • up – uruchamia zdefiniowane kontenery.

Dzięki temu możesz uruchomić swój kontener za pomocą prostego polecenia: $ docker-compose up -d.

Budowa projektu

Jeśli zbudowałeś już swoje kontenery i zapisałeś plik za pomocą Decor Compose, możesz przejść do budowy konkretnego projektu. W tym celu możesz dodać do swoich kontenerów kolejny z zainstalowaną platformą Camunda BPM. Po odpowiedniej konfiguracji nowego kontenera, szybko i łatwo zakończysz budowę swojego projektu, wykorzystując zainstalowaną Javę 8 i Maven. Wystarczy jedno polecenie: $ mvn install by Twój projekt został zbudowany.

Oczywiście, aby sukcesywnie tworzyć środowiska programistyczne dla konkretnych aplikacji oraz budować projekty, niezbędna jest wiedza z obszaru programowania oraz samych procesów DevOpsowych. Powyższe przykłady miały na celu pokazanie, że wykorzystując Dockera do tworzenia kontenerów z gotowymi aplikacjami, można zwiększyć wydajność procesów w prosty i mniej skomplikowany sposób niż wirtualizacja.

Instalacja aplikacji na serwerze

W tradycyjnym modelu za instalowanie aplikacji na serwerze odpowiedzialni są najczęściej administratorzy serwerów. W zależności od konkretnej platformy i mechanizmami dystrybucji procesy te wyglądają zupełnie inaczej w przypadku aplikacji pisanych w Pythonie, a aplikacji pisanych w Javie. Słowem, aplikacje pisane w różnych językach programowania, wymagają innej metody instalacji i uruchomienia na serwerze.

Instalowanie aplikacji na serwerze z wykorzystaniem Dockera skutecznie niweluje ryzyko związane z brakiem znajomości konkretnych technologii w zespole operacyjnym, ponieważ developerzy najpierw instalują aplikację w swoim środowisku, a następnie przy pomocy Dockera tworzą obraz kontenerów z gotową i działającą aplikacją i dostarczają je osobom z zespołu operacyjnego. W ten sposób można znacznie przyspieszyć wydajność procesów związanych z instalacją aplikacji na serwerze oraz skutecznie zniwelować ryzyko problemu nieznajomości odpowiednich technologii projektowania aplikacji.

Kubernetes

Po raz pierwszy ukazał się w 2014 r. Został stworzony przez firmę Google, a obecnie rozwijany jest przez Cloud Native Foundation. Jego nazwa – kubernetes – pochodzi od greckiego słowa pilot. Czym jest Kubernetes (K8)? To przenośny, rozszerzalny zestaw narzędzi open source służących do wdrażania, utrzymywania, skalowania aplikacji. Ekosystem Kubernetes jest ogromny i stale się rozwija, dzięki temu korzysta się z niego na wielu globalnych serwisach. Jego główną zaletą jest ułatwienie automatyzacji i konfiguracji deklaratywnej – działa z wieloma narzędziami do tworzenia i obsługi kontenerów, w tym z Dokerem.

Ciekawostki o K8

K8, czyli Kubernetes to skrót od litery początkowej litery K oraz ośmiu pozostałych liter.

Miał być wewnętrznym narzędziem Google’a jako narzędzie ułatwiające rozwiązanie orkiestracji kontenerów. Jego pierwotna nazwa to Project Seven of Nine, która była subtelnym mrugnięciem oka dla fanów Star Treka. Powstanie platformy Kubernetes poprzedziło stworzenie na początku XXI w. systemu do zarządzania klastrami, który mógł obsługiwać wiele zadań z ogromnej ilości aplikacji, w równie dużej liczbie klastrów. Ten system, Borg, usprawniano przez 10 lat, by ostatecznie z tych prac narodził się Kubernetes, jaki znamy w obecnej wersji. Kilka miesięcy po oficjalnej premierze Kubernetes, do jego społeczności dołączyły m.in. Docker, Huawei, Red-Hat i IBM. Od momentu nawiązania przez Google współpracy z CNCF, rozwój narzędzi Kubernetes przyspieszył i nie ma zamiaru się zatrzymać w najbliższym czasie.

Do czego wykorzystuje się Kubernetes?

Przede wszystkim narzędzie Kubernetes pozwala na wygodne zarządzanie ruchem w aplikacjach i usługach w chmurze oraz kontrolę zasobów. Dzięki Kubernetes dowiesz się, w jaki sposób i gdzie działają aplikacje w poszczególnych kontenerach oraz z jakich narzędzi i zasobów możesz skorzystać, by efektywnie nimi zarządzać. Jakie są podstawowe funkcje K8?

Główne funkcje K8

Skalowanie, K8 może skalować bez konieczności powiększania zespołu operacyjnego, na podobnej zasadzie, na której Google uruchamia swoje kontenery.

Spójność i łatwość w dostarczaniu aplikacji, niezależnie od obciążeń globalnych i lokalnych.

Można go uruchomić w dowolnym miejscu i czasie, szybko i efektywnie przenosząc obciążenia w wybrane miejsce.

Hosting mikrpserwisów – Kubernetes wraz ze swoim ekosystemem zapewnia wszystkie rozwiązania potrzebne do projektowania aplikacji zgodnie z architekturą mikroserwisów.

Mimo podobieństwa w funkcjonalności K8 i usług PaaS nie można zaliczyć go do tego rodzaju usług, ze względu na to, że domyślne rozwiązania zawarte w K8 są opcjonalne oraz można je dowolnie zmieniać.

Jak wygląda architektura K8?

Architektura K8 jest złożona z:

  • Węzłów (maszyn fizycznych lub wirtualnych), które budują klaster Kubernetes;
  • Węzłów głównych odpowiedzialnych za dystrybucję pracy pomiędzy węzłami roboczymi oraz wykrycie reagowanie na zmiany zachodzące w obrębie klastra;
  • Serwera API, który przetwarza, weryfikuje i wykonuje wszystkie żądania REST;
  • Kontroler, który wykorzystuje serwer API we współdzielonej części klastra, uruchamia sterowniki, monitoruje go i wprowadza zmiany naprawcze;
  • Hamonogram, który monitporuje nowo utworzone pody i wybiera węzeł, w którym można je uruchomić oraz zawiera informacje o tym, jakie zasoby będą potrzebne, by uruchomić konkretną usługę;
  • etcd przechowuje konfigurację współużytkowanego klastra oraz wykrywania usług. Rejestruje zmiany konfiguracji w danym węźle i przekazuje informacje o nich do innych węzłów klastra;
  • Węzły robocze: uruchamiają aplikacje w podach.
  • Każdy węzeł roboczy uruchamia poszczególne komponenty:

    • Kubelet – usługę odpowiadającą za komunikację z węzłem głównym, która jednocześnie zapewnia poprawne działanie kontenerów w obrębie określonej konfiguracji pobranej z serwera API;
    • Kube-proxy – usługę odpowiedzialną za regulowanie ruchu do odpowiedniego kontenera na podstawie adresu IP oraz unikalnego dla każdego urządzenia numeru portu;
    • Container runtime – narzędzie do uruchamiania kontenerów pod, które pobiera odpowiednie obrazy kontenerów, a następnie je uruchamia.

      Przydatna wskazówka dla początkujących

    Jeśli chcesz poczuć się jak DevOps Engineer i sprawdzić swoje umiejętności w projektowaniu i zarządzaniu kontenerami, zacznij od pracy z Minikube – prostym narzędziem open source, dzięki któremu programiści mogą uruchomić lokalny klaster z pojedynczym węzłem. Jeśli poradzisz sobie z pracą na Minikube, możesz śmiało próbować swoich sił jako DevOps. Rozwiń swoją kreatywność i stań się częścią kultury DevOps, która staje się coraz bardziej popularna w branży IT.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej