Kubernetes Service Mesh

Kubernetes Service Mesh
Kubernetes hat viele Ressourcentypen, mit denen Sie die Idee von Diensten oder Microservices abstrahieren können. Wenn beispielsweise das Frontend Ihrer App mit dem Backend interagieren möchte, muss es sich nicht darum kümmern, welcher Pod es sucht, oder nicht einmal, welche IP. Pods werden über einen Service freigelegt. (Wenn Sie in Kubernetes neu sind, empfehle ich diesen Beitrag, um besser zu verstehen, was Pods zusammen mit anderen wichtigen Konzepten sind.)

Im Wesentlichen enthüllt Kubernetes a Backend -Service Intern im Cluster und im Front-End interagieren mit diesem Service. Die Schoten, die den Service anbieten, können sehr gut ersetzt werden und niemand würde etwas bemerken. Wenn die Funktionen in Ihren Anwendungen jedoch wachsen. Jeder Dienst kann möglicherweise mit jedem anderen Dienst im Cluster sprechen, und das resultierende Netzwerk wird als als als bezeichnet Service -Netz.

Es gibt viele Add-Ons für Kubernetes, die uns helfen, die Verwaltung dieses Service-Netzes zu vereinfachen. Viele Schlüsselfunktionen wie TLS, automatisierter Lastausgleich, Sicherung von APIs auch im internen Netzwerk usw. werden von diesen Add -Ons angeboten. Viele Optionen wie ISTIO, Linkerd und Leitung können in Kubernetes integriert werden, um dies zu erreichen. Wir werden in diesem Beitrag in Istio suchen, da es Version 1 ist.0 wurde kürzlich bekannt gegeben.

Voraussetzungen

Um mit Istio zu beginnen, benötigen Sie einen funktionierenden Kubernetes -Cluster. Es gibt drei Möglichkeiten, das zu bekommen.

  1. Sie können Minikube installieren, um einen einzelnen Knotencluster auf Ihrer lokalen Maschine zu erstellen.
  2. Oder wenn Sie Docker unter Windows oder Mac verwenden.
  3. Oder Sie können Online -Dienste wie Katacoda Playground nutzen. Wir werden das verwenden.

Warum ein Service -Netz verwenden??

Das Installieren eines Service -Netzes, wie Istio, erleichtert die Arbeit mit Microservices. Während der Entwicklung müssen Sie sich keine Sorgen darüber machen, dass Ihr Microservice Unterstützung für gegenseitige TLs, Lastausgleich oder andere Aspekte wie Service Discovery bieten müsste. Mit einem idealen Service -Mesh können Sie Microservices anschließen, sie voneinander und aus der Außenwelt sichern und auf organisierte Weise verwalten. Es hilft sowohl den Entwicklern als auch den Betreibern immens.

ISTIO installieren

Die Installation von ISTIO erfordert einen Kubernetes -Cluster. Wenn Sie einen einzelnen Knotencluster haben, wie Sie es mit Minikube oder Docker auf dem Desktop bekommen, können alle Befehle auf Ihrem lokalen Knoten ausgeführt werden. Wenn Sie jedoch einen Multi-Knoten-Cluster wie den von Katacoda Playground anbietet, denken Sie daran, dass die meisten Befehle und Einrichtungen auf dem Masterknoten durchgeführt werden. Ja, es betrifft den gesamten Cluster, aber wir müssen nur mit dem Masterknoten interagieren.

Wir beginnen mit dem Klonen (oder Herunterladen) der neuesten Veröffentlichung von Istio von GitHub. Windows -Benutzer möchten diese Seite möglicherweise besuchen und die entsprechenden erhalten .Reißverschluss Datei.

$ curl -l https: // git.io/getLatestistio | Sch -
$ cd iSTIO-1.0.0

