He pūʻulu pou ma Istio Service Mesh

Ke hoʻomaka nei mākou i kahi ʻano o nā pou e hōʻike ana i kekahi o nā mana he nui o ka Istio Service Mesh ke hui pū ʻia me Red Hat OpenShift a me Kubernetes.

He pūʻulu pou ma Istio Service Mesh

Mahele mua, i kēia lā:

  • E wehewehe kākou i ka manaʻo o nā pahu kaʻa ʻaoʻao Kubernetes a hoʻokumu i ka leitmotif o kēia pūʻulu pou: "ʻaʻole pono ʻoe e hoʻololi i kekahi mea i kāu code".
  • E hoʻolauna kākou i ka mea nui o Istio - nā lula ala. Kūkulu ʻia nā hiʻohiʻona ʻē aʻe a pau o Istio ma luna o lākou, no ka mea, ʻo ia nā lula e ʻae iā ʻoe e kuhikuhi i ke kaʻa i nā microservices, me ka hoʻohana ʻana i nā faila YAML ma waho o ka code service. Ke noʻonoʻo nei mākou i ka hoʻolālā hoʻolālā Canary Deployment. Ka bonus makahiki hou - 10 mau haʻawina pili ma Istio


ʻO ka ʻāpana ʻelua, e hiki koke mai ana, e haʻi iā ʻoe:

  • Pehea ʻo Istio e hoʻokō ai i ka Pool Ejection i hui pū ʻia me Circuit Breaker a e hōʻike ana pehea ʻo Istio e ʻae ai iā ʻoe e wehe i kahi pod make a maikaʻi ʻole paha mai ke kaapuni kaulike.
  • E nānā pū mākou i ke kumuhana Circuit Breaker mai ka pou mua e ʻike ai pehea e hoʻohana ai ʻo Istio ma aneʻi. E hōʻike mākou iā ʻoe pehea e ala ai i nā kaʻa a mālama i nā hewa pūnaewele me ka hoʻohana ʻana i nā faila hoʻonohonoho YAML a me nā kauoha terminal me ka ʻole o nā loli liʻiliʻi o ka code service.

Mahele ʻekolu:

  • He moʻolelo e pili ana i ka huli ʻana a me ka nānā ʻana, i kūkulu ʻia a i ʻole i hoʻohui maʻalahi iā Istio. E hōʻike mākou iā ʻoe pehea e hoʻohana ai i nā mea hana e like me Prometheus, Jaeger, a me Grafana i hui pū ʻia me OpenShift scaling e hoʻokele maʻalahi i nā hale hana microservice.
  • Ke neʻe nei mākou mai ka nānā ʻana a me ka mālama ʻana i nā hewa i ka hoʻokomo ʻana iā lākou i loko o ka ʻōnaehana me ka manaʻo. I nā huaʻōlelo ʻē aʻe, ke aʻo nei mākou i ka hana hewa ʻana me ka ʻole o ka hoʻololi ʻana i ke code kumu, he mea nui loa ia mai kahi ʻike hoʻāʻo - no ka mea inā hoʻololi ʻoe i ke code ponoʻī no kēia, aia ka pilikia o ka hoʻokomo ʻana i nā hewa hou aʻe.

ʻO ka mea hope loa, ma ka pou hope loa ma Istio Service Mesh:

  • E hele kāua i ka ʻaoʻao ʻeleʻele. ʻOi aku ka pololei, e aʻo mākou e hoʻohana i ka papahana Dark Launch, ke kau ʻia ke code a hoʻāʻo pololei ʻia i ka ʻikepili hana, akā ʻaʻole pili i ka hana o ka ʻōnaehana ma kekahi ʻano. ʻO kēia kahi e hiki ai iā Istio ke hoʻokaʻawale i nā kaʻa. A ʻo ka hiki ke hoʻāʻo i ka ʻikepili hana ola me ka ʻole o ka hoʻopili ʻana i ka hana o ka ʻōnaehana kaua ma kekahi ʻano ʻo ia ke ala ʻoi loa o ka hōʻoia.
  • Ke kūkulu ʻana ma ka Dark Launch, e hōʻike mākou iā ʻoe pehea e hoʻohana ai i ke kumu hoʻohālike Canary Deployment e hōʻemi i ka pilikia a e maʻalahi i ka loaʻa ʻana o nā code hou i ka hana. ʻO Canary Deployment kahi mamao loa mai ka mea hou, akā ʻae ʻo Istio iā ʻoe e hoʻokō i kēia hoʻolālā me nā faila YAML maʻalahi.
  • ʻO ka hope, e hōʻike mākou iā ʻoe pehea e hoʻohana ai iā Istio Egress e hāʻawi i ke komo i nā lawelawe i ka poʻe ma waho o kāu mau puʻupuʻu i mea e hoʻohana ai i nā mana o Istio i ka wā e hana ai me ka Pūnaewele.

