Kubernetes

Kubernetes-servicemesh

Kubernetes-servicemesh
Kubernetes heeft veel soorten bronnen waarmee u het idee van services of microservices kunt abstraheren. Als de frontend van uw app bijvoorbeeld wil communiceren met de backend, hoeft het niet te schelen naar welke pod het zoekt, of zelfs niet welk IP-adres het hoopt dat een backend-pod zou innemen. Pods worden blootgesteld via een service. (Als Kubernetes nieuw voor je is, raad ik dit bericht aan om beter te begrijpen wat pods zijn, samen met andere belangrijke concepten.)

In wezen onthult Kubernetes een backend-service intern binnen het cluster en de front-end communiceert met deze service. De pods die de service bieden, kunnen heel goed worden vervangen en niemand zou iets merken. Maar naarmate de functies in uw applicaties groeien, groeit ook het aantal services dat u moet onderhouden. Elke service kan mogelijk met elke andere service in het cluster praten, en het resulterende netwerk wordt aangeduid als Servicenetwerk.

Er zijn veel add-ons voor Kubernetes om ons te helpen het beheer van deze Service Mesh te vereenvoudigen. Veel belangrijke functies zoals TLS, geautomatiseerde taakverdeling, het beveiligen van API's, zelfs op het interne netwerk, enz. Worden aangeboden door deze add-ons. Veel opties zoals Istio, Linkerd en Conduit kunnen worden geïntegreerd met Kubernetes om dit te bereiken. We zullen Istio in dit bericht onderzoeken omdat het versie 1 is.0 is onlangs aangekondigd.

Vereisten

Om met Istio aan de slag te gaan, hebt u een werkend kubernetes-cluster nodig. Er zijn drie manieren om dat te krijgen.

  1. U kunt Minikube installeren om een ​​cluster met één knooppunt op uw lokale computer te maken.
  2. Of, als u Docker op Windows of Mac gebruikt, kunt u een Kubernetes-cluster met één knooppunt inschakelen in de Docker-instellingen.
  3. Of u kunt gebruikmaken van online services zoals Katacoda-speeltuin. Dit gaan we gebruiken.

Waarom een ​​Service Mesh gebruiken??

Het installeren van een servicemesh, zoals Istio, maakt het werken met microservices eenvoudig. Tijdens het ontwikkelen hoeft u zich geen zorgen te maken over het feit dat uw microservice ondersteuning zou moeten bieden voor wederzijdse TLS, load balancing of enig ander aspect zoals service discovery. Met een ideaal Service Mesh koppel je microservices aan elkaar, beveilig je ze van elkaar en van de buitenwereld en beheer je ze op een georganiseerde manier. Het helpt zowel de ontwikkelaars als de operators enorm.

Istio installeren

Voor het installeren van Istio is een Kubernetes-cluster vereist. Als u een cluster met één knooppunt hebt, zoals u krijgt met Minikube of Docker op Desktop, kunnen alle opdrachten op uw lokale knooppunt worden uitgevoerd. Als u echter een cluster met meerdere knooppunten gebruikt, zoals het cluster dat Katacoda-speeltuin biedt, moet u er rekening mee houden dat de meeste opdrachten en installatieprocedures worden uitgevoerd op het hoofdknooppunt. Ja, het heeft invloed op het hele cluster, maar we hoeven alleen te communiceren met het hoofdknooppunt.

We beginnen met het klonen (of downloaden) van de nieuwste versie van Istio van Github. Windows-gebruikers willen misschien deze pagina bezoeken en de juiste downloaden .zip het dossier.

$ curl -L https://git.io/getLatestIstio | sh -
$ cd istio-1.0.0

De naam van de repo kan in de loop van de tijd veranderen als er een nieuwere release uitkomt, op het moment van schrijven.0.0 is de nieuwste stabiele release. Deze repo bevat niet alleen de service mesh-extensie, maar ook een voorbeeld-app met de naam BookInfo voor experimentele doeleinden. Het script voegt ook de nieuwe directory $PWD/istio-1 toe.0.0/bin naar uw PATH-variabele.

Deze map bevat: istioctl binair dat kan worden gebruikt om met het cluster te communiceren. Windows-gebruikers kunnen eenvoudig het binaire bestand oproepen door naar de map te gaan istio-1.0.0\bin en bellen .\istioctl powershell of opdrachtprompt gebruiken. Maar het is een optionele add-on.

Als u Mac gebruikt, kunt u dat doen met de volgende opdracht:

$ export PATH=$PWD/bin:$PATH

Vervolgens moeten we onze Kubernetes API uitbreiden met Custom Resource Definitions (CRD's) die istio ons biedt.

$ kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml

Dit kan binnen een paar seconden van kracht worden en als het eenmaal is voltooid, heeft uw kube-apiserver Istio-extensies ingebouwd. Vanaf hier variëren de installatie-opties, afhankelijk van of u dit voor productiedoeleinden gebruikt of dat u ermee experimenteert in uw eigen geïsoleerde omgeving.

We gaan ervan uit dat het laatste het geval is en installeren istio zonder TLS-authenticatie.

$ kubectl apply -f install/kubernetes/istio-demo.yaml

Dit zal een nieuw naamruimte istio-systeem creëren waar alle verschillende componenten zoals istio-pilot en ingress gateway zullen worden geïnstalleerd.

Toepassingsimplementatie en Istio-injector

Hier komt het nut van Istio. Istio voegt sidecar-proxy's toe aan uw services, en dit wordt gedaan zonder de daadwerkelijke code van uw applicatie te wijzigen. Als automatische istio-zijspan-injector is ingeschakeld. U kunt een naamruimte labelen met istio-injection=enabled en wanneer uw toepassing op deze naamruimte wordt geïmplementeerd, hebben de pods zelf gespecialiseerde Envoy-containers samen met de containers voor de kerntoepassing. Laten we bijvoorbeeld de standaardnaamruimte een label geven

$ kubectl label naamruimte standaard istio-injection=enabled

Laten we nu de voorbeeld-app BookInfo in deze naamruimte implementeren. Voer vanuit de hoofdmap van de Isitio-rep die we hebben gekloond het volgende uit:

$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

U kunt hier een lijst maken van alle pods die worden uitgevoerd:

$ kubectl krijg pods

Kies een van de pods en bekijk de details ervan. Een van de pods van de BookInfo-app in mijn implementatie heet bijvoorbeeld details-v1-6865b9b99d-6mxx9

$ kubectl beschrijven pods/details-v1-6865b9b99d-6mxx9

In de beschrijving zult u merken dat de pod twee containers bevat, de eerste is een onderdeel van het daadwerkelijk uitvoeren van de afbeelding app-voorbeelden-bookinfo-details-v1:1.8.0 en de tweede is de istio-proxy die de afbeelding uitvoert gcr.io/istio-release/proxyv2:1.0.0 .

Istio biedt fijnmazige controle over uw service-mesh omdat het deze containers injecteert tot in de pods waar uw applicaties zich bevinden. Dit gecombineerd met gebruiksvriendelijke TLS voor communicatie en fijnmazige verkeerscontrole is een van de vele redenen waarom grote applicaties kunnen profiteren van een servicemesh zoals Istio.

Referenties

De eigenlijke architectuur heeft veel componenten zoals Pilot, Citadel en Mixer, elk met zijn eigen belangrijke rol om uit te voeren. U kunt hier veel meer leren over deze componenten en proberen uw eigen microservice hier te implementeren.

Strijd om Wesnoth 1.13.6 Ontwikkeling vrijgegeven
Strijd om Wesnoth 1.13.6 die vorige maand werd uitgebracht, is de zesde ontwikkelingsrelease in de 1.13.x-serie en het levert een aantal verbeteringen...
Hoe League Of Legends op Ubuntu 14 te installeren.04
Als je fan bent van League of Legends, dan is dit een kans voor jou om League of Legends te testen. Merk op dat LOL wordt ondersteund op PlayOnLinux a...
Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...