Programmering

Hva er Istio? Kubernetes servicenett forklart

Microservice-arkitekturer løser noen problemer, men introduserer andre. Å dele applikasjoner i uavhengige tjenester forenkler utvikling, oppdateringer og skalering. Samtidig gir det deg mange flere bevegelige deler å koble til og sikre. Administrering av alle nettverkstjenestene - lastbalansering, trafikkadministrasjon, autentisering og autorisasjon osv. - kan bli utrolig komplisert.

Det er en samlebetegnelse for dette nettverksområdet mellom tjenestene i Kubernetes-klyngen din: a servicenett. Et Google-prosjekt, Istio, handler om å gi deg en måte å administrere klyngens servicenett på før det blir til et brak.

Hva er et servicenett?

Med en hvilken som helst gruppe nettverksapplikasjoner er det en rekke vanlige atferd som har en tendens til å dukke opp rundt dem. Lastbalansering, for eksempel: Det er få tilfeller der en gruppe nettverkstjenester ikke trenger det. På samme måte å kunne A / B teste forskjellige kombinasjoner av tjenester, eller sette opp end-to-end-autentisering på tvers av tjenestekjeder. Disse atferdene blir samlet referert til som enservicenett.

Administrering av servicenettet bør ikke overlates til tjenestene selv. Ingen av dem er i god posisjon til å gjøre noe ovenfra og ned, og det burde egentlig ikke være deres jobb uansett. Bedre å ha et eget system som sitter mellom tjenestene og nettverket de snakker med. Dette systemet har to hovedfunksjoner:

  1. Sørg for at tjenestene ikke trenger å håndtere det som er vanskelig å administrere nettverkstrafikk - belastningsbalansering, ruting, prøvelser osv.
  2. Gi et lag med abstraksjon for administratorer, noe som gjør det enkelt å vedta høynivåbeslutninger om nettverkstrafikk i klyngen - policy-kontroller, beregninger og logging, tjenestegjenkjenning, sikker kommunikasjon mellom tjenestene via TLS og så videre.

Istio servicemaskekomponenter

Istio fungerer som et servicenett ved å tilby to grunnleggende arkitektoniske deler for klyngen din, a dataplan og en kontrollplan.

Dataplanet håndterer nettverkstrafikk mellom tjenestene i nettet. All denne trafikken blir fanget opp og omdirigert av et nettverksproxy-system. I Istios tilfelle er fullmakten levert av et åpen kildekodeprosjekt kalt Envoy. En annen komponent i dataplanet, Mixer, samler telemetri og statistikk fra Envoy og flyten av service-til-tjenestetrafikk.

Kontrollplanet, kjernen til Istio, styrer og sikrer dataplanet. Den konfigurerer både Envoy-fullmakter og miksere som håndhever nettverkspolitikken for tjenestene, for eksempel hvem som får snakke med hvem og når. Kontrollplanet gir også et programmatisk abstraksjonslag for dataplanet og all dets oppførsel.

Tre andre Istio-tjenester avrunder blandingen:

Istio Pilot

Istio Pilot tar reglene for trafikkadferd gitt av kontrollplanet, og konverterer dem til konfigurasjoner som brukes av Envoy, basert på hvordan slike ting håndteres lokalt. Pilot vil tillate Istio å jobbe med forskjellige orkestrasjonssystemer i tillegg til Kubernetes, men oppføre seg konsekvent mellom dem.

Istio Citadel

Citadel kontrollerer autentisering og identitetsadministrasjon mellom tjenester.

Istio Galley

Gallery tar brukerdefinerte konfigurasjoner for Istio og konverterer dem til gyldige konfigurasjoner for de andre kontrollplankomponentene. Dette er et annet element som gjør at Istio kan bruke forskjellige orkestrasjonssystemer på en transparent måte.

Istio service mesh-funksjoner

Den første og mest verdifulle fordelen Istio gir er abstraksjon - en måte å håndtere kompleksiteten i et servicenett på armlengdes avstand. Du kan gjøre eventuelle endringer i masken programmatisk ved å kommandere Istio. Tjenester som er koblet til nettet, trenger ikke å omprogrammeres fra innsiden for å følge nye nettverksretningslinjer eller kvoter, og nettverksrommene mellom dem trenger heller ikke berøres direkte.

I tillegg lar Istio deg utføre ikke-destruktive eller foreløpige endringer i klyngens nettverkskonfigurasjon. Hvis du vil rulle ut et nytt nettverksoppsett, helt eller delvis, eller A / B teste gjeldende konfigurasjon mot en ny, lar Istio deg gjøre dette på en topp-ned-måte. Du kan også rulle tilbake disse endringene hvis de viser seg å være usunne.

En tredje fordel er observerbarhet. Istio gir detaljert statistikk og rapportering om hva som skjer mellom containere og klyngenoder. Hvis det er et uforutsett problem, hvis noe ikke overholder retningslinjene, eller hvis endringer du har gjort viser seg å være kontraproduktive, vil du kunne finne ut om det på kort tid.

Istio gir også måter å oppfylle vanlige mønstre du ser i et servicenett. Et eksempel er effektbrytermønsteret, en måte å forhindre at en tjeneste blir bombardert med forespørsler hvis bakenden rapporterer problemer og ikke kan oppfylle forespørslene på en riktig måte. Istio gir et strømbrytermønster som en del av sitt standardbibliotek med håndhevelser av retningslinjer.

Til slutt, mens Istio jobber mest direkte og dypt med Kubernetes, er den designet for å være plattformuavhengig. Istio kobles til de samme åpne standardene som Kubernetes selv er avhengige av. Istio kan også jobbe frittstående på individuelle systemer, eller på andre orkestrasjonssystemer som Mesos og Nomad.

Hvordan komme i gang med Istio

Hvis du allerede har erfaring med Kubernetes, er en god måte å lære Istio å ta en Kubernetes-klynge -ikke en allerede i produksjon! —og installer Istio på den ved hjelp av et Helm-diagram. Deretter kan du distribuere et eksempel på et program som viser vanlige Istio-funksjoner som intelligent trafikkadministrasjon og telemetri. Dette burde gi deg litt erfaring på bakkenivå med Istio før du distribuerer den for servicenettplikt på applikasjonsklyngen.

Red Hat, som har investert i Istio som en del av selskapets Kubernetes-drevne OpenShift-prosjekt, tilbyr veiledninger som vil lede deg gjennom vanlige Istio-distribusjons- og administrasjonsscenarier.

$config[zx-auto] not found$config[zx-overlay] not found