No laila, hele mākou ...

ʻO ka nānā ʻana a me nā mea hana hoʻokele Istio - nā mea āpau e pono ai ʻoe e hoʻonohonoho i nā microservices i kahi mesh lawelawe mesh lawelawe.

He aha ka Istio Service Mesh

Hoʻohana ka mesh lawelawe i nā hana e like me ka nānā ʻana i ke kaʻa, ka mana ʻike, ka ʻike, ka palekana, ka hoʻomanawanui hewa a me nā mea pono ʻē aʻe no kahi hui o nā lawelawe. ʻAe ʻo Istio iā ʻoe e hana i kēia me ka ʻole o ka hoʻololi iki ʻana i ke code o nā lawelawe ponoʻī. He aha ka mea huna o ka kilokilo? Hoʻopili ʻo Istio i kāna koho ponoʻī i kēlā me kēia lawelawe ma ke ʻano o kahi pahu sidecar (sidecar he kaʻa kaʻa kaʻa kaʻa), ma hope o ka hele ʻana o nā kaʻa a pau i kēia lawelawe ma o ka proxy, i alakaʻi ʻia e nā kulekele i kuhikuhi ʻia, e hoʻoholo pehea, i ka manawa a inā paha kēia kaʻa. pono e hiki i ka lawelawe. Hiki iā Istio ke hoʻokō i nā ʻenehana DevOps kiʻekiʻe e like me nā canary deployments, circuit breakers, fault injection a me nā mea ʻē aʻe he nui.

Pehea ka hana ʻana o Istio me nā ipu a me nā Kubernetes

ʻO ka Istio service mesh kahi hoʻokō sidecar o nā mea a pau e pono ai e hana a hoʻokele i nā microservices: ka nānā ʻana, ka ʻimi ʻana, nā mea haʻihaʻi kaapuni, ke ala ʻana, ke kau ʻana i ka ukana, ka hoʻouka hewa, ka hoʻāʻo hou ʻana, ka manawa manawa, ke aniani, ka mana hiki, ka palena palena a me nā mea hou aku. A ʻoiai i kēia lā he nui nā hale waihona puke e hoʻokō pololei i kēia mau hana ma ke code, me Istio hiki iā ʻoe ke loaʻa i nā mea like ʻole me ka hoʻololi ʻole i kekahi mea i kāu code.

Wahi a ke kumu hoʻohālike sidecar, holo ʻo Istio i kahi pahu Linux, aia i loko o hoʻokahi Kubernetes-pod me kahi lawelawe i hoʻomaluʻia a hoʻokomo a unuhi i ka hana a me kaʻike e like me ka hoʻonohonoho i hāʻawiʻia. Manaʻo mākou ʻo kāu hoʻonohonoho ponoʻī kēia, a ke ola nei ma waho o kāu code. No laila, lilo ke code i mea maʻalahi a pōkole.

ʻO ka mea nui hoʻi, ʻo ka ʻāpana hana o nā microservices ʻaʻole i pili ʻia me ke code ponoʻī, ʻo ia ka mea hiki ke hoʻololi palekana ʻia kā lākou hana i nā loea IT. ʻOiaʻiʻo, no ke aha ke kuleana o ka mea hoʻomohala i nā mea hoʻokele kaapuni a me ka hoʻoheheʻe hewa? E pane, ʻae, akā e hana a hana iā lākou? Inā wehe ʻoe i kēia mau mea a pau mai ke code, hiki i nā mea polokalamu ke nānā pono i ka hana noi. A e lilo ka code ponoi i mea pōkole a maʻalahi.

