Yon seri pòs sou Istio Service Mesh

N ap kòmanse yon seri pòs ki montre kèk nan anpil kapasite Istio Service Mesh lè yo konbine avèk Red Hat OpenShift ak Kubernetes.

Yon seri pòs sou Istio Service Mesh

Premye pati jodi a:

  • Ann eksplike konsèp resipyan sidecar Kubernetes ak fòmile leitmotiv seri post sa yo: "ou pa bezwen chanje anyen nan kòd ou a".
  • Ann prezante bagay fondamantal Istio - règ routage. Tout lòt karakteristik Istio yo bati sou yo, paske se règ ki pèmèt ou dirije trafik nan mikwosèvis, lè l sèvi avèk fichye YAML ekstèn nan kòd sèvis la. Nou ap konsidere tou konplo deplwaman Canary Deployment. Bonis nouvèl ane a - 10 leson entèaktif sou Istio


Dezyèm pati, ki pral vini byento, pral di ou:

  • Ki jan Istio aplike Pool Ejection an konbinezon ak Circuit Breaker epi li pral demontre ki jan Istio pèmèt ou retire yon gous ki mouri oswa ki mal pèfòmans nan kous la balanse.
  • Nou pral gade tou sijè Circuit Breaker nan premye pòs la pou wè ki jan Istio ka itilize isit la. Nou pral montre w kouman pou w dirije trafik ak jere erè rezo lè l sèvi avèk fichye konfigirasyon YAML ak kòmandman tèminal san yo pa ti chanjman nan kòd sèvis la.

Twazyèm pati:

  • Yon istwa sou trase ak siveyans, ki deja entegre oswa fasil ajoute nan Istio. N ap montre w kouman pou w sèvi ak zouti tankou Prometheus, Jaeger, ak Grafana ansanm ak dechèlman OpenShift pou jere achitekti mikwosèvis san efò.
  • Nou deplase soti nan siveyans ak manyen erè nan entwodwi yo nan sistèm nan entansyonèlman. Nan lòt mo, nou aprann ki jan fè piki fòt san yo pa chanje kòd sous la, ki trè enpòtan nan yon pwen de vi tès - depi si ou chanje kòd la tèt li pou sa a, gen yon risk pou entwodwi erè adisyonèl.

Finalman, nan pòs final la sou Istio Service Mesh:

  • Ann ale nan bò nwa a. Plis jisteman, nou pral aprann sèvi ak konplo a Lanse nwa, lè kòd la deplwaye ak teste dirèkteman sou done pwodiksyon, men li pa afekte operasyon an nan sistèm nan okenn fason. Sa a se kote kapasite Istio a pou divize trafik vini an sou la men. Ak kapasite nan teste sou done pwodiksyon ap viv san yo pa afekte operasyon an nan sistèm nan konba nan nenpòt fason se metòd ki pi konvenk nan verifikasyon.
  • Apati de Dark Launch, nou pral montre w kouman pou w itilize modèl Canary Deployment pou diminye risk yo epi rann li pi fasil pou antre nouvo kòd nan pwodiksyon an. Canary Deployment tèt li se byen lwen soti nan nouvo, men Istio pèmèt ou aplike konplo sa a ak jis senp dosye YAML.
  • Finalman, nou pral montre w kouman pou w itilize Istio Egress pou bay moun ki pa nan gwoup ou yo aksè ak sèvis yo pou yo ka sèvi ak kapasite Istio lè w ap travay ak entènèt la.

Se konsa, isit la nou ale ...

Zouti siveyans ak jesyon Istio - tout sa ou bezwen pou òganize mikwosèvis nan yon may sèvis may sèvis.

Ki sa ki Istio Service Mesh

Yon may sèvis aplike fonksyon tankou siveyans trafik, kontwòl aksè, dekouvèt, sekirite, tolerans fay ak lòt bagay itil pou yon gwoup sèvis. Istio pèmèt ou fè tout bagay sa yo san yo pa chanjman yo mwendr nan kòd la nan sèvis yo tèt yo. Ki sekrè majik la? Istio atache pwòp prokurasyon li nan chak sèvis nan fòm yon veso sidecar (sidecar se yon sidecar motosiklèt), apre sa tout trafik nan sèvis sa a pase nan proxy a, ki, gide pa règleman espesifye, deside ki jan, ki lè ak si trafik sa a. ta dwe rive nan sèvis la nan tout. Istio fè li posib tou pou aplike teknik DevOps avanse tankou deplwaman Canary, disjoncteurs, piki fay ak anpil lòt.

