I hovedsak avslører Kubernetes a backend-tjeneste internt i klyngen og front-enden samhandler med denne tjenesten. Podene som tilbyr tjenesten kan veldig godt byttes ut, og ingen vil merke noe. Men ettersom funksjonene i applikasjonene dine vokser, øker også antallet tjenester du trenger å vedlikeholde. Hver tjeneste kan potensielt snakke med alle andre tjenester i klyngen, og det resulterende nettverket blir betegnet som Servicenett.
Det er mange tillegg for Kubernetes for å hjelpe oss med å forenkle administrasjonen av dette servicenettet. Mange tilleggsfunksjoner som TLS, automatisert belastningsbalansering, sikring av API-er selv på det interne nettverket osv. Tilbys av disse tilleggene. Mange alternativer som Istio, Linkerd og Conduit kan integreres med Kubernetes for å oppnå dette. Vi vil se på Istio i dette innlegget siden det er versjon 1.0 ble nylig kunngjort.
Forutsetninger
For å komme i gang med Istio, trenger du en fungerende kubernetes-klynge. Det er tre måter å få det på.
- Du kan installere Minikube for å opprette en enkelt node-klynge på din lokale maskin.
- Eller hvis du bruker Docker på Windows eller Mac, kan du aktivere en Kubernetes-klynge med en node i Docker-innstillinger.
- Eller du kan bruke online-tjenester som Katacoda lekeplass. Vi bruker dette.
Hvorfor bruke et servicenett?
Installering av et servicenett, som Istio, gjør det enkelt å jobbe med mikrotjenester. Mens du utvikler deg, trenger du ikke å bekymre deg for det faktum at mikroservicen din vil måtte tilby støtte for gjensidig TLS, lastbalansering eller andre aspekter som funn av tjenester. Et ideelt servicenett lar deg koble til mikrotjenester, sikre dem fra hverandre og fra omverdenen, og administrere dem på en organisert måte. Det hjelper både utviklerne og operatørene enormt.
Installere Istio
Installasjon av Istio krever at du har en Kubernetes-klynge. Hvis du har en enkelt nodeklynge som du får med Minikube eller Docker på skrivebordet, kan alle kommandoene kjøres på din lokale node. Men hvis du bruker en gruppe med flere noder som den som Katacoda-lekeplassen tilbyr, må du huske på at de fleste kommandoer og oppsettprosedyrer gjøres på masternoden. Ja, det påvirker hele klyngen, men vi må kun kommunisere med masternoden.
Vi begynner med kloning (eller nedlasting) av den siste utgivelsen av Istio fra Github. Windows-brukere vil kanskje besøke denne siden og få riktig .glidelås fil.
$ curl -L https: // git.io / getLatestIstio | sh -$ cd istio-1.0.0
Repos navn kan endres over tid når nyere utgivelse kommer gjennom, i skrivende stund 1.0.0 er den siste stabile utgivelsen. Denne repoen inneholder ikke bare tjenestenett utvidelsen, men også en prøve-app kalt BookInfo for eksperimenteringsformål. Skriptet legger også til den nye katalogen $ PWD / istio-1.0.0 / bin til PATH-variabelen.
Denne katalogen inneholder istioctl binær som kan brukes til å samhandle med klyngen. Windows-brukere kan bare ringe binæren ved å gå til mappen istio-1.0.0 \ bin og ringer .\ istioctl ved hjelp av powershell eller ledetekst. Men det er et valgfritt tillegg.
Hvis du bruker Mac, kan du gjøre det ved å bruke følgende kommando:
$ eksport PATH = $ PWD / kasse: $ PATHDeretter må vi utvide Kubernetes API med tilpassede ressursdefinisjoner (CRD) som istio gir oss.
$ kubectl gjelder -f install / kubernetes / helm / istio / templates / crds.yamlDette kan tre i kraft om noen sekunder, og når det er gjort, vil kube-apiserver ha Istio-utvidelser innebygd i det. Herfra og videre varierer installasjonsalternativene avhengig av om du bruker dette til produksjonsformål eller om du eksperimenterer med det i ditt eget isolerte miljø.
Vi kommer til å anta at sistnevnte er tilfelle, og installere istio uten TLS-godkjenning.
$ kubectl gjelder -f install / kubernetes / istio-demo.yamlDette vil skape et nytt navneområde istio-system der alle de forskjellige komponentene som istio-pilot og ingress gateway vil bli installert.
Applikasjonsdistribusjon og Istio Injector
Her kommer nytten til Istio. Istio legger til sidevogn proxies til tjenestene dine, og dette gjøres uten å endre den faktiske koden til applikasjonen din. Hvis automatisk istio-sidevogninjektor er aktivert. Du kan merke et navneområde med istio-injection = aktivert, og når applikasjonen din blir distribuert på dette navneområdet, vil podene selv ha spesialiserte Envoy-containere sammen med containerne for kjerneapplikasjonen. La oss for eksempel merke standardnavnområdet
$ kubectl label namespace standard istio-injection = aktivertLa oss nå distribuere eksemplet med BookInfo-appen i dette navneområdet. Fra rotkatalogen til Isitio rep som vi klonet, kjør:
$ kubectl gjelder -f prøver / bookinfo / plattform / kube / bookinfo.yamlDu kan liste opp alle belgene som kjører her:
$ kubectl få podsVelg en hvilken som helst pod ut av dem og se detaljene. For eksempel heter en av podene fra BookInfo-appen i distribusjonen min detaljer-v1-6865b9b99d-6mxx9
$ kubectl beskriver pods / details-v1-6865b9b99d-6mxx9I beskrivelsen vil du legge merke til at poden inneholder to beholdere, den første er en komponent av den faktiske kjøringen av bildeapp-eksemplene-bookinfo-details-v1: 1.8.0 og den andre er istio-proxyen som kjører bildet gcr.io / istio-release / proxyv2: 1.0.0 .
Istio tilbyr finkornet kontroll over servicenettet ditt fordi det sprøyter disse beholderne ned til selve belgene der applikasjonene dine ligger. Dette kombinert med brukervennlig TLS for kommunikasjon og finkornet trafikkontroll er en av mange grunner til at store applikasjoner kan dra nytte av et servicenett som Istio.
Referanser
Den faktiske arkitekturen har mange komponenter som Pilot, Citadel og Mixer, hver med sin egen viktige rolle å utføre. Du kan lære mye mer om disse komponentene her og prøve å distribuere din egen mikroservice her.