Sarja julkaisuja Istio Service Meshissä

Aloitamme sarjan postauksia, joissa esitellään joitain Istio Service Meshin monista ominaisuuksista yhdistettynä Red Hat OpenShiftiin ja Kubernetesiin.

Sarja julkaisuja Istio Service Meshissä

Ensimmäinen osa tänään:

  • Selvitetään Kubernetes-sivuvaunujen konttien käsite ja muotoillaan tämän postaussarjan leitmotiivi: "sinun ei tarvitse muuttaa mitään koodia".
  • Esitellään Istion perusasia - reitityssäännöt. Kaikki muut Istion ominaisuudet on rakennettu niiden varaan, koska sääntöjen avulla voit ohjata liikennettä mikropalveluihin käyttämällä palvelukoodin ulkopuolisia YAML-tiedostoja. Harkitsemme myös Canary Deploymentin käyttöönottosuunnitelmaa. Uudenvuoden bonus – 10 interaktiivista oppituntia Istiolla


Pian tulossa oleva osa kaksi kertoo sinulle:

  • Kuinka Istio toteuttaa Pool Ejectionin yhdessä Circuit Breakerin kanssa ja näyttää kuinka Istio antaa sinun poistaa kuolleen tai huonosti toimivan pod tasapainotuspiiristä.
  • Katsomme myös Circuit Breaker -aihetta ensimmäisestä viestistä nähdäksemme, kuinka Istioa voidaan käyttää täällä. Näytämme sinulle kuinka reitittää liikennettä ja käsitellä verkkovirheitä käyttämällä YAML-konfiguraatiotiedostoja ja päätekomentoja ilman pienintäkään muutoksia palvelukoodiin.

Kolmas osa:

  • Tarina jäljityksestä ja valvonnasta, jotka ovat valmiiksi sisäänrakennettuja tai helposti lisättyjä Istioon. Näytämme sinulle, kuinka voit käyttää työkaluja, kuten Prometheus, Jaeger ja Grafana yhdessä OpenShift-skaalauksen kanssa mikropalveluarkkitehtuurien vaivattoman hallinnan kanssa.
  • Virheiden tarkkailusta ja käsittelystä siirrymme niiden tahalliseen järjestelmään. Toisin sanoen opimme tekemään vian syöttöä muuttamatta lähdekoodia, mikä on erittäin tärkeää testauksen kannalta - koska jos muutat itse koodia tätä varten, on olemassa lisävirheiden riski.

Lopuksi Istio Service Meshin viimeisessä viestissä:

  • Mennään Pimeälle puolelle. Tarkemmin sanottuna opimme käyttämään Dark Launch -järjestelmää, kun koodi otetaan käyttöön ja testataan suoraan tuotantotiedoilla, mutta se ei vaikuta järjestelmän toimintaan millään tavalla. Tässä Istion kyky jakaa liikennettä on hyödyllinen. Ja kyky testata reaaliaikaisia ​​tuotantotietoja vaikuttamatta millään tavalla taistelujärjestelmän toimintaan on vakuuttavin tarkastusmenetelmä.
  • Dark Launchin pohjalta näytämme sinulle, kuinka voit käyttää Canary Deployment -mallia riskien vähentämiseksi ja uuden koodin tuotantoon saamisen helpottamiseksi. Canary Deployment itsessään ei ole kaikkea muuta kuin uusi, mutta Istion avulla voit toteuttaa tämän järjestelmän vain yksinkertaisilla YAML-tiedostoilla.
  • Lopuksi näytämme sinulle, kuinka Istio Egressin avulla pääset käyttämään palveluita klusteriesi ulkopuolella, jotta he voivat käyttää Istion ominaisuuksia työskennellessään Internetin kanssa.

Joten, näillä mennään...

Istio-seuranta- ja hallintatyökalut - kaikki mitä tarvitset mikropalvelujen järjestämiseen palveluverkkoon huoltoverkko.

Mikä on Istio Service Mesh

