"Ihe egwu bụ aha etiti m," Austin Powers, nwoke ihe omimi nke mba ụwa, na-ekwubu. Mana ihe ndị isi na ndị ọrụ ọgụgụ isi na-akwanyere ùgwù adịghị adabara maka ọrụ kọmputa, ebe ike ọgwụgwụ dị mma karịa ihe egwu.

Na Istio, yana OpenShift na Kubernetes, na-eme ka ibuga microservices bụrụ ihe na-agwụ ike na nke a na-ahụ anya - nke ahụ dịkwa mma. Anyị ga-ekwu maka nke a na ọtụtụ ihe ndị ọzọ na nke anọ na nke ikpeazụ na usoro Istio.
Mgbe ike ọgwụgwụ dị mma
N'ọnọdụ anyị, ike ọgwụgwụ na-eme naanị na njedebe ikpeazụ, mgbe ihe niile fọdụrụ bụ ịnọdụ ala na-ekiri usoro ahụ. Mana maka nke a ịkwesịrị ịhazi ihe niile na mbụ, na ọtụtụ ihe na-adọrọ mmasị na-echere gị ebe a.
Mgbe ị na-ebuga ụdị ngwanrọ ọhụrụ gị, ọ bara uru ịtụle nhọrọ niile maka ibelata ihe egwu. Na-agba ọsọ n'otu n'otu bụ ụzọ dị ike na nke pụtara ìhè iji nwalee, na Istio na-enye gị ohere iji "ọrụ nzuzo" (ụdị zoro ezo nke microservice gị) iji mee nke a n'enweghị ihe mgbochi na usoro mmepụta ihe. Enwere ọbụna okwu pụrụ iche maka nke a - "Mwepụta Ọchịchịrị", nke n'aka nke ya na-arụ ọrụ site na ọrụ nke nwere aha nledo yiri "traffic mirroring".
Biko mara na ahịrịokwu nke mbụ nke paragraf gara aga na-eji okwu a bụ “ebuga” kama ịbụ “nhapụ”. Ị ga-enwe ike ibuga-na, n'ezie, jiri - microservice gị mgbe ọ bụla ịchọrọ. Ọrụ a ga-enwerịrị ike ịnata na hazie okporo ụzọ, rụpụta nsonaazụ yana degara akwụkwọ ndekọ na nyochaa. Ma n'otu oge ahụ, ọrụ a n'onwe ya adịghị mkpa ka ahapụ ya na mmepụta. Ibunye na ịtọhapụ sọftụwia abụghị otu ihe mgbe niile. Ị nwere ike ibugharị oge ọ bụla ịchọrọ, mana hapụ naanị mgbe ị dị njikere.
Ịhazi ike ọgwụgwụ na-atọ ụtọ
Leba anya n'iwu ntụgharị Istio na-esote, nke na-eduga arịrịọ HTTP niile gaa na nkwado microservice v1 (atụmatụ niile ewepụtara na ), ka n'otu oge na-egosipụta ha na nkwanye v2 microservice:

Lezienụ anya na akara mirror: na ala nke ihuenyo - ọ bụ nke a na-esetịpụ mirroring okporo ụzọ. Ee, ọ dị mfe otú ahụ!
Nsonaazụ nke iwu a ga-abụ na sistemụ mmepụta gị (v1) ga-aga n'ihu na-ahazi arịrịọ na-abata, mana arịrịọ ndị ahụ n'onwe ha ga-egosipụta nke ọma na v2, ya bụ, mbipụta ha zuru oke ga-aga ebe ahụ. N'ụzọ dị otú a, ị nwere ike ịnwale v2 n'ọnọdụ dị adị - na ezigbo data na okporo ụzọ - na-enweghị nnyonye anya n'ụzọ ọ bụla na ọrụ nke usoro mmepụta ihe. Nke a ọ na-eme ka nhazi ule na-agwụ ike? Ee, n'ezie. Ma a na-eme ya n'ụzọ na-adọrọ mmasị.
Ka anyị tinye ihe nkiri
Biko mara na na v2 koodu ọ dị mkpa ịnye maka ọnọdụ ebe arịrịọ mbata nwere ike ibute mgbanwe data. A na-egosipụta arịrịọ ndị ahụ n'onwe ha n'ụzọ dị mfe na n'ụzọ doro anya, mana nhọrọ nke usoro nhazi na ule ahụ dịịrị gị - nke a bụ ihe na-echegbu onwe gị.
Ka anyị kwughachi otu isi ihe dị mkpa
Enwere ike ịme mmalite nzuzo site na iji mirroring okporo ụzọ (Mwepụta Ọchịchịrị / Arịrịọ Mirroring) na-enweghị emetụta koodu ahụ n'ụzọ ọ bụla.
Nri maka echiche
Gịnị ma ọ bụrụ na ebe a na-enyo enyo na-ezigara ụfọdụ n'ime ha ọ bụghị na v1, kama na v2? Dịka ọmụmaatụ, otu pasent nke arịrịọ niile ma ọ bụ naanị arịrịọ sitere n'aka ụfọdụ ndị ọrụ. Ma mgbe ahụ, na-eleba anya ka v2 si arụ ọrụ, jiri nwayọọ nwayọọ nyefee arịrịọ niile na ụdị ọhụrụ. Ma ọ bụ nke ọzọ, weghachi ihe niile na v1 ma ọ bụrụ na ihe na-aga nke ọma na v2. Echere m na a na-akpọ ya Canary Deployment. , ma ọ bụrụ na ọ sitere na Russian, ọ ga-abụ na ọ nwere ntụaka maka ya ), ma ugbu a, anyị ga-eleba anya na nke a n'ụzọ zuru ezu.
Nbunye Canary na Istio: inyefe ọrụ dị mfe
Kpachapụ anya na nke nta nke nta
Ihe kachasị mkpa nke ụdị ntinye nke Canary dị nnọọ mfe: mgbe ịmalitere ụdị ngwanrọ ọhụrụ gị (n'ọnọdụ anyị, microservice), ị ga-ebu ụzọ nye ya ohere maka obere ndị ọrụ. Ọ bụrụ na ihe niile na-aga nke ọma, ị na-eji nwayọọ nwayọọ na-abawanye otu a ruo mgbe ụdị ọhụrụ ahụ malitere ịrụ ọrụ, ma ọ bụ - ọ bụrụ na ọ bụghị - mechaa kwaga ndị ọrụ niile na ya. Site n'ichebara echiche na nke nta nke nta ewebata ụdị ọhụrụ na ịtụgharị ndị ọrụ na ya n'ụzọ a na-achịkwa, ị nwere ike belata ihe egwu ma bulie nzaghachi.
N'ezie, Istio na-eme ka ntinye Canary dị mfe site n'inye ọtụtụ nhọrọ dị mma maka nhazi arịrịọ nwere ọgụgụ isi. Ma ee, enwere ike ịme ihe a niile na-emetụghị koodu isi gị aka n'ụzọ ọ bụla.
Na-enyocha ihe nchọgharị ahụ
Otu n'ime usoro ụzọ kacha mfe bụ ntụgharị dabere na ihe nchọgharị. Ka anyị kwuo na ịchọrọ naanị arịrịọ sitere na ihe nchọgharị Safari ka ịga na v2. Nke a bụ otu esi eme ya:

Ka anyị tinye iwu ntụgharị a wee jiri iwu ahụ curl Anyị ga-eṅomi ezigbo arịrịọ na microservice na loop. Dịka ị na-ahụ na nseta ihuenyo, ha niile na-aga v1:

Ebee ka okporo ụzọ dị na v2? Ebe ọ bụ na n'ihe atụ anyị arịrịọ niile sitere naanị n'ahịrị iwu nke anyị, ọ dịghị adị. Ma ṅaa ntị na ahịrị ala dị na ihuenyo dị n'elu: nke a bụ mmeghachi omume n'eziokwu na anyị mere arịrịọ site na ihe nchọgharị Safari, nke n'aka nke ya mepụtara nke a:

Ike na-akparaghị ókè
Anyị edeelarị na nkwupụta okwu oge niile na-enye ike dị ike maka ịrịọ arịrịọ. Lelee ihe atụ a (anyị chere na ị ga-aghọta ihe ọ na-eme):

Ka ọ dị ugbu a ị nwere echiche nke ihe okwu ọnụ nwere ike ime.
Mee Smart
Smart routing, akpan akpan nhazi ngwugwu nkụnye eji isi mee na-eji okwu mgbe niile, na-enye gị ohere iduzi okporo ụzọ ka ị chọrọ. Na nke a na-eme ka mmejuputa koodu ọhụrụ dị mfe - ọ dị mfe, ọ dịghị achọ ịgbanwe koodu n'onwe ya, ma ọ bụrụ na ọ dị mkpa, ihe niile nwere ike weghachite ngwa ngwa dị ka ọ dị.
Nwere mmasị?
Ọ na-agụsi gị agụụ ike ịnwale Istio, Kubernetes na OpenShift na kọmputa gị? Otu kwadebere nke ọma na isiokwu a ma mee ka faịlụ niile na-eso ya dị n'ihu ọha. Ya mere, gaa n'ihu ma ajụla onwe gị ihe ọ bụla.
Istio Egress: pụọ na ụlọ ahịa ihe ncheta
Site na iji Istio yana Red Hat OpenShift na Kubernetes, ị nwere ike iji microservices mee ka ndụ gị dịkwuo mfe. A na-ezochi nchikota ọrụ Istio n'ime pods Kubernetes, na koodu gị na-agba ọsọ (karịsịa) na iche. Arụmọrụ, ịdị mfe nke mgbanwe, tracing, wdg - ihe a niile dị mfe iji ekele maka ojiji nke sidecar containers. Mana gịnị ma ọ bụrụ na microservice gị kwesịrị ịkparịta ụka na ọrụ ndị ọzọ dị na mpụga sistemụ OpenShift-Kubernetes gị?
Nke a bụ ebe Istio Egress na-abịa napụta. Na nkenke, ọ na-enye gị ohere ịnweta akụrụngwa (gụọ: "ọrụ") na-abụghị akụkụ nke sistemụ Kubernetes gị. Ọ bụrụ na ịmeghị nhazi ọzọ, mgbe ahụ, na mpaghara Istio Egress a na-ebugharị okporo ụzọ naanị n'ime ụyọkọ pods na n'etiti ụyọkọ ndị dị otú ahụ dabere na tebụl IP dị n'ime. Na ụdị pupation dị otú ahụ na-arụ ọrụ nke ukwuu ma ọ bụrụhaala na ịchọghị ịnweta ọrụ site na mpụga.
Egress na-enye gị ohere ịgafe tebụl IP ndị dị n'elu, dabere na iwu Egress ma ọ bụ n'ọtụtụ adreesị IP.
Ka anyị kwuo na anyị nwere mmemme Java nke na-arịọ arịrịọ GET na httpbin.org/headers.
(httpbin.org bụ naanị ebe dị mma maka ịnwale arịrịọ ọrụ na-apụ apụ.)
Ọ bụrụ na ịbanye n'ahịrị iwu curl http://httpbin.org/headers, anyị ga-ahụ ihe ndị a:

Ma ọ bụ ị nwere ike imepe otu adreesị na ihe nchọgharị:

Dị ka ị na-ahụ, ọrụ dị ebe ahụ na-eweghachite nkụnye eji isi mee gaa na ya.
Bubata nnọchi n'ihu
Ugbu a, ka anyị were koodu Java nke ọrụ a, na mpụga sistemụ anyị, ma mee ya n'onwe anyị, ebe, cheta, etinyere Istio. (Ị nwere ike ime nke a n'onwe gị site na ịkpọtụrụ .) N'ịbụ onye wuru ihe oyiyi kwesịrị ekwesị ma malite ya na OpenShift ikpo okwu, anyị ga-eji iwu ahụ kpọọ ọrụ a curl egresshttpbin-istioegress.$(minishift ip).nip.io, mgbe nke ahụ gasịrị, anyị ga-ahụ nke a na ihuenyo:

Oops, kedu ihe mere? Ihe niile na-arụ ọrụ. Gịnị na-adịghị ahụ pụtara? Anyị mere ya naanị ya curl.
Na-agbatị tebụl IP na ịntanetị niile
Ekwesịrị ịta Istio ụta (ma ọ bụ kelee) maka nke a. A sị ka e kwuwe, Istio bụ naanị igbe igbe dị n'akụkụ nke na-ahụ maka nchọpụta na ntụgharị (na ọtụtụ ihe ndị ọzọ anyị kwuru na mbụ). Maka nke a, tebụl IP maara naanị ihe dị n'ime sistemụ ụyọkọ gị. Na httpbin.org dị na mpụga ya mere enweghị ike ịnweta ya. Ma nke a bụ ebe Istio Egress na-abịa napụta - na-enweghị obere mgbanwe na koodu isi mmalite gị.
Iwu Egress dị n'okpuru na-amanye Istio ịchọ (ọ bụrụ na ọ dị mkpa, yabụ na ịntanetị niile) maka ọrụ achọrọ, na nke a, httpbin.org. Dị ka ị na-ahụ na faịlụ a (egress_httpbin.yml), ọrụ ebe a dị nnọọ mfe:

Naanị ihe fọdụrụ bụ itinye iwu a:
istioctl create -f egress_httpbin.yml -n istioegress
Ị nwere ike ịlele iwu Egress site na iji iwu ahụ istioctl get egressrules:

Na n'ikpeazụ, anyị na-agba ọsọ iwu ọzọ curl - anyị na-ahụ na ihe niile na-arụ ọrụ:

Anyị na-eche n'ihu ọha
Dị ka ị pụrụ ịhụ, Istio na-enye gị ohere ịhazi mmekọrịta gị na ụwa dị n'èzí. N'ikwu ya n'ụzọ ọzọ, ị ka nwere ike ịmepụta ọrụ OpenShift ma jikwaa ha site na Kubernetes, na-edobe ihe niile na pọd ndị na-agbago elu na ala ka ọ dị mkpa. Ma n'otu oge ahụ, ị nwere ike nweta ọrụ na mpụga gburugburu gị n'enweghị nsogbu. Ee, anyị na-ekwughachi ọzọ na enwere ike ịme ihe a niile na-emetụghị koodu gị aka n'ụzọ ọ bụla.
Nke a bụ ọkwa ikpeazụ na usoro na Istio. Nọrọ na nche - enwere ọtụtụ ihe na-atọ ụtọ n'ihu!
isi: www.habr.com
