Istio

menu icon

Istio

Dowiedz się więcej o Istio — otwartej technologii, która zapewnia programistom możliwość bezproblemowego łączenia i zabezpieczania sieci różnych mikrousług oraz zarządzania nimi.

Czym jest Istio?

Istio jest konfigurowalnym rozwiązaniem Open Source typu service mesh, które łączy, monitoruje i zabezpiecza kontenery w klastrze Kubernetes. Istio opracowano z myślą o systemie Kubernetes. Jest to jednak technologia Open Source, która pozwala na tworzenie rozszerzeń — dzięki temu Istio może działać na dowolnym oprogramowaniu klastrowym. Dziś skupimy się na najbardziej popularnym przypadku użycia Istio — w systemie Kubernetes.

Kubernetes jest narzędziem służącym do orkiestracji kontenerów. Jego podstawową jednostką jest węzeł. Węzeł składa się z jednego lub większej liczby kontenerów wraz z systemami plików lub innymi komponentami. Architektura mikrousług może obejmować nawet kilkanaście różnych węzłów, z których każdy reprezentuje inną mikrousługę. Kubernetes zarządza dostępnością i wykorzystaniem zasobów węzłów, zwiększając liczbę zasobników w oparciu o popyt — używa w tym celu opcji autoskalowania zasobników. Istio umieszcza dodatkowe kontenery w zasobnikach, by zwiększyć bezpieczeństwo oraz usprawnić monitoring i zarządzanie.

Ponieważ jest rozwiązaniem Open Source, Istio może działać w dowolnej chmurze publicznej, która je obsługuje, i dowolnej chmurze prywatnej, której administratorzy na to zezwalają.

Poniższe wideo zawiera więcej podstawowych informacji o Istio (5:13):

Sieć typu service mesh

Organizacje, które stawiają na mikrousługi, potrzebują wsparcia dla dziesiątek lub nawet setek swoich aplikacji. Oddzielne zarządzanie poszczególnymi punktami końcowymi oznacza obsługę dużej liczby maszyn wirtualnych (VM) — z uwzględnieniem zapotrzebowania. Oprogramowanie klastrowe, takie jak Kubernetes, może tworzyć zasobniki i je skalować. Kubernetes nie zapewnia jednak routingu, zestawu zasad dotyczących ruchu sieciowego ani skutecznych narzędzi do monitorowania i debugowania.

Poznaj service mesh.

Liczba potencjalnie dostępnych dróg komunikacji zwiększa się wykładniczo wraz ze wzrostem liczby usług. Dwie usługi mają tylko dwie ścieżki komunikacyjne. Trzy usługi mają ich sześć, a 10 usług — aż 90. Sieć typu service mesh to pojedynczy system do konfiguracji tych ścieżek, który umożliwia stworzenie strategii komunikacji.

Zapewnia niezbędne narzędzia i kieruje komunikacją zgodnie z wcześniej ustalonymi parametrami. Oznacza to, że zamiast konfigurować działający kontener (lub pisać w tym celu kod) administrator może wprowadzić informacje o konfiguracji do systemu service mesh, który wykonuje pracę za niego. Do tej pory było to możliwe tylko w przypadku serwerów WWW i komunikacji między usługami.

Najpowszechniejszym sposobem wykorzystywanym w tym celu w klastrach jest wzorzec „przyczepki” (sidecar pattern). Zgodnie z tą koncepcją wewnątrz zasobnika umieszczany jest nowy kontener, który kieruje ruchem między usługami oraz kontenerami i monitoruje go.

Istio i Kubernetes

Jak już wspominaliśmy, rozwiązanie Istio rozszerza możliwości platformy Kubernetes — dodaje kontenery, które są praktycznie niewidoczne dla programistów i administratorów. Takie „przyczepki” działają jako pośrednicy, kierując ruchem i monitorując interakcje zachodzące między komponentami. Istio i Kubernetes współpracują w trzech obszarach: konfigurowania, monitorowania i zarządzania.