Palveluverkko toteuttaa palveluryhmälle toimintoja, kuten liikenteen valvontaa, kulunvalvontaa, etsintä, turvallisuutta, vikasietoisuutta ja muita hyödyllisiä asioita. Istion avulla voit tehdä kaiken tämän ilman pienintäkään muutoksia itse palveluiden koodiin. Mikä on taikuuden salaisuus? Istio liittää jokaiseen palveluun oman välityspalvelimen sivuvaunukontin muodossa (sivuvaunu on moottoripyörän sivuvaunu), jonka jälkeen kaikki liikenne tähän palveluun kulkee välityspalvelimen kautta, joka määrättyjen käytäntöjen ohjaamana päättää miten, milloin ja onko tämä liikenne pitäisi päästä palveluun ollenkaan. Istio mahdollistaa myös edistyneiden DevOps-tekniikoiden, kuten Canary-asennusten, katkaisijoiden, vikailmoitusten ja monien muiden toteuttamisen.

Kuinka Istio toimii konttien ja Kubernetesin kanssa

Istio-palveluverkko on sivuvaunutoteutus kaikesta, mitä tarvitaan mikropalvelujen luomiseen ja hallintaan: valvonta, jäljitys, katkaisijat, reititys, kuormituksen tasaus, vikailmoitus, uudelleenyritykset, aikakatkaisut, peilaus, kulunvalvonta, nopeuden rajoitukset ja paljon muuta. Ja vaikka nykyään on paljon kirjastoja näiden toimintojen toteuttamiseksi suoraan koodissa, Istion avulla saat kaikki samat asiat muuttamatta mitään koodissasi.

Sivuvaunumallin mukaan Istio toimii Linux-kontissa, joka sijaitsee yhdessä Kubernetes-pod hallitulla palvelulla ja syöttää ja purkaa toimintoja ja tietoja annetun konfiguraation mukaan. Korostamme, että tämä on oma kokoonpanosi, ja se elää koodisi ulkopuolella. Siksi koodista tulee paljon yksinkertaisempi ja lyhyempi.

Tärkeää on myös se, että mikropalvelujen toiminnallinen komponentti ei liity mitenkään itse koodiin, jolloin niiden toiminta voidaan siirtää turvallisesti IT-asiantuntijoille. Todellakin, miksi kehittäjän pitäisi olla vastuussa katkaisijasta ja vikojen injektiosta? Reagoi kyllä, mutta käsittele ne ja luo ne? Jos poistat kaiken tämän koodista, ohjelmoijat voivat keskittyä täysin sovelluksen toimivuuteen. Ja itse koodista tulee lyhyempi ja yksinkertaisempi.

Palveluverkko

Istio, joka toteuttaa toimintoja mikropalvelujen hallintaan niiden koodin ulkopuolella, on Service Meshin käsite. Toisin sanoen se on koordinoitu ryhmä yhdestä tai useammasta binaarista, jotka muodostavat verkkotoimintojen verkon.

Kuinka Istio toimii mikropalvelujen kanssa

Tältä sivuvaunukonttien työ yhdessä näyttää Kubernetes и Minivaihto lintuperspektiivi: käynnistä Minishift-esiintymä, luo projekti Istiolle (kutsutaanko sitä "istio-järjestelmäksi"), asenna ja suorita kaikki Istioon liittyvät komponentit. Sitten kun luot projekteja ja podeja, lisäät määritystietoja käyttöönottoihisi, ja podit alkavat käyttää Istioa. Yksinkertaistettu kaavio näyttää tältä:

Sarja julkaisuja Istio Service Meshissä

