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.
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:
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 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.
ʻ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:
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-…:
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:
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:
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:
ʻ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.