Konfigurowanie

Podstawową metodą tworzenia konfiguracji na platformie Kubernetes jest komenda kubectl, zwykle „kubectl -f <nazwa pliku>”, z wykorzystaniem pliku YAML. Użytkownicy Istio mogą uruchamiać różne typy plików YAML w taki sposób albo też korzystać z nowej, opcjonalnej komendy ioctl.

Monitorowanie

Z Istio możesz łatwo monitorować sprawność swoich aplikacji działających w systemie Kubernetes. Istio umożliwia wizualizację stanu aplikacji i zarządzanie nim, zapewniając lepszy wgląd w klastry i węzły niż sama platforma Kubernetes.

Zarządzanie

Z uwagi na to, że interfejs Istio jest praktycznie taki sam jak ten oferowany przez Kubernetes, korzystanie z niego nie wymaga dodatkowego nakładu pracy. Istio umożliwia użytkownikowi tworzenie strategii, które mają wpływ na cały klaster Kubernetes i pozwalają na zarządzanie nim. Skraca to czas potrzebny do zarządzania poszczególnymi klastrami i eliminuje konieczność korzystania z niestandardowego kodu zarządzania.

Korzyści

Główne korzyści zapewniane przez service mesh obejmują usprawnione debugowanie, monitorowanie i routing oraz większe bezpieczeństwo i wydajniejsze wykorzystanie. Dzięki Istio zarządzanie większym zestawem usług wymaga mniej wysiłku.

Usprawnione debugowanie

Załóżmy na przykład, że usługa ma wiele zależności. Usługa pay_claim w firmie ubezpieczeniowej wywołuje usługę deductible_amt, która z kolei wywołuje usługę is_member_covered i tak dalej. Złożony łańcuch zależności może składać się z 10 lub 12 wywołań usług. Jeśli jedno z tych 12 wywołań zakończy się niepowodzeniem, poskutkuje to ciągiem błędów, takich jak błąd typu 500 lub 400. Możliwe też, że system przestanie odpowiadać.

Aby debugować taki zestaw wywołań, można użyć stosu wywołań. Istio daje programistom zajmującym się interfejsem wgląd w to, które elementy wychodzą z serwerów WWW i w jakiej kolejności się pojawiają, a także umożliwia ich kontrolę. Programiści mogą skorzystać z diagramu kaskadowego, który usprawnia debugowanie.

Przykład nie pokazuje jednak, co dzieje się wewnątrz centrum przetwarzania danych — jak callback =parselLotamaAudiences wywołuje cztery inne usługi WWW i które z nich reagują wolniej. W dalszej części poznamy zapewniane przez Istio narzędzia do śledzenia wywołań funkcji — na diagramie podobnym do tego.

Monitorowanie i opcje obserwowania

Zespoły zajmujące się tworzeniem i eksploatacją oprogramowania oraz administratorzy IT mogą monitorować ruch, aby uzyskać informacje o opóźnieniach, czasie pracy usługi, wartościach procentowych dotyczących błędów w odniesieniu do ogółu ruchu itp. Często doceniają też dostęp do panelu kontrolnego. Umożliwia on wizualizację sumy, średniej lub wielkości mierzonej w czasie i wgląd w konkretny węzeł, zasobnik lub konkretną usługę. Kubernetes natywnie nie posiada tej funkcji.

Strategia

Domyślnie Kubernetes pozwala na komunikację między wszystkimi zasobnikami. Istio umożliwia administratorom tworzenie strategii określających to, które usługi mogą ze sobą współpracować. Dlatego też usługi mogą wywoływać tylko te usługi, które rzeczywiście są od nich zależne. Inną strategią jest ograniczenie częstotliwości wywołań, co zapobiega blokowaniu usług przez nadmierny ruch i atakom DoS.

Routing i równoważenie obciążeń