Ki jan Istio travay ak resipyan ak Kubernetes

Istio sèvis may la se yon aplikasyon sidecar nan tout bagay ki nesesè yo kreye ak jere mikwosèvis: siveyans, trase, disjoncteurs, routage, balans chaj, piki fay, re-essay, timeouts, mirwar, kontwòl aksè, limit pousantaj ak plis ankò. Ak byenke jodi a gen yon tòn bibliyotèk aplike fonksyon sa yo dirèkteman nan kòd, ak Istio ou ka jwenn tout bagay sa yo san yo pa chanje anyen nan kòd ou a.

Dapre modèl sidecar la, Istio kouri nan yon veso Linux, ki sitiye nan yon sèl Kubernetes-pod ak yon sèvis kontwole ak enjekte ak ekstrè fonctionnalités ak enfòmasyon dapre konfigirasyon yo bay la. Nou mete aksan sou ke sa a se konfigirasyon pwòp ou a, epi li ap viv deyò nan kòd ou a. Se poutèt sa, kòd la vin pi senp epi pi kout.

Ki sa ki enpòtan tou se ke eleman operasyonèl nan mikwosèvis vire soti nan okenn fason konekte ak kòd nan tèt li, ki vle di operasyon yo ka san danje transfere bay espesyalis IT. Vreman vre, poukisa pwomotè a ta dwe responsab pou disjoncteurs ak piki fay? Reyaji, wi, men trete yo epi kreye yo? Si ou retire tout bagay sa yo nan kòd la, pwogramasyon yo pral kapab konplètman konsantre sou fonksyonalite aplikasyon an. Ak kòd la tèt li pral vin pi kout ak pi senp.

Sèvis may

Istio, ki aplike fonksyon pou jere mikwosèvis deyò kòd yo, se konsèp yon may sèvis. Nan lòt mo, li se yon gwoup kowòdone youn oswa plis binè ki fòme yon may nan fonksyon rezo.

Ki jan Istio travay ak mikwosèvis yo

Sa a se sa travay la nan veso sidecar sanble an konjonksyon avèk Kubernetes и Minishift zwazo: lanse yon egzanp Minishift, kreye yon pwojè pou Istio (an nou rele li "istio-sistèm"), enstale ak kouri tout eleman ki gen rapò ak Istio. Lè sa a, pandan w ap kreye pwojè ak gous, ou ajoute enfòmasyon konfigirasyon nan deplwaman ou yo, epi gous ou yo kòmanse itilize Istio. Yon dyagram senplifye sanble sa a:

Yon seri pòs sou Istio Service Mesh

Koulye a, ou ka chanje Istio anviwònman yo nan lòd, pou egzanp, yo òganize piki fay, sipò Deplwaman Canary oswa lòt karakteristik Istio - ak tout bagay sa yo san yo pa manyen kòd la nan aplikasyon yo tèt yo. Ann di ou vle redireksyon tout trafik entènèt soti nan itilizatè pi gwo kliyan ou a (Foo Corporation) nan yon nouvo vèsyon sit la. Pou fè sa, tou senpleman kreye yon règ routage Istio ki pral chèche @foocorporation.com nan ID itilizatè a epi redireksyon kòmsadwa. Pou tout lòt itilizatè yo, pa gen anyen ki pral chanje. Antretan, ou pral teste ak kalm nouvo vèsyon an nan sit la. Epi sonje ke ou pa bezwen enplike devlopè ditou pou sa.

Epi w ap oblije peye chè pou li?

Pa ditou. Istio se byen vit epi li ekri nan Go epi li kreye yon ti kras anlè. Anplis de sa, pèt posib nan pwodiktivite sou entènèt konpanse pa yon ogmantasyon nan pwodiktivite pwomotè. Omwen nan teyori: pa bliye ke tan devlopè yo gen anpil valè. Kòm pou depans lojisyèl, Istio se lojisyèl sous louvri, kidonk ou ka jwenn epi sèvi ak li pou gratis.

Met li tèt ou

Ekip Red Hat Developer Experience te devlope yon pratik apwofondi lidèchip pa Istio (an angle). Li kouri sou Linux, MacOS ak Windows, epi kòd la disponib nan Java ak Node.js.

10 leson entèaktif sou Istio

Blòk 1 - Pou débutan

Entwodiksyon Istio
30 minit
Ann fè konesans ak Service Mesh, aprann kijan pou enstale Istio nan yon gwoup OpenShift Kubernetes.
Kòmanse

Deplwaye mikwosèvis nan Istio
30 minit
Nou itilize Istio pou deplwaye twa mikwosèvis ak Spring Boot ak Vert.x.
Kòmanse