Nyt voit muuttaa Istion asetuksia esimerkiksi järjestääksesi vian ruiskutuksen, tuen Kanarian käyttöönotto tai muita Istion ominaisuuksia - ja kaikki tämä koskematta itse sovellusten koodiin. Oletetaan, että haluat ohjata kaiken verkkoliikenteen suurimman asiakkaasi (Foo Corporation) käyttäjiltä sivuston uuteen versioon. Voit tehdä tämän luomalla Istio-reitityssäännön, joka etsii käyttäjätunnuksesta @foocorporation.com ja ohjaa sen mukaan. Kaikkien muiden käyttäjien kohdalla mikään ei muutu. Sillä välin testaat rauhallisesti sivuston uutta versiota. Ja huomaa, että sinun ei tarvitse ottaa kehittäjiä mukaan tähän.

Ja joutuuko siitä maksamaan kalliisti?

Ei lainkaan. Istio on melko nopea ja on kirjoitettu sisään Go ja tuottaa hyvin vähän yleiskustannuksia. Lisäksi mahdollista online-tuottavuuden heikkenemistä kompensoi kehittäjien tuottavuuden kasvu. Ainakin teoriassa: älä unohda, että kehittäjien aika on arvokasta. Mitä tulee ohjelmistokustannuksiin, Istio on avoimen lähdekoodin ohjelmisto, joten voit hankkia ja käyttää sitä ilmaiseksi.

Hallitse se itse

Red Hat Developer Experience Team on kehittänyt perusteellisen käytännön руководство kirjoittanut Istio (englanniksi). Se toimii Linuxissa, MacOS:ssa ja Windowsissa, ja koodi on saatavilla Java- ja Node.js-muodoissa.

10 interaktiivista oppituntia Istiossa

Lohko 1 - Aloittelijoille

Johdatus Istioon
30 minuuttia
Tutustutaan Service Meshiin, opitaan asentamaan Istio OpenShift Kubernetes -klusteriin.
Lähettää

Mikropalveluiden käyttöönotto Istiossa
30 minuuttia
Käytämme Istiota kolmen mikropalvelun käyttöönottamiseksi Spring Bootin ja Vert.x:n kanssa.
Lähettää

Lohko 2 – keskitaso

Valvonta ja jäljitys Istiossa
60 minuuttia
Tutkimme Istion sisäänrakennettuja seurantatyökaluja, mukautettuja mittareita ja OpenTracingia Prometheuksen ja Grafanan kautta.
Lähettää

Yksinkertainen reititys Istiossa
60 minuuttia
Opi hallitsemaan reititystä Istiossa yksinkertaisten sääntöjen avulla.
Lähettää

Kehittyneet reitityssäännöt
60 minuuttia
Katsotaanpa Istion älykästä reititystä, kulunvalvontaa, kuormituksen tasausta ja nopeuden rajoitusta.
Lähettää

Lohko 3 – edistynyt käyttäjä

Vikaruiskutus Istiossa
60 minuuttia
Tutkimme hajautettujen sovellusten vikojen käsittelyskenaarioita, HTTP-virheiden ja verkkoviiveiden luomista sekä kaaossuunnittelun käyttöä ympäristön palauttamisessa.
Lähettää

Katkaisija Istiossa
30 minuuttia
Asennamme Siegen stressitestauskohteisiin ja opimme varmistamaan taustajärjestelmän vikasietoisuuden toistojen, katkaisijan ja altaan poiston avulla.
Lähettää

Egress ja Istio
10 minuuttia
Käytämme Egress-reittejä luodaksemme sääntöjä sisäisten palvelujen vuorovaikutukselle ulkoisten API:iden ja palvelujen kanssa.
Lähettää

Istio ja Kiali
15 minuuttia
Opi käyttämään Kialia saadaksesi yleiskuvan palveluverkosta ja tutkiaksesi pyyntö- ja tietovirtoja.
Lähettää

Keskinäinen TLS Istiossa
15 minuuttia
Luomme Istio Gatewayn ja VirtualServicen, jonka jälkeen tutkimme keskinäistä TLS:ää (mTLS) ja sen asetuksia yksityiskohtaisesti.
Lähettää

Lohko 3.1 – Deep Dive: Istio Service Mesh mikropalveluille