Domyślnie Kubernetes udostępnia „okrężną” metodę równoważenia obciążeń. Jeśli mikrousługa obejmuje sześć zasobników, Kubernetes zrównoważy obciążenie, wysyłając żądania kolejno do każdego z nich, po czym zaczyna proces od początku. Czasami jednak przedsiębiorstwo wdraża różne edycje tej samej usługi.

Najprostszym przykładem może być wzorzec wdrożenia blue-green. W takim przypadku oprogramowanie może stworzyć zupełnie nową wersję aplikacji bez wysyłania do niej użytkowników systemów produkcyjnych. Po zaakceptowaniu takiej nowej edycji przedsiębiorstwo może zatrzymać stare serwery na wypadek awarii.

Z Istio sprowadza się to do użycia znaczników w pliku konfiguracyjnym. Administratorzy mogą też używać etykiet, aby wskazać typ usługi, z którą ma zostać nawiązane połączenie, oraz budować reguły oparte na nagłówkach. W takiej sytuacji użytkownicy beta mogą korzystać z najbardziej aktualnego zasobnika z najnowszą wersją, a pozostali użytkownicy — ze stabilniejszej wersji.

„Bezpieczniki”

Jeśli usługa jest zbyt obciążona lub nie działa, dodatkowe żądania nie odniosą skutku i będą jeszcze bardziej obciążać system. Istio śledzi błędy i opóźnienia, dlatego może wymusić wstrzymanie — odciążając usługę — po osiągnięciu liczby żądań określonej w strategii. Strategię tę można wykorzystać w całym klastrze, tworząc niewielki plik tekstowy i nakazując Istio korzystanie z niego jako nowej strategii.

Bezpieczeństwo

Istio domyślnie zapewnia narzędzia w zakresie tożsamości, strategii i szyfrowania oraz mechanizmy uwierzytelniania, autoryzacji i kontroli. Wszystkie zarządzane zasobniki, które komunikują się z innymi, będą wykorzystywały zakodowany przesył informacji, zapobiegając obserwowaniu komunikacji. Usługa ochrony tożsamości w połączeniu z szyfrowaniem zapewnia, że żaden nieautoryzowany użytkownik nie sfałszuje wywołania usługi. Dzięki Istio specjaliści ds. bezpieczeństwa i operacji zyskują narzędzia do monitorowania, których wykorzystanie nie wymaga dużego nakładu pracy.

Uproszczona administracja

Tradycyjne aplikacje nadal potrzebują funkcji w zakresie identyfikacji, strategii i zabezpieczeń oferowanych przez Istio. Programiści i administratorzy nadkładają pracy, ponownie wdrażając te same zasady dotyczące bezpieczeństwa w każdej usłudze. Istio ich odciąża, pozwalając na wdrożenie strategii bezpieczeństwa dla całego klastra z poziomu pojedynczego panelu sterowania. Dzięki narzędziom Istio do debugowania i kontroli dostępu oraz panelom kontrolnym opisanym poniżej możesz z łatwością dodać wtyczkę w wierszu komend bez przechodzenia do pełnej strony WWW.

Przykłady

Wizualizacja usług

Istio 1.1 zawiera nowy dodatek o nazwie Kiali, który umożliwia wizualizację działającą w przeglądarce WWW. Można z niej korzystać, aby śledzić żądania usług, sprawdzać szczegóły, a nawet eksportować historię żądań w formacie JSON do wykorzystania według własnych potrzeb. Poniżej przedstawiamy wykres zależności dla obciążeń wygenerowany w czasie rzeczywistym w oparciu o faktycznie zależne od siebie usługi. Wykres jest oparty na obserwacjach ruchu.

Obraz nowego dodatku Kiali, umożliwiającego wizualizację działającą w przeglądarce WWW

Śledzenie wywołań usługi

