Programmering

Hvad er Istio? Kubernetes servicenet forklaret

Microservice-arkitekturer løser nogle problemer, men introducerer andre. Opdeling af applikationer i uafhængige tjenester forenkler udvikling, opdateringer og skalering. Samtidig giver det dig mange flere bevægelige dele at forbinde og sikre. Håndtering af alle netværkstjenesterne - belastningsbalancering, trafikstyring, godkendelse og autorisation osv. - kan blive utroligt kompliceret.

Der er en samlebetegnelse for dette netværksrum mellem tjenesterne i din Kubernetes-klynge: a servicenet. Et Google-projekt, Istio, handler om at give dig en måde at styre din klynges servicenet inden det bliver til en bramble-snarr.

Hvad er et servicenet?

For enhver gruppe af netværksapplikationer er der en række almindelige adfærd, der har tendens til at springe op omkring dem. Belastningsafbalancering, for eksempel: Der er få tilfælde, hvor en gruppe netværkstjenester ikke har brug for det. Ligeledes at kunne A / B teste forskellige kombinationer af tjenester eller oprette end-to-end-godkendelse på tværs af servicekæder. Disse adfærd betegnes samlet som enservicenet.

Administration af servicenettet bør ikke overlades til selve tjenesterne. Ingen af ​​dem er i en god position til at gøre noget ovenfra og ned, og det burde virkelig ikke være deres job alligevel. Bedre at have et separat system, der sidder mellem tjenesterne og det netværk, de taler med. Dette system leverer to nøglefunktioner:

  1. Undgå, at tjenesterne selv skal håndtere det nitty-gritty ved at styre netværkstrafik - belastningsbalancering, dirigering, forsøg osv.
  2. Giv administratorer et abstraktionslag, der gør det let at vedtage beslutninger på højt niveau om netværkstrafik i klyngen - politikkontrol, metrics og logning, serviceopdagelse, sikker kommunikation mellem tjenester via TLS osv.

Istio servicemaskekomponenter

Istio fungerer som et servicenet ved at levere to grundlæggende stykker arkitektur til din klynge, a dataplan og en kontrolplan.

Dataplanet håndterer netværkstrafik mellem tjenesterne i nettet. Al denne trafik opfanges og omdirigeres af et netværksproxy-system. I Istios tilfælde leveres proxyen af ​​et open source-projekt kaldet Envoy. En anden komponent i dataplanet, Mixer, samler telemetri og statistik fra Envoy og strømmen af ​​service-til-service trafik.

Kontrolplanet, Istios kerne, styrer og fastgør dataplanet. Det konfigurerer både Envoy-fuldmagterne og Mixerne, der håndhæver netværkspolitikkerne for tjenesterne, f.eks. Hvem der kan tale med hvem og hvornår. Kontrolplanet tilvejebringer også et programmatisk abstraktionslag til dataplanet og al dets opførsel.

Tre andre Istio-tjenester afrunder blandingen:

Istio Pilot

Istio Pilot tager reglerne for trafikadfærd fra kontrolplanet og konverterer dem til konfigurationer anvendt af Envoy, baseret på hvordan sådanne ting styres lokalt. Pilot tillader Istio at arbejde med forskellige orkestrationssystemer udover Kubernetes, men opføre sig konsekvent mellem dem.

Istio Citadel

Citadel styrer godkendelse og identitetsstyring mellem tjenester.

Istio Galley

Galleri tager brugerdefinerede konfigurationer til Istio og konverterer dem til gyldige konfigurationer for de andre kontrolplankomponenter. Dette er et andet element, der gør det muligt for Istio at bruge forskellige orkestrationssystemer transparent.

Istio servicemeshfunktioner

Den første og mest værdifulde fordel, som Istio giver, er abstraktion - en måde at håndtere kompleksiteten i et servicenet på armlængdes afstand. Du kan foretage ændringer i netværket programmatisk ved at kommandere Istio. Tjenester, der er forbundet med netværket, behøver ikke at blive omprogrammeret indefra for at følge nye netværkspolitikker eller kvoter, og netværksrummene mellem dem behøver heller ikke at blive berørt direkte.

Derudover giver Istio dig mulighed for at udføre ikke-destruktive eller foreløbige ændringer i klyngens netværkskonfiguration. Hvis du vil udrulle et nyt netværkslayout, helt eller delvist, eller A / B teste den aktuelle konfiguration mod en ny, lader Istio dig gøre dette på en top-down måde. Du kan også rulle disse ændringer tilbage, hvis de viser sig at være usunde.

En tredje fordel er observerbarhed. Istio leverer detaljerede statistikker og rapporter om, hvad der sker mellem containere og klyngenoder. Hvis der er et uforudsete problem, hvis noget ikke overholder politikken, eller hvis ændringer, du har foretaget viser sig at være kontraproduktive, kan du få at vide om det i kort rækkefølge.

Istio giver også måder at opfylde almindelige mønstre, som du ser i et servicenetværk. Et eksempel er afbrydermønsteret, en måde at forhindre en tjeneste i at blive bombarderet med anmodninger, hvis backend rapporterer problemer og ikke kan opfylde anmodningerne rettidigt. Istio leverer et afbrydermønster som en del af sit standardbibliotek med håndhævelser af politikker.

Endelig, mens Istio arbejder mest direkte og dybt med Kubernetes, er det designet til at være platformuafhængig. Istio tilsluttes de samme åbne standarder, som Kubernetes selv er afhængige af. Istio kan også arbejde på en enkelt måde på individuelle systemer eller på andre orkestrationssystemer som Mesos og Nomad.

Sådan kommer du i gang med Istio

Hvis du allerede har erfaring med Kubernetes, er en god måde at lære Istio at tage en Kubernetes-klynge -ikke en der allerede er i produktion! - og installer Istio på den ved hjælp af et helmkort. Derefter kan du implementere en prøveapplikation, der demonstrerer almindelige Istio-funktioner som intelligent trafikstyring og telemetri. Dette skal give dig nogle jordnære erfaringer med Istio, før du distribuerer den til servicemaskintjeneste i din applikationsklynge.

Red Hat, der har investeret i Istio som en del af virksomhedens Kubernetes-drevne OpenShift-projekt, tilbyder tutorials, der vil lede dig gennem almindelige Istio-implementerings- og ledelsesscenarier.