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.
Aby zacząć od istio, potrzebujesz działającego klastra Kubernetes. Istnieją trzy sposoby, aby to zdobyć.
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.YamlMoż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.YamlUtworzy 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.YamlMoż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.
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.