Dlaczego orkiestracja kontenerów jest ważna?
- 7 min
W tej jednostce możesz śledzić zespół Tailspin, gdy badają strategie realizacji nowej dyrektywy od kierownictwa. Zespół sprawdza, jak platforma Kubernetes może pomóc w przejściu do architektury mikrousług.
Przyszłość jest mniejsza
Sytuacja w Tailspin się poprawia. Na niedawnym spotkaniu poza siedzibą, Andy przedstawił ostatnie sukcesy swojego zespołu w pracy z Azure DevOps, które zostały dobrze przyjęte. Andy przedstawił również pokaz ostatniego projektu weryfikacji koncepcji zespołu przy użyciu kontenerów platformy Docker. Te demonstracje doprowadziły do serii produktywnych rozmów na temat technicznej przyszłości organizacji. Następnego dnia Andy powraca, aby podzielić się wiadomościami z zespołem internetowym Space Game.
Andy: Rzeczy przebiegły naprawdę dobrze na mojej prezentacji wyjazdowej wczoraj. Kierownictwo jest pod wrażeniem pracy, którą wykonaliśmy do tej pory, i wydało nam specjalne zadanie.
Tim: Uh oh. Byłem wystarczająco długo, żeby z daleka dostrzec pułapkę tego typu.
Andy: Nie, jest to dla nas świetna okazja. Kierownictwo było zachwycone naszym pokazem kontenerów Dockera i chce, abyśmy rozważyli wdrożenie architektury mikrousług.
Amita: Mikrousługi? Czy lubisz aplikacje na telefony i zegarki?
Andy: Nie, mikrousługi są typowymi aplikacjami, takimi jak nasza aplikacja internetowa. Główną różnicą jest to, że zamiast kompilować i wdrażać pojedynczą aplikację monolityczną, refaktoryzujemy wszystkie składniki, które byłyby lepiej utrzymywane i zarządzane jako usługi autonomiczne. Następnie tworzymy te usługi, aby były dobre w tym, co robią, i wdrażamy je niezależnie.
Tim: Nie jestem pewien, że lubię dźwięk tego. Mam już do czynienia z tak wieloma usługami w naszych środowiskach. Nie wiem, czy chcę więcej na talerzu.
Andy: To zrozumiałe obawy. Na szczęście istnieje kilka doskonałych narzędzi do zarządzania wieloma kontenerami w danym środowisku. Poproszono nas o wprowadzenie rozwiązania z wieloma kontenerami dla naszej aplikacji internetowej, które jest orkiestrowane przy użyciu platformy Kubernetes. Chcą również wiedzieć, jak będzie to miało wpływ na nasz proces DevOps.
Mara: Czytałem o Kubernetes. Platforma Azure ma doskonałe wsparcie dla Kubernetes poprzez usługę Azure Kubernetes Service i wiem, że istnieje wsparcie dla potoków w usłudze Azure DevOps.
Amita: Ten proces zapowiada się na skomplikowany. Jak będzie to miało wpływ na testowanie?
Mara: Nie powinno to być znaczącą zmianą. Platforma Kubernetes oferuje nam sposób wdrażania w różnych przestrzeniach nazw. Umożliwia to partycjonowanie wdrożeń, dzięki czemu możemy mieć całe środowiska dedykowane do testowania i produkcji. Ponieważ wszystkie działają w tym samym klastrze i korzystają z tych samych kontenerów, środowisko testowania powinno zaoferować to, czego oczekujemy w środowisku produkcyjnym.
Amita: Czy trudno będzie śledzić, gdzie znajduje się jakie środowisko?
Mara: Nie, możemy użyć środowisk usługi Azure DevOps, aby to zrobić. Będziesz w stanie dowiedzieć się, gdzie znajduje się każda usługa i jak się tam znajduje, korzystając z portalu. To wszystko jest zautomatyzowane za pośrednictwem przepływu pracy, więc nie będziemy musieli niczego ręcznie śledzić. Teraz jedynym moim zmartwieniem jest, jak bardzo wpłynie to na nasze doświadczenie w tworzeniu tego projektu.
Andy: Dobrą wiadomością jest to, że wpływ jest minimalny. Zakładając, że nasze projekty są skonfigurowane do budowania kontenerów Docker, wszystko, czego potrzebujemy do wdrożenia na platformie Kubernetes, to pliki manifestu opisujące usługi i ich wdrożenia.
Mara: Czy zastanawiałaś się, co przekształcimy jako drugi kontener? Wiem, że było kilka zespołów, które prosiły nas o udostępnienie naszego rankingu za pośrednictwem internetowego interfejsu API.
Andy: Jestem o krok przed tobą. Zaforkowałem projekt Docker ostatniej nocy i zrefaktoryzowałem funkcjonalność danych rankingowych w osobną mikrousługę. Spowoduje to pozostawienie nam jednego kontenera dla witryny internetowej, a drugiego dla interfejsu API rankingu. Oba kontenery są skonfigurowane tak, aby miały własne publiczne punkty końcowe, które możemy udostępnić każdemu, kto chce korzystać z witryny lub interfejsu API, niezależnie od tego, jakiego stosu technologii używa aplikacja. Jeśli obciążenie wzrośnie znacznie dla któregokolwiek z nich, możemy niezależnie skalować ich kontenery.
Mara: Ten projekt brzmi niesamowicie! Zacznijmy od aktualizacji pipeline'u wdrożeniowego.
Co to jest platforma Kubernetes?
Kubernetes to platforma orkiestracji kontenerów typu open source, która automatyzuje wdrażanie, skalowanie i zarządzanie konteneryzowanymi aplikacjami. Zapewnia ona platformę do uruchamiania systemów rozproszonych w sposób deklaratywny, dynamiczny i może uruchamiać kontenery na wielu hostach, zapewniając wydajne wykorzystanie zasobów i zwiększoną niezawodność.
Zespół Tailspin wybrał rozwiązanie Kubernetes dla tego scenariusza, ponieważ spełnia wszystkie ich potrzeby:
Złożoność wdrożeń obejmujących wiele kontenerów: platforma Kubernetes została zaprojektowana przede wszystkim w celu zautomatyzowania procesów związanych z wdrażaniem i konserwowaniem wdrożeń kontenerów.
Spójność między środowiskami i etapami: podobnie jak kontenery zapewniają spójne wdrożenie dla aplikacji, które zawierają, platforma Kubernetes zapewnia spójne wdrożenie kontenerów zarządzanych przez klaster.
Obsługa usługi Azure DevOps: Usługa Azure DevOps oferuje najwyższej klasy obsługę pracy z platformą Kubernetes.
Łatwość programowania: wpływ platformy Kubernetes na projekt źródłowy jest porównywalny z dodaniem obsługi platformy Docker, która jest minimalna i ograniczona do konfiguracji deklaratywnej.
Wdrożenie rozwiązania Kubernetes znacząco upraszcza proces wdrażania architektury mikrousług, która korzysta z wielu kontenerów platformy Docker.