Mesh lawelawe

ʻO Istio, ka mea e hoʻokō i nā hana no ka mālama ʻana i nā microservices ma waho o kā lākou code, ʻo ia ka manaʻo o kahi Service Mesh. I nā huaʻōlelo ʻē aʻe, he hui i hoʻonohonoho ʻia o hoʻokahi a ʻoi aku paha nā binaries e hana i kahi mesh o nā hana pūnaewele.

Pehea e hana ai ʻo Istio me nā microservices

ʻO kēia ke ʻano o ka hana o nā pahu sidecar i hui pū me Kubernetes и Hoʻololi liʻiliʻi ʻike maka manu: hoʻomaka i kahi laʻana o Minishift, hana i kahi papahana no Istio (e kapa ʻia ʻo "istio-system"), e hoʻokomo a holo i nā ʻāpana pili pili iā Istio. A laila, i kāu hana ʻana i nā papahana a me nā pods, hoʻohui ʻoe i ka ʻike hoʻonohonoho i kāu hoʻolālā, a hoʻomaka kāu pods e hoʻohana iā Istio. ʻO ke kiʻikuhi maʻalahi e like me kēia:

He pūʻulu pou ma Istio Service Mesh

I kēia manawa hiki iā ʻoe ke hoʻololi i nā hoʻonohonoho Istio i ka hoʻonohonoho ʻana, no ka laʻana, e hoʻonohonoho i ka hoʻokele hewa, kākoʻo Hoʻokomo Canary a i ʻole nā ​​hiʻohiʻona Istio ʻē aʻe - a me kēia mau mea āpau me ka ʻole o ka hoʻopā ʻana i ke code o nā noi iā lākou iho. E ʻōlelo mākou makemake ʻoe e hoʻohuli hou i nā kaʻa pūnaewele āpau mai nā mea hoʻohana o kāu mea kūʻai nui loa (Foo Corporation) i kahi mana hou o ka pūnaewele. No ka hana ʻana i kēia, hana wale i kahi lula hoʻokele Istio e nānā iā @foocorporation.com ma ka ID mea hoʻohana a hoʻihoʻi hou e like me ia. No nā mea hoʻohana ʻē aʻe, ʻaʻohe mea e loli. I kēia manawa, e hoʻāʻo mālie ʻoe i ka mana hou o ka pūnaewele. A e hoʻomaopopo ʻaʻole pono ʻoe e hoʻopili i nā mea hoʻomohala no kēia.

A e uku nui anei ʻoe no ia?

ʻaʻole iki. He wikiwiki loa ʻo Istio a kākau ʻia i loko Go a hana liʻiliʻi loa i luna. Eia kekahi, hiki ke nalowale i ka huahana pūnaewele e hoʻonui ʻia e ka hoʻonui ʻana i ka huahana mea hoʻomohala. Ma ka liʻiliʻi ma ke kumumanaʻo: mai poina i ka manawa o nā mea hoʻomohala. E pili ana i nā kumukūʻai lako polokalamu, ʻo Istio ka polokalamu open source, no laila hiki iā ʻoe ke kiʻi a hoʻohana iā ia me ka manuahi.

E haku iā ʻoe iho

Ua kūkulu ka Red Hat Developer Experience Team i kahi lima lima hohonu alakaʻi na Istio (ma ka ʻōlelo Pelekania). Holo ia ma Linux, MacOS a me Windows, a loaʻa ke code ma Java a me Node.js.

10 mau haʻawina pili ma Istio

Block 1 - No ka poʻe hoʻomaka

Hoʻolauna iā Istio
NUMNUMX minuke
E kamaʻāina kākou me Service Mesh, e aʻo pehea e hoʻokomo ai iā Istio i kahi hui OpenShift Kubernetes.
E hoʻomaka

Ke hoʻohana nei i nā microservices ma Istio
NUMNUMX minuke
Hoʻohana mākou iā Istio e kau i ʻekolu microservices me Spring Boot a me Vert.x.
E hoʻomaka

