Kubernetes Service Mesh

Kubernetes Service Mesh
Kubernetes ma wiele rodzajów zasobów, które pomagają wyodrębniać pomysł usług lub mikrousług. Na przykład, jeśli frontend Twojej aplikacji chce wchodzić w interakcje z backendem, nie musi dbać o to, którego Podejdzie, lub nie, nawet adres IP, ma nadzieję, że zasad Backend zajmie się. Kapsuły są eksponowane za pośrednictwem usługi. (Jeśli jesteś nowy w Kubernetes, polecam ten post, aby lepiej zrozumieć, jakie są kapsuły wraz z innymi ważnymi koncepcjami.)

Zasadniczo Kubernetes odsłania Usługa backend wewnętrznie w klastrze i front-end oddziałuje z tą usługą. Krągi, które oferują usługę, można bardzo dobrze wymienić i nikt nic nie zauważył. Ale wraz ze wzrostem funkcji w twoich aplikacjach liczba usług potrzebnych do utrzymania również rośnie. Każda usługa może potencjalnie rozmawiać z każdą inną usługą w klastrze, a wynikowa sieć jest określana jako Siatka serwisowa.

Kubernetes jest wiele dodatków, które pomogą nam uprościć zarządzanie niniejszą Siatką. Wiele klawiszy, takich jak TLS, automatyczne równoważenie obciążenia, zabezpieczanie interfejsów API nawet w sieci wewnętrznej itp. Wiele opcji, takich jak ISTio, Linkerd i Conduit, można zintegrować z Kubernetes, aby to osiągnąć. Będziemy patrzeć na istio w tym poście, ponieważ jest to wersja 1.0 został niedawno ogłoszony.

Wymagania wstępne

Aby zacząć od istio, potrzebujesz działającego klastra Kubernetes. Istnieją trzy sposoby, aby to zdobyć.

  1. Możesz zainstalować MiniKube, aby utworzyć klaster pojedynczego węzła na komputerze lokalnym.
  2. Lub, jeśli używasz Docker w systemie Windows lub Mac, możesz włączyć klaster Kubernetes w jednym węźle w ustawieniach Docker.
  3. Lub możesz korzystać z usług internetowych, takich jak Katacoda Playground. Będziemy tego używać.

Dlaczego warto korzystać z siatki serwisowej?

Instalowanie siatki serwisowej, podobnie jak ISTIO ułatwia pracę z mikrousługami. Rozwijając, nie musisz się martwić o fakt, że Twoja mikrousługi musiałaby zaoferować wsparcie dla wzajemnych TL, równoważenia obciążenia lub innych aspektów, takich jak odkrycie serwisu. Idealna siatka serwisowa pozwala podłączyć mikrousługę, zabezpieczyć je od siebie i od świata zewnętrznego i zarządzać nimi w zorganizowany sposób. Pomaga zarówno programistom, jak i operatorom ogromnym.

Instalowanie istio

Instalowanie ISTIO wymaga posiadania klastra Kubernetes. Jeśli masz pojedynczy klaster węzłów, jak dostajesz z Minikube lub Docker na komputerze, wszystkie polecenia można uruchomić w węźle lokalnym. Jeśli jednak używasz klastra wielu węzłów, takiej jak ta, którą oferuje Katacoda Playground, pamiętaj, że większość poleceń i konfiguracji procedur jest wykonywana w węźle głównym. Tak, wpływa na cały klaster, ale musimy oddziaływać wyłącznie z węzłem głównym.

Zaczynamy od klonowania (lub pobierania) najnowszej wersji ISTIO z Github. Użytkownicy systemu Windows mogą chcieć odwiedzić tę stronę i uzyskać odpowiedni .zamek błyskawiczny plik.

$ curl -l https: // git.IO/GETLATESTISTIO | cii -
$ CD ISTIO-1.0.0

Nazwa Repo może z czasem zmienić się w miarę upływu nowszego wydania w momencie tego pisania 1.0.0 to najnowsza stabilna wersja. To repozytorium zawiera nie tylko rozszerzenie siatki serwisowej, ale także przykładową aplikację o nazwie Bookinfo do celów eksperymentów. Skrypt dodaje również nowy katalog $ PWD/ISTIO-1.0.0/BIN do zmiennej ścieżki.