Der Name des Repos kann sich im Laufe der Zeit ändern, wenn neuere Veröffentlichungen zum Zeitpunkt dieses Schreibens durchkommt 1.0.0 ist die neueste stabile Veröffentlichung. Dieses Repo enthält nicht nur die Service -Mesh -Erweiterung, sondern auch eine Beispiel -App namens BookInfo für Experimentierzwecke. Das Skript fügt auch das neue Verzeichnis $ PWD/ISTIO-1 hinzu.0.0/bin zu deiner Pfadvariable.

Dieses Verzeichnis enthält Istioctl Binär, mit dem mit dem Cluster interagiert werden kann. Windows -Benutzer können einfach den Binary aufrufen, indem Sie in den Ordner gehen Istio-1.0.0 \ bin und rufen .\ istioctl Verwenden von PowerShell oder Eingabeaufforderung. Aber es ist ein optionales Add-On.

Wenn Sie Mac verwenden, können Sie dies mit dem folgenden Befehl tun:

$ export path = $ pwd/bin: $ path

Als nächstes müssen wir unsere Kubernetes -API mit benutzerdefinierten Ressourcendefinitionen (CRDs) erweitern, mit.

$ kubectl anwenden -f install/kubernetes/helm/iStio/templates/crds.Yaml

Dies kann in wenigen Sekunden wirksam werden und sobald es fertig ist, haben Ihr Kube-Apiserver IStio-Erweiterungen in sie eingebaut. Von hier an variieren die Installationsoptionen je nachdem, ob Sie dies für Produktionszwecke verwenden oder ob Sie in Ihrer eigenen isolierten Umgebung damit experimentieren.

Wir gehen davon aus.

$ kubectl anwenden -f install/kubernetes/iStio -Demo.Yaml

Dadurch wird ein neues Namespace-Istio-System erstellt, in dem alle verschiedenen Komponenten wie Istio-Pilot und Ingress Gateway installiert werden.

Anwendungsbereitstellung und ISTIO -Injektor

Hier kommt der Nutzen von Istio. Istio fügt Ihren Diensten Sidecar -Proxys hinzu, und dies geschieht ohne Änderung des tatsächlichen Code Ihrer Anwendung. Wenn der automatische ISTIO-SIDECAR-Injektor aktiviert ist. Sie können einen Namespace mit iStio-injection = aktiviert kennzeichnen. Wenn Ihre Anwendung in diesem Namespace bereitgestellt wird. Lassen Sie uns beispielsweise den Standard -Namespace beschriften

$ kubectl Label Namespace Standard istio-Injection = aktiviert

Lassen Sie uns nun die Beispielbuch -Bookinfo -App in diesem Namespace bereitstellen. Aus dem Wurzelverzeichnis des Isitio -Repräsentanten, den wir kloniert haben, rennen Sie:

$ kubectl anwenden -f -Samples/bookInfo/plattform/kube/bookInfo.Yaml

Sie können alle hier laufenden Schoten auflisten:

$ kubectl bekommen Pods

Wählen Sie einen Pod aus denjenigen heraus und sehen Sie sich ihre Details an. Zum Beispiel wird einer der Pods aus der BookInfo-App in meiner Bereitstellung als Details-V1-6865b9b99d-6mxx9 ausgezeichnet

$ kubectl beschreiben Pods/Details-V1-6865b9b99d-6mxx9

In der Beschreibung werden Sie feststellen.8.0 und die zweite ist die Istio-Proxy, die das Bild GCR ausführt.IO/ISTIO-Release/Proxyv2: 1.0.0 .

Istio bietet eine feinkörnige Kontrolle über Ihr Service -Netz. Dies kombiniert mit einfach zu verwendenden TLs für Kommunikation und feinkörniger Verkehrskontrolle ist einer der vielen Gründe, warum große Anwendungen von einem Service -Netz wie ISTIO profitieren können.

Verweise

Die eigentliche Architektur hat viele Komponenten wie Pilot, Citadel und Mixer, die jeweils eine eigene wichtige Rolle spielen müssen. Sie können hier viel mehr über diese Komponenten erfahren und versuchen, hier Ihren eigenen Microservice bereitzustellen.