Block 2 - pae waena

Ka nānā ʻana a me ka huli ʻana ma Istio
NUMNUMX minuke
E ʻimi mākou i nā mea hana nānā i kūkulu ʻia a Istio, nā metric maʻamau, a me OpenTracing ma o Prometheus a me Grafana.
E hoʻomaka

ʻO ke ala ala maʻalahi ma Istio
NUMNUMX minuke
E aʻo pehea e hoʻokele ai i ke ala ala ma Istio me ka hoʻohana ʻana i nā lula maʻalahi.
E hoʻomaka

Nā rula ala ala kiʻekiʻe
NUMNUMX minuke
E nānā kākou i ka hoʻokele naʻauao o Istio, ka hoʻomalu ʻana, ka hoʻokolo ʻana i ka ukana a me ka palena palena.
E hoʻomaka

Block 3 - mea hoʻohana kiʻekiʻe

Hoʻopili hewa ma Istio
NUMNUMX minuke
Ke aʻo nei mākou i nā hiʻohiʻona hana ʻole i nā noi i hoʻohele ʻia, hana i nā hewa HTTP a me ka lohi ʻana o ka pūnaewele, a aʻo i ka hoʻohana ʻana i ka ʻenekinia chaos e hoʻihoʻi i ke kaiapuni.
E hoʻomaka

Kaapuni kaapuni ma Istio
NUMNUMX minuke
Hoʻokomo mākou i ka Siege no nā kahua hoʻāʻo koʻikoʻi a aʻo pehea e hōʻoia ai i ka hoʻomanawanui hewa backend me ka hoʻohana ʻana i nā replays, circuit breaker a me ka pool ejection.
E hoʻomaka

Egress a me Istio
NUMNUMX minuke
Hoʻohana mākou i nā ala Egress e hana i nā lula no ka launa pū ʻana o nā lawelawe kūloko me nā API waho a me nā lawelawe.
E hoʻomaka

Istio and Kiali
NUMNUMX minuke
E aʻo i ka hoʻohana ʻana iā Kiali e kiʻi i ka ʻike o ka mesh lawelawe a e ʻimi i ka noi a me nā kahe ʻikepili.
E hoʻomaka

TLS like ma Istio
NUMNUMX minuke
Hana mākou iā Istio Gateway a me VirtualService, a laila aʻo mākou i ka TLS (mTLS) a me kāna mau hoʻonohonoho kikoʻī.
E hoʻomaka

Block 3.1 - Hohonu Luu: Istio Service Mesh no Microservices

He pūʻulu pou ma Istio Service Mesh
He aha ka puke e pili ana:

  • He aha ke ano o ka mesh lawelawe?
  • ʻO ka ʻōnaehana Istio a me kāna kuleana i ka hoʻolālā microservice.
  • Ke hoʻohana nei iā Istio e hoʻoponopono i kēia mau pilikia:
    • Hoʻomanawanui hewa;
    • Alanui;
    • Ka hoao Chaos;
    • Palekana;
    • ʻO ka hōʻiliʻili telemetry me ka hoʻohana ʻana i nā traces, metrics a me Grafana.

Hoʻoiho i kahi puke

Nā ʻatikala e pili ana i nā meshes lawelawe a me Istio

E ho'āʻo iā ʻoe iho

ʻAʻole i manaʻo ʻia kēia ʻano o nā pou e hāʻawi i kahi luʻu hohonu i ka honua o Istio. Makemake wale mākou e hoʻolauna iā ʻoe i ka manaʻo a hoʻoikaika paha iā ʻoe e hoʻāʻo iā Istio nou iho. He manuahi ka hana, a hāʻawi ʻo Red Hat i nā mea hana a pau āu e pono ai e hoʻomaka me OpenShift, Kubernetes, Linux containers, a me Istio, me: ʻO ka mea hoʻomohala ʻo Red Hat OpenShift Container Platform, ko makou alakai i Istio a me nā kumuwaiwai ʻē aʻe ma kā mākou microsite ma ka Service Mesh. Mai lohi, e hoʻomaka i kēia lā!

Istio routing rules: kuhikuhi i nā noi lawelawe i kahi e pono ai lākou e hele