Jaeger, komponent Istio, umożliwia śledzenie dowolnej usługi. W tym przykładzie prześledziliśmy stronę produktu. Kropka na pierwszej ilustracji oznacza wywołanie usługi. Klikając kropkę, zyskujemy dostęp do diagramu kaskadowego, który pozwala nam prześledzić żądania i odpowiedzi danej usługi.

Obraz usługi Jaeger, komponentu Istio, zapewniającego śledzenie dowolnej usługi.  W tym przykładzie prześledziliśmy stronę produktu.  Każda kropka na pierwszej ilustracji oznacza wywołanie usługi.

Można też bliżej przyjrzeć się stronie produktu. W tym przypadku widzimy, że błędy znajdują się na samej stronie — szczegóły zostały zwrócone pomyślnie.

Obraz strony produktu.  W tym przypadku widzimy, że błędy znajdują się na samej stronie — szczegóły zostały zwrócone pomyślnie.

Panele kontrolne

Istio udostępnia liczne gotowe do wykorzystania panele kontrolne do monitorowania stanu i wydajności systemu. Mierzą one m.in. wykorzystanie zasobów procesora i pamięci, zapotrzebowanie na ruch danych, liczbę błędów 400 i 500 oraz czas obsługi żądań. A co najważniejsze — są dostępne po zainstalowaniu i uruchomieniu Istio oraz rozwiązania Grafana, jednego z dołączonych narzędzi Open Source do obsługi paneli kontrolnych Istio. Istio udostępnia również dwa inne panele kontrolne: Kiali i Jaeger.

Obraz wielu paneli kontrolnych Istio (gotowych do użycia) do monitorowania stanu i wydajności systemu.

Istio a Envoy

Istio używa istotnie rozszerzonej edycji rozwiązania Envoy do monitorowania, zarządzania i rejestrowania. Każdy zasobnik wymaga śledzenia, a Istio musi agregować i dostarczać informacje o wszystkich zasobnikach. Alternatywą dla Istio byłoby wdrożenie Envoy bezpośrednio w klastrze Kubernetes i napisanie kodu zarządzania. Stanowiłoby to jednak kalkę możliwości zapewnianych przez Istio, obarczoną przy tym błędami i kosztami projektowymi.

Kursy

Serwis WWW Istio (odsyłacz prowadzi poza IBM) zawiera wiele przydatnych dokumentów oraz instrukcje, jak rozpocząć pracę z rozwiązaniem Istio. 

Istio i IBM

Zarządzana edycja Istio jest dostępna w ramach usługi IBM Cloud Kubernetes Service. Usługa zapewnia bezproblemową instalację Istio, automatyczne aktualizacje i zarządzanie cyklem życia komponentów warstwy sterującej, a także integrację z narzędziami do rejestrowania i monitorowania platformy. Rozszerz swoje nowe lub istniejące klastry o zarządzaną integrację z Istio i przejmij kontrolę nad mikrousługami. Jeśli chcesz dowiedzieć się więcej na temat Knative, zapoznaj się z podręcznikiem „Knative: podstawowy podręcznik”.

Dowiedz się więcej o zarządzanym narzędziu Istio w usłudze IBM Cloud Kubernetes Service

Sprawdź, jak zarządzana platforma Kubernetes może pomóc Ci w migracji do chmury. Obejrzyj film „Korzyści płynące z użytkowania zarządzanej platformy Kubernetes”:

Aby dowiedzieć się więcej o najlepszych praktykach i usprawnianiu wdrażania kontenerów w środowiskach produkcyjnych, przeczytaj raport „Kontenery i Kubernetes w środowisku produkcyjnym — najlepsze praktyki”.

Dowiedz się, w jaki sposób rozwiązania typu service mesh mogą pomóc Ci przejąć kontrolę nad komunikacją między usługami — zapoznaj się z przewodnikiem „Istio w pigułce: pierwsze kroki z service mesh” (PDF, 4,1 MB).

Już dziś zacznij korzystać z chmury IBM Cloud. Zarejestruj się tutaj.