Blòk 2 - nivo entèmedyè

Siveyans ak trase nan Istio
60 minit
Nou pral eksplore zouti siveyans entegre Istio yo, mezi koutim, ak OpenTracing atravè Prometheus ak Grafana.
Kòmanse

Senp routage nan Istio
60 minit
Aprann kijan pou jere routage nan Istio lè l sèvi avèk règ senp.
Kòmanse

Règ routage avanse
60 minit
Ann pran yon gade nan routage entelijan Istio a, kontwòl aksè, balans chaj ak limite pousantaj.
Kòmanse

Blòk 3 - itilizatè avanse

Piki fay nan Istio
60 minit
Nou etidye senaryo manyen echèk nan aplikasyon distribiye, kreye erè HTTP ak reta rezo, epi aprann sèvi ak jeni dezòd retabli anviwònman an.
Kòmanse

Circuit Breaker nan Istio
30 minit
Nou enstale Siege pou sit tès estrès epi aprann kijan pou asire tolerans fay backend lè l sèvi avèk replay, disjoncteurs ak ekspilsyon pisin.
Kòmanse

Sòti ak Istio
10 minit
Nou itilize wout Egress pou kreye règ pou entèraksyon sèvis entèn yo ak API ekstèn ak sèvis yo.
Kòmanse

Istio ak Kiali
15 minit
Aprann sèvi ak Kiali pou jwenn yon apèsi sou may sèvis la epi eksplore demann ak koule done.
Kòmanse

TLS mityèl nan Istio
15 minit
Nou kreye Istio Gateway ak VirtualService, Lè sa a, nou etidye mityèl TLS (mTLS) ak anviwònman li yo an detay.
Kòmanse

Blòk 3.1 - Deep Dive: Istio Service Mesh pou Microservices

Yon seri pòs sou Istio Service Mesh
Ki sa ki liv la sou:

  • Ki sa ki se yon may sèvis?
  • Sistèm Istio ak wòl li nan achitekti mikwosèvis.
  • Sèvi ak Istio pou rezoud pwoblèm sa yo:
    • tolerans fay;
    • Routage;
    • Tès dezòd;
    • Sekirite Sosyal;
    • Koleksyon telemetrik lè l sèvi avèk tras, metrik ak Grafana.

Pou telechaje yon liv

Seri atik sou sèvis may ak Istio

Eseye li tèt ou

Seri pòs sa a pa gen entansyon bay yon plonje byen fon nan mond lan nan Istio. Nou jis vle prezante w konsèp la e petèt enspire w eseye Istio pou tèt ou. Li konplètman gratis, epi Red Hat bay tout zouti ou bezwen pou kòmanse ak OpenShift, Kubernetes, resipyan Linux, ak Istio, tankou: Red Hat Developer OpenShift Container Platform, gid nou pou Istio ak lòt resous sou nou mikwo-sit sou Service Mesh. Pa pran reta, kòmanse jodi a!

Règ routage Istio: dirije demann sèvis kote yo bezwen ale

openshift и Kubernetes fè yon travay ekselan nan adrès mikwosèvis achemine nan gous ki nesesè yo. Sa a se youn nan rezon ki fè egzistans Kubernetes - routage ak balans chaj. Men, e si ou bezwen plis sibtil ak sofistike routage? Pa egzanp, pou itilize an menm tan de vèsyon yon mikwosèvis. Kouman Règ wout Istio ka ede isit la?

Règ routage yo se règ ki aktyèlman detèmine chwa wout la. Kèlkeswa nivo konpleksite sistèm lan, prensip fonksyònman jeneral règ sa yo rete senp: demann yo ap dirije dapre sèten paramèt ak valè header HTTP.
Ann gade egzanp:

Kubernetes default: trivial "50/50"

Nan egzanp nou an, nou pral montre kijan pou itilize ansanm de vèsyon yon mikwosèvis nan OpenShift, ann rele yo v1 ak v2. Chak vèsyon kouri nan pwòp gous Kubernetes li yo, ak pa default li kouri ekilibre ekilibre wout robin. Chak gous resevwa pati li yo nan demann ki baze sou kantite ka mikwosèvis li yo, sa vle di, kopi. Istio pèmèt ou chanje balans sa a manyèlman.

Ann di nou te deplwaye de vèsyon sèvis rekòmandasyon nou an sou OpenShift, rekòmandasyon-v1 ak rekòmandasyon-v2.
Nan Fig. Figi 1 montre ke lè chak sèvis reprezante nan yon sèl egzanp, demann altènatif respire ant yo: 1-2-1-2-... Men ki jan wout Kubernetes travay pa default:

Yon seri pòs sou Istio Service Mesh

Distribisyon pondéré ant vèsyon

Nan Fig. Figi 2 montre sa k ap pase si w ogmante kantite kopi sèvis v2 de youn a de (sa fèt ak echèl oc —replicas=2 deplwaman/rekòmandasyon-v2 kòmand). Kòm ou ka wè, demann ant v1 ak v2 yo kounye a divize an yon rapò youn a twa: 1-2-2-1-2-2-...:

Yon seri pòs sou Istio Service Mesh

Ignore vèsyon lè l sèvi avèk Istio

Istio fè li fasil pou chanje distribisyon demann nan fason nou bezwen an. Pou egzanp, voye tout trafik sèlman nan rekòmandasyon-v1 lè l sèvi avèk dosye Istio yaml sa a:

Yon seri pòs sou Istio Service Mesh

Isit la ou bezwen peye atansyon sou sa a: gous yo chwazi dapre etikèt yo. Egzanp nou an itilize etikèt v1. "Pwa: 100" paramèt la vle di ke 100% nan trafik la pral dirije nan tout gous sèvis ki gen etikèt la v1.

Distribisyon direktiv ant vèsyon (Deplwaman Canary)

Apre sa, lè l sèvi avèk paramèt pwa a, ou ka dirije trafik nan tou de gous, inyore kantite ka mikwosèvis k ap kouri nan chak nan yo. Pou egzanp, isit la nou dirije 90% nan trafik nan v1 ak 10% nan v2:

Yon seri pòs sou Istio Service Mesh

Wout separe pou itilizatè mobil

An konklizyon, nou pral montre kijan pou fòse trafik itilizatè mobil yo dwe dirije nan sèvis v2, ak tout lòt moun nan v1. Pou fè sa, nou itilize ekspresyon regilye pou analize valè itilizatè-ajan nan header demann lan:

Yon seri pòs sou Istio Service Mesh

Koulye a, se vire ou

Egzanp ki gen ekspresyon regilye pou analize tèt yo ta dwe motive w pou w jwenn pwòp itilizasyon règ routage Istio yo. Anplis, posiblite yo isit la se byen vaste, depi valè header yo ka fòme nan kòd sous aplikasyon an.

Epi sonje ke Ops, pa Dev

Tout sa nou te montre nan egzanp ki anwo yo fèt san chanjman yo mwendr nan kòd sous la, byen, eksepte pou ka sa yo lè li nesesè jenere tèt demann espesyal. Istio pral itil tou de devlopè, ki moun ki, pou egzanp, yo pral kapab sèvi ak li nan etap tès la, ak espesyalis nan operasyon an nan sistèm IT, pou ki moun li pral ede anpil nan pwodiksyon an.

Donk, ann repete leitmotiv seri post sa yo: ou pa bezwen chanje anyen nan kòd ou a. Pa gen okenn nesesite pou konstwi nouvo zidòl ou lanse nouvo kontenè. Tout bagay sa yo aplike deyò kòd.

Sèvi ak imajinasyon ou

Jis imajine posiblite yo nan analiz header lè l sèvi avèk ekspresyon regilye. Vle redireksyon pi gwo kliyan ou a nan yon vèsyon espesyal nan ou mikwosèvis? Fasil! Bezwen yon vèsyon apa pou navigatè Chrome a? Pa gen pwoblèm! Ou ka wout trafik selon prèske nenpòt karakteristik.

Eseye li tèt ou

Lekti sou Istio, Kubernetes ak OpenShift se yon sèl bagay, men poukisa ou pa manyen tout bagay tèt ou? Ekip Pwogram Devlopè Red Hat te prepare yon gid detaye (an angle) ki pral ede w metrize teknoloji sa yo pi vit posib. Manyèl la tou se 100% sous louvri, kidonk li afiche nan domèn piblik la. Fichye a travay sou macOS, Linux ak Windows, epi kòd sous la disponib nan vèsyon Java ak node.js (vèsyon nan lòt lang ap vini byento). Jis louvri depo git ki koresponn lan nan navigatè ou a Red Hat Developer Demo.

Nan pwochen pòs la: nou travay sou pwoblèm trè byen

Jodi a ou te wè ki sa règ routage Istio ka fè. Koulye a, imajine menm bagay la, men sèlman an relasyon ak manyen erè. Sa a se egzakteman sa nou pral pale sou nan pwochen pòs la.

Sous: www.habr.com

Add nouvo kòmantè