Ten katalog zawiera ISTIOCTL binarny, który można użyć do interakcji z klastrem. Użytkownicy systemu Windows mogą po prostu zadzwonić do binarnego, przechodząc do folderu ISTIO-1.0.0 \ bin i wzywanie .\ ISTIOCTL Korzystanie z powershell lub wiersza polecenia. Ale jest to opcjonalny dodatek.

Jeśli używasz Mac, możesz to zrobić za pomocą następującego polecenia:

$ Export Path = $ pwd/bin: $ ścieżka

Następnie musimy przedłużyć nasz interfejs API Kubernetes o niestandardowe definicje zasobów (CRD), które Istio zapewnia nam.

$ kubectl Zastosuj -f instalacja/kubernetes/helm/istio/szablony/crds.Yaml

Może to zacząć za kilka sekund, a kiedy już to zrobisz. Odtąd opcje instalacji różnią się w zależności od tego, czy używasz tego do celów produkcyjnych, czy też eksperymentujesz z nim we własnym odizolowanym środowisku.

Zakładamy, że to ostatnie jest i zainstaluj ISTIO bez uwierzytelniania TLS.

$ kubectl Zastosuj -f instalacja/kubernetes/istio -demo.Yaml

Utworzy to nowy obszar i istio-system, w którym zostaną zainstalowane wszystkie różne komponenty, takie jak Istio-Pilot i Ingress Gateway.

Wdrożenie aplikacji i wtryskiwacz ISTIO

Oto przydatność istio. ISTIO dodaje do twoich usług serweryjnie SIDECAR, a odbywa się to bez modyfikowania rzeczywistego kodu aplikacji. Jeśli włączony jest automatyczny intoptor ISTIO-SIDECAR. Możesz oznaczyć przestrzeń nazw za pomocą ISTIO INCETINCJA = W razie wdrożenia aplikacji w tej przestrzeni nazw same PODS będą miały wyspecjalizowane kontenery Envoy wraz z kontenerami dla aplikacji podstawowej. Na przykład oznaczmy domyślną przestrzeń nazw

$ kubectl etykieta przestrzeń nazw Domyślna ISTIO INCETINCJA = włączona

Teraz wdrożmy przykładową aplikację Bookinfo w tej przestrzeni nazw. Z katalogu głównego przedstawiciela ISITIO, który klonowaliśmy, uruchom:

$ kubectl Zastosuj -f próbki/bookinfo/platforma/kube/bookinfo.Yaml

Możesz wymienić wszystkie strąki działające tutaj:

$ kubectl get PODS

Wybierz dowolne kapsuły z tych i zobacz jego szczegóły. Na przykład jeden z kapsuli z aplikacji Bookinfo w moim wdrożeniu nazywa się szczegółami-V1-6865B9B99D-6MXX9

$ kubectl Opisz pods/detale-v1-6865b9b99d-6mxx9

W opisie zauważysz, że kapsuła zawiera dwa kontenery, najpierw jest elementem faktycznego uruchamiania przykładów aplikacji obrazu-bookinfo-details-v1: 1.8.0, a drugi to istio-proxy działający obraz GCR.IO/ISTIO-Rulease/ProxyV2: 1.0.0 .

ISTIO oferuje drobnoziarnistą kontrolę nad twoją siatką serwisową, ponieważ wstrzykuje te pojemniki do samych strąków, w których przebywają Twoje aplikacje. To w połączeniu z łatwym w użyciu TLS do komunikacji i drobnoziarnistej kontroli ruchu jest jednym z wielu powodów, dla których duże aplikacje mogą skorzystać z siatki serwisowej, takiej jak istio.

Bibliografia

Rzeczywista architektura ma wiele komponentów, takich jak pilot, cytadela i mikser, każdy z własną ważną rolą do wykonania. Możesz dowiedzieć się więcej o tych komponentach tutaj i spróbować wdrożyć własną mikrousługę tutaj.