Sarja julkaisuja Istio Service Meshissä
Mistä kirja kertoo:

  • Mikä on palveluverkko?
  • Istio-järjestelmä ja sen rooli mikropalveluarkkitehtuurissa.
  • Istion käyttäminen seuraavien ongelmien ratkaisemiseen:
    • Vikasietoisuus;
    • Reititys;
    • Kaaoksen testaus;
    • turvallisuus;
    • Telemetrian kerääminen jäljillä, mittareilla ja Grafanalla.

Kirjan lataaminen

Artikkelisarja palveluverkoista ja Istiosta

Kokeile itse

Tämän viestisarjan tarkoituksena ei ole tarjota syvällistä sukellusta Istion maailmaan. Haluamme vain esitellä sinulle konseptin ja ehkä innostaa sinua kokeilemaan Istiota itse. Se on täysin ilmaista, ja Red Hat tarjoaa kaikki työkalut, joita tarvitset OpenShiftin, Kubernetesin, Linux-säilöjen ja Istion käytön aloittamiseen, mukaan lukien: Red Hat Developer OpenShift Container Platform, oppaamme Istioon ja muita resurssejamme microsite Service Meshissä. Älä viivyttele, aloita jo tänään!

Istio-reitityssäännöt: ohjaavat palvelupyynnöt minne niiden täytyy mennä

OpenShift и Kubernetes tehdä erinomaista osoitetyötä mikropalvelut reititetään tarvittaviin paikkoihin. Tämä on yksi syy Kubernetesin olemassaoloon - reititys ja kuormituksen tasapainotus. Mutta entä jos tarvitset hienovaraisempaa ja kehittyneempää reititystä? Esimerkiksi käyttää samanaikaisesti kahta mikropalvelun versiota. Miten Istion reittisäännöt voivat auttaa tässä?

Reitityssäännöt ovat sääntöjä, jotka itse asiassa määräävät reitin valinnan. Järjestelmän monimutkaisuudesta riippumatta näiden sääntöjen yleinen toimintaperiaate on yksinkertainen: pyynnöt reititetään tiettyjen parametrien ja HTTP-otsikkoarvojen perusteella.
Katsotaanpa esimerkkejä:

Kubernetesin oletus: triviaali "50/50"

Esimerkissämme näytämme kuinka käyttää samanaikaisesti kahta mikropalvelun versiota OpenShiftissä, kutsutaan niitä v1:ksi ja v2:ksi. Jokainen versio toimii omassa Kubernetes-kotelossaan, ja oletuksena se suorittaa tasaisesti tasapainotetun round robin -reitityksen. Jokainen pod saa osuutensa pyynnöistä sen mikropalveluinstanssien, toisin sanoen replikoiden, lukumäärän perusteella. Istion avulla voit muuttaa tätä saldoa manuaalisesti.

Oletetaan, että otimme käyttöön kaksi versiota suosituspalvelustamme OpenShiftissä, suositus-v1 ja suositus-v2.
Kuvassa Kuva 1 osoittaa, että kun jokainen palvelu on edustettuna yhdessä esiintymässä, pyynnöt vuorottelevat tasaisesti niiden välillä: 1-2-1-2-... Näin Kubernetes-reititys toimii oletusarvoisesti:

Sarja julkaisuja Istio Service Meshissä

Painotettu jakautuminen versioiden välillä

Kuvassa Kuvassa 2 näkyy, mitä tapahtuu, jos lisäät v2-palvelun replikoiden määrää yhdestä kahteen (tämä tehdään komennolla oc scale —replicas=2 deployment/recommendation-v2). Kuten näet, v1:n ja v2:n väliset pyynnöt on nyt jaettu suhteessa yksi-kolmeen: 1-2-2-1-2-2-…:

Sarja julkaisuja Istio Service Meshissä

Ohita Istio-versio

Istion avulla on helppo muuttaa pyyntöjen jakautumista haluamallamme tavalla. Lähetä esimerkiksi kaikki liikenne vain suositukseen-v1 käyttämällä seuraavaa Istio yaml-tiedostoa:

Sarja julkaisuja Istio Service Meshissä

Tässä sinun on kiinnitettävä huomiota tähän: palot valitaan etikettien mukaan. Esimerkkimme käyttää tunnistetta v1. "Paino: 100" -parametri tarkoittaa, että 100 % liikenteestä reititetään kaikkiin v1-tunnisteilla varustettuihin palveluryhmiin.

Direktiivin jakautuminen versioiden välillä (Canary Deployment)

Seuraavaksi painoparametrin avulla voit ohjata liikennettä molempiin podeihin jättäen huomioimatta kummassakin ajettavien mikropalveluinstanssien määrän. Esimerkiksi tässä ohjaamme 90 % liikenteestä v1:een ja 10 % v2:een:

Sarja julkaisuja Istio Service Meshissä

Erillinen reititys mobiilikäyttäjille

Lopuksi näytämme, kuinka mobiilikäyttäjien liikenne pakotetaan reitittämään palveluun v2 ja kaikki muut v1:een. Tätä varten käytämme säännöllisiä lausekkeita analysoimaan käyttäjäagentin arvoa pyynnön otsikossa:

Sarja julkaisuja Istio Service Meshissä

Nyt on sinun vuorosi

Esimerkin säännöllisillä lausekkeilla otsikoiden jäsentämiseen pitäisi motivoida sinua löytämään omia käyttötarkoituksia Istion reitityssäännöille. Lisäksi mahdollisuudet ovat tässä melko laajat, koska otsikkoarvot voidaan muodostaa sovelluksen lähdekoodissa.

Ja muista, että Ops, ei Dev

Kaikki, mitä osoitimme yllä olevissa esimerkeissä, tehdään ilman pienintäkään muutoksia lähdekoodissa, paitsi niissä tapauksissa, joissa on tarpeen luoda erityisiä pyyntöotsikoita. Istio on hyödyllinen sekä kehittäjille, jotka voivat käyttää sitä esimerkiksi testausvaiheessa, että IT-järjestelmien toiminnan asiantuntijoille, joille se auttaa suuresti tuotannossa.

Toistetaan siis tämän viestisarjan johtoaihe: sinun ei tarvitse muuttaa koodiasi mitään. Ei tarvitse rakentaa uusia kuvia tai käynnistää uusia säilöjä. Kaikki tämä on toteutettu koodin ulkopuolella.

Käytä mielikuvitustasi

Kuvittele vain otsikkoanalyysin mahdollisuudet säännöllisten lausekkeiden avulla. Haluatko ohjata suurimman asiakkaasi erikoisversioosi mikropalvelut? Helposti! Tarvitsetko erillisen version Chrome-selaimelle? Ei ongelmaa! Voit ohjata liikennettä lähes minkä tahansa ominaisuuden mukaan.

Kokeile itse

Istiosta, Kubernetesista ja OpenShiftistä lukeminen on yksi asia, mutta miksi et koskeisi kaikkeen itse? Tiimi Red Hat -kehittäjäohjelma on laatinut yksityiskohtaisen oppaan (englanniksi), joka auttaa sinua hallitsemaan nämä tekniikat mahdollisimman nopeasti. Käsikirja on myös 100% avoimen lähdekoodin, joten se on julkaistu julkisesti. Tiedosto toimii macOS-, Linux- ja Windows-käyttöjärjestelmissä, ja lähdekoodi on saatavilla Java- ja node.js-versioina (muilla kielillä versiot tulossa pian). Avaa vain vastaava git-arkisto selaimessasi Red Hat Developer Demo.

Seuraavassa postauksessa: ratkaisemme ongelmat kauniisti

Tänään näit mitä Istion reitityssäännöt voivat tehdä. Kuvittele nyt sama asia, mutta vain virheenkäsittelyn yhteydessä. Juuri tästä puhumme seuraavassa postauksessa.

Lähde: will.com

Lisää kommentti