Kubernetes

Kubernetes servicemesh

Kubernetes servicemesh
Kubernetes har mange ressourcetyper, der hjælper dig med at abstrakte ideen om tjenester eller mikrotjenester. For eksempel, hvis din apps frontend ønsker at interagere med backend, behøver den ikke være ligeglad med, hvilken pod den søger, eller ikke engang hvilken IP-adresse den håber, at en backend-pod vil besætte. Bælg eksponeres via en tjeneste. (Hvis du er ny i Kubernetes, anbefaler jeg dette indlæg for bedre at forstå, hvad bælg er sammen med andre vigtige begreber.)

I det væsentlige udsætter Kubernetes en backend-service internt i klyngen og front-end interagerer med denne service. De bælg, der tilbyder tjenesten, kan meget vel udskiftes, og ingen vil bemærke noget. Men efterhånden som funktionerne i dine applikationer vokser, vokser antallet af tjenester, du skal vedligeholde, også. Hver tjeneste kan potentielt tale med alle andre tjenester i klyngen, og det resulterende netværk betegnes som Servicemesh.

Der er mange tilføjelser til Kubernetes for at hjælpe os med at forenkle styringen af ​​dette servicenet. En masse nøglefunktioner som TLS, automatiseret belastningsbalancering, sikring af API'er selv på det interne netværk osv. Tilbydes af disse tilføjelser. Mange muligheder som Istio, Linkerd og Conduit kan integreres med Kubernetes for at opnå dette. Vi vil undersøge Istio i dette indlæg, da det er version 1.0 blev for nylig annonceret.

Forudsætninger

For at komme i gang med Istio skal du have en fungerende kubernetes-klynge. Der er tre måder at få det på.

  1. Du kan installere Minikube for at oprette en enkelt node-klynge på din lokale maskine.
  2. Eller hvis du bruger Docker på Windows eller Mac, kan du aktivere en enkelt node Kubernetes-klynge i Docker-indstillinger.
  3. Eller du kan bruge onlinetjenester som Katacoda legeplads. Vi bruger dette.

Hvorfor bruge et servicenet?

Installation af et servicenet, som Istio, gør det nemt at arbejde med mikrotjenester. Mens du udvikler, behøver du ikke bekymre dig om det faktum, at din mikroservice skal tilbyde support til gensidig TLS, belastningsafbalancering eller ethvert andet aspekt såsom serviceopdagelse. Et ideelt servicemesh giver dig mulighed for at forbinde mikrotjenester, sikre dem fra hinanden og fra omverdenen og administrere dem på en organiseret måde. Det hjælper både udviklerne og operatørerne enormt.

Installation af Istio

Installation af Istio kræver en Kubernetes-klynge. Hvis du har en enkelt node-klynge, som du får med Minikube eller Docker på Desktop, kan alle kommandoer køres på din lokale node. Men hvis du bruger en klynge med flere knudepunkter som den, som Katacoda-legepladsen tilbyder, skal du huske på, at de fleste kommandoer og konfigurationsprocedurer udføres på masternoden. Ja, det påvirker hele klyngen, men vi skal kun interagere med masternoden.

Vi begynder med at klone (eller downloade) den seneste udgivelse af Istio fra Github. Windows-brugere vil muligvis besøge denne side og få det passende .lynlås fil.

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

Repos navn kan ændre sig over tid, når nyere udgivelse kommer igennem på tidspunktet for denne skrivning 1.0.0 er den seneste stabile udgivelse. Denne repo indeholder ikke kun servicenetudvidelsen, men også en prøve-app kaldet BookInfo til eksperimentelle formål. Scriptet tilføjer også den nye mappe $ PWD / istio-1.0.0 / bin til din PATH-variabel.

Denne mappe indeholder istioctl binær, som kan bruges til at interagere med klyngen. Windows-brugere kan simpelthen ringe til binærsystemet ved at gå til mappen istio-1.0.0 \ bin og ringer .\ istioctl ved hjælp af powershell eller kommandoprompt. Men det er en valgfri tilføjelse.

Hvis du bruger Mac, kan du gøre det ved hjælp af følgende kommando:

$ eksport PATH = $ PWD / bin: $ PATH

Dernæst skal vi udvide vores Kubernetes API med brugerdefinerede ressourcedefinitioner (CRD'er), som istio giver os.

$ kubectl anvende -f install / kubernetes / helm / istio / skabeloner / crds.yaml

Dette kan træde i kraft om få sekunder, og når det er gjort, vil din kube-apiserver have Istio-udvidelser indbygget i det. Herfra varierer installationsmulighederne, afhængigt af om du bruger dette til produktionsformål, eller om du eksperimenterer med det i dit eget isolerede miljø.

Vi antager, at sidstnævnte er tilfældet, og installerer istio uden TLS-godkendelse.

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

Dette vil skabe et nyt navneområde istio-system, hvor alle de forskellige komponenter som istio-pilot og ingress gateway vil blive installeret.

Applikationsinstallation og Istio Injector

Her kommer nytteværdien af ​​Istio. Istio tilføjer sidevognyrker til dine tjenester, og dette gøres uden at ændre den faktiske kode for din applikation. Hvis automatisk istio-sidevognindsprøjtning er aktiveret. Du kan mærke et navneområde med istio-injection = aktiveret, og når din applikation er distribueret i dette navneområde, vil pods selv have specialiserede Envoy-containere sammen med containerne til kerneapplikationen. Lad os for eksempel mærke standardnavneområdet

$ kubectl label namespace standard istio-injection = aktiveret

Lad os nu implementere eksemplet på BookInfo-appen i dette navneområde. Fra rodmappen til Isitio rep, som vi klonede, køres:

$ kubectl anvende -f prøver / bookinfo / platform / kube / bookinfo.yaml

Du kan liste alle bælg, der kører her:

$ kubectl få bælg

Vælg en hvilken som helst pod ud af dem, og se dens detaljer. For eksempel hedder en af ​​bælgene fra BookInfo-appen i min implementering detaljer-v1-6865b9b99d-6mxx9

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

I beskrivelsen vil du bemærke, at pod'en indeholder to containere, den første er en komponent i den faktiske kørsel af billedappen eksempler-bookinfo-detaljer-v1: 1.8.0 og den anden er istio-proxy, der kører billedet gcr.io / istio-release / proxyv2: 1.0.0 .

Istio tilbyder finkornet kontrol over dit servicenet, fordi det sprøjter disse containere ned til selve bælgene, hvor dine applikationer befinder sig. Dette kombineret med brugervenlig TLS til kommunikation og finkornet trafikkontrol er en af ​​de mange grunde til, at store applikationer kan drage fordel af et servicenet som Istio.

Referencer

Den egentlige arkitektur har mange komponenter som Pilot, Citadel og Mixer, hver med sin egen vigtige rolle at udføre. Du kan lære meget mere om disse komponenter her og prøve at implementere din egen mikroservice her.

Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...
Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...
HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...