wehe wehe и Kubernetes e hana i kahi hana maikaʻi loa o ka ʻōlelo ʻana microservices lawe ʻia i nā ʻāpana i makemake ʻia. ʻO kēia kekahi o nā kumu o ka noho ʻana o Kubernetes - ke ala ʻana a me ka hoʻohālikelike ʻana i ka ukana. Akā, pehea inā makemake ʻoe i kahi ala maʻalahi a maʻalahi? No ka laʻana, e hoʻohana like i ʻelua mana o kahi microservice. Pehea e kōkua ai ʻo Istio Route Rules ma ʻaneʻi?

ʻO nā lula alahele nā ​​lula e hoʻoholo maoli i ke koho ʻana i ke ala. ʻAʻohe o ka pae o ka paʻakikī o ka ʻōnaehana, maʻalahi ke kumu hana maʻamau o kēia mau lula: hoʻokele ʻia nā noi ma muli o kekahi mau ʻāpana a me nā waiwai poʻomanaʻo HTTP.
E nānā kākou i nā laʻana:

Kubernetes paʻamau: mea liʻiliʻi "50/50"

Ma kā mākou hiʻohiʻona, e hōʻike mākou pehea e hoʻohana ai i ʻelua mau mana o kahi microservice ma OpenShift, e kapa mākou iā lākou v1 a me v2. E holo ana kēlā me kēia mana i kona pod Kubernetes pono'ī, a ma ke ʻano paʻamau, holo like ia me ka hoʻokele round robin kaulike. Loaʻa i kēlā me kēia pod kāna mahele o nā noi e pili ana i ka helu o kāna mau microservice, ʻo ia hoʻi, nā kope. ʻAe ʻo Istio iā ʻoe e hoʻololi i kēia kaulike me ka lima.

E ʻōlelo mākou ua kau mākou i ʻelua mana o kā mākou lawelawe ʻōlelo ma OpenShift, paipai-v1 a me ka manaʻo-v2.
Ma Fig. Hōʻike ka Kiʻi 1 i ka wā e hōʻike ʻia ai kēlā me kēia lawelawe i hoʻokahi laʻana, e hoʻololi like nā noi ma waena o lākou: 1-2-1-2-... Penei ka hana ʻana o ke ala ala Kubernetes ma ka paʻamau:

He pūʻulu pou ma Istio Service Mesh

Puunaue kaumaha ma waena o nā mana

Ma Fig. Hōʻike ka Figure 2 i ka mea e hana inā hoʻonui ʻoe i ka helu o nā replicas lawelawe v2 mai hoʻokahi a ʻelua (hana ʻia kēia me ka oc scale —replicas=2 deployment/recommendation-v2 command). E like me kāu e ʻike ai, ua māhele ʻia nā noi ma waena o v1 a me v2 i ka ratio hoʻokahi a ʻekolu: 1-2-2-1-2-2-…:

He pūʻulu pou ma Istio Service Mesh

E haʻalele i ka mana me Istio

Hoʻololi maʻalahi ʻo Istio i ka hāʻawi ʻana i nā noi i ke ala e pono ai mākou. No ka laʻana, e hoʻouna i nā kaʻa a pau i ka manaʻo-v1 me ka hoʻohana ʻana i kēia faila Istio yaml:

He pūʻulu pou ma Istio Service Mesh

Maanei pono ʻoe e hoʻolohe i kēia: koho ʻia nā pods e like me nā lepili. Hoʻohana kā mākou laʻana i ka lepili v1. ʻO ke ʻano o ka "kaumaha: 100" ʻo ia ka 100% o ke kaʻa e holo ʻia i nā pods lawelawe āpau i loaʻa ka lepili v1.

Ka mahele kuhikuhi ma waena o nā mana (Canary Deployment)

A laila, me ka hoʻohana ʻana i ka ʻāpana kaumaha, hiki iā ʻoe ke kuhikuhi i ke kaʻa i nā pods ʻelua, me ka nānā ʻole i ka helu o nā manawa microservice e holo ana i kēlā me kēia. Eia kekahi laʻana, e kuhikuhi mākou i ka 90% o ke kaʻa i v1 a me 10% i v2:

He pūʻulu pou ma Istio Service Mesh

Hoʻokaʻawale alahele no nā mea hoʻohana kelepona

I ka hopena, e hōʻike mākou i ke ʻano o ka hoʻoikaika ʻana i nā mea hoʻohana kelepona hele i ka lawelawe v2, a me nā mea ʻē aʻe i v1. No ka hana ʻana i kēia, hoʻohana mākou i nā ʻōlelo maʻamau e kālailai i ka waiwai mea hoʻohana-agent ma ke poʻo noi:

He pūʻulu pou ma Istio Service Mesh

ʻO kou manawa kēia

ʻO ka laʻana me nā ʻōlelo maʻamau no nā poʻomanaʻo parsing pono e hoʻoikaika iā ʻoe e ʻimi i kāu hoʻohana ponoʻī ʻana i nā lula routing Istio. Eia kekahi, ʻoi aku ka nui o nā mea hiki ma aneʻi, no ka mea hiki ke hoʻokumu ʻia nā waiwai poʻomanaʻo ma ke code kumu noi.

A e hoʻomanaʻo i kēlā Ops, ʻaʻole ʻo Dev

ʻO nā mea a pau a mākou i hōʻike ai ma nā hiʻohiʻona ma luna nei ua hana ʻia me ka ʻole o ka hoʻololi liʻiliʻi ʻana i ke code kumu, maikaʻi, koe wale nō kēlā mau hihia inā pono e hana i nā poʻomanaʻo noi kūikawā. E lilo ʻo Istio i mea pono i nā mea hoʻomohala, no ka laʻana, hiki iā ia ke hoʻohana iā ia ma ke kahua hoʻāʻo, a i nā loea i ka hana ʻana o nā ʻōnaehana IT, nona ka mea e kōkua nui ai i ka hana.

No laila e hana hou kākou i ka leitmotif o kēia pūʻulu pou: ʻaʻole pono ʻoe e hoʻololi i kekahi mea i kāu code. ʻAʻohe pono e kūkulu i nā kiʻi hou a i ʻole e hoʻomaka i nā pahu hou. Hoʻokō ʻia kēia a pau ma waho o ke code.

E hoʻohana i kou manaʻo

E noʻonoʻo wale i nā hiki o ka nānā ʻana i ke poʻo me ka hoʻohana ʻana i nā ʻōlelo maʻamau. Makemake ʻoe e hoʻohuli hou i kāu mea kūʻai aku nui i kahi mana kūikawā o kāu microservices? Maʻalahi! Makemake ʻoe i kahi mana ʻokoʻa no ka polokalamu kele Chrome? ʻaʻole pilikia! Hiki iā ʻoe ke ala i nā kaʻa e like me nā ʻano like ʻole.

E ho'āʻo iā ʻoe iho

ʻO ka heluhelu ʻana e pili ana iā Istio, Kubernetes a me OpenShift kekahi mea, akā no ke aha ʻoe e hoʻopā ʻole ai i nā mea āpau? Hui Papahana Hoʻolālā Red Hat ua hoʻomākaukau i kahi alakaʻi kikoʻī (ma ka ʻōlelo Pelekania) e kōkua iā ʻoe e aʻo i kēia mau ʻenehana i ka hikiwawe loa. ʻO ka manual he 100% open source, no laila ua paʻi ʻia ma ka waihona lehulehu. Hana ʻia ka faila ma macOS, Linux a me Windows, a loaʻa ke code kumu ma Java a me nā mana node.js (e hiki koke mai ana nā mana ma nā ʻōlelo ʻē aʻe). E wehe wale i ka waihona git pili i kāu polokalamu kele pūnaewele Hōʻikeʻike hoʻomohala Red Hat.

Ma ka pou aʻe: hana maikaʻi mākou i nā pilikia

I kēia lā ua ʻike ʻoe i ka mea hiki ke hana i nā lula routing Istio. I kēia manawa, e noʻonoʻo i ka mea like, akā e pili ana i ka hana hewa. ʻO kēia ka mea a mākou e kamaʻilio ai ma ka pou aʻe.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka