Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna

"ʻO Danger koʻu inoa waena," wahi a Austin Powers, he kanaka pohihihi honua. Akā, ʻo ka mea i manaʻo nui ʻia e nā luna nui a me nā lawelawe naʻauao, ʻaʻole kūpono ia no nā lawelawe kamepiula, kahi i ʻoi aku ka maikaʻi o ka luhi ma mua o ka pilikia.

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna

A ʻo Istio, me OpenShift a me Kubernetes, hana i ka hoʻohana ʻana i nā microservice me ka ʻoluʻolu a me ka wānana - a maikaʻi kēlā. E kamaʻilio mākou e pili ana i kēia a me nā mea hou aʻe ma ka pou ʻehā a me ka hope ma ka moʻo Istio.

Ke pono ka luuluu

I kā mākou hihia, ʻo ka luhi wale nō i ka pae hope, ʻo ka mea i koe e noho a nānā i ke kaʻina hana. Akā no kēia pono ʻoe e hoʻonohonoho mua i nā mea āpau, a he nui nā mea hoihoi e kali nei iā ʻoe ma aneʻi.

Ke kau nei i kahi mana hou o kāu polokalamu, pono e noʻonoʻo i nā koho āpau no ka hōʻemi ʻana i nā pilikia. ʻO ka holo like ʻana he ala ikaika loa a hōʻoia ʻia e hoʻāʻo ai, a ʻae ʻo Istio iā ʻoe e hoʻohana i kahi "lawelawe huna" (kahi huna huna o kāu microservice) e hana i kēia me ka ʻole o ka hoʻopili ʻana i ka ʻōnaehana hana. Aia kekahi hua'ōlelo kūikawā no kēia - "Dark Launch", kahi i ho'ālaʻia e kahi hana me ka inoa spy like "traffic mirroring".

E ʻoluʻolu e hoʻohana i ka huaʻōlelo mua o ka paukū mua i ka huaʻōlelo "deploy" ma mua o ka "hoʻokuʻu". Pono e hiki iā ʻoe ke kau-a, ʻoiaʻiʻo, hoʻohana i kāu microservice i nā manawa a pau āu e makemake ai. Pono e hiki i kēia lawelawe ke loaʻa a hana i nā kaʻa, hana i nā hopena, a kākau pū i nā lāʻau a nānā. Akā i ka manawa like, ʻaʻole pono e hoʻokuʻu ʻia kēia lawelawe ponoʻī i ka hana. ʻAʻole like ka hoʻonohonoho ʻana a me ka hoʻokuʻu ʻana i nā polokalamu. Hiki iā ʻoe ke kau i kēlā me kēia manawa āu e makemake ai, akā e hoʻokuʻu wale i ka wā mākaukau.

He mea hoihoi ka hoʻonohonoho ʻana i ka luhi

E nānā i ke kānāwai hoʻokele Istio aʻe, e hoʻokele i nā noi HTTP āpau i ka manaʻo microservice v1 (nā hiʻohiʻona āpau i lawe ʻia mai Istio Tutorial GitHub repo), ʻoiai e hoʻohālikelike ana iā lākou i ka manaʻo v2 microservice:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
E nānā pono i ka lepili mirror: ma ka lalo o ka pale - ʻo ia ka mea e hoʻonohonoho i ka hoʻohālikelike ʻana. ʻAe, maʻalahi kēlā!

ʻO ka hopena o kēia lula ʻo ia ka hoʻomau ʻana o kāu ʻōnaehana hana (v1) i nā noi e hiki mai ana, akā e hoʻohālikelike ʻia nā noi iā lākou iho i v2, ʻo ia hoʻi, e hele ana kā lākou mau kope piha i laila. Ma kēia ala, hiki iā ʻoe ke hoʻāʻo i ka v2 i nā kūlana maoli - ma ka ʻikepili maoli a me ke kaʻa - me ka ʻole o ka hoʻopili ʻana i ka hana o ka ʻōnaehana hana. He mea luhi paha ka hoʻonohonoho ʻana i nā hoʻokolohua? ʻAe, maopopo. Akā ua hana ʻia ma kahi ʻano hoihoi.

E hoʻohui pū kāua

E ʻoluʻolu e hoʻomaopopo i ka code v2 pono e hoʻolako i nā kūlana i hiki ai i nā noi komo ke alakaʻi i nā loli ʻikepili. Hoʻohālikelike ʻia nā noi iā lākou iho a maʻalahi, akā ʻo ke koho ʻana i ke ʻano hana i ka hoʻāʻo iā ʻoe - a he mea hopohopo kēia.

E haʻi hou kākou i kahi mea nui

Hiki ke hana ʻia ka hoʻokuʻu huna me ka hoʻohālikelike ʻana i ke kalaiwa (Dark Launch/Request Mirroring) me ka ʻole o ka hoʻopili ʻana i ke code ma kekahi ʻano.

Mea ai no ka manao

Pehea inā e hoʻouna ʻia kahi o nā noi i v1, akā i v2? No ka laʻana, hoʻokahi pākēneka o nā noi āpau a i ʻole nā ​​​​noi mai kekahi hui o nā mea hoʻohana. A laila, ke nānā nei i ke ʻano o ka hana ʻana o v2, e hoʻololi mālie i nā noi āpau i ka mana hou. A i ʻole, e hoʻihoʻi i nā mea āpau i v1 inā hewa kekahi mea me v2. Manaʻo wau ua kapa ʻia ʻo Canary Deployment. hoʻi i ka mining, a ina no Rusia ia, aia paha he kuhikuhi no nā pōpoki), a i kēia manawa e nānā hou mākou i kēia.

Hoʻokomo ʻia ʻo Canary ma Istio: hoʻomaʻamaʻa i ka hoʻokō

Me ka akahele a me ka mālie

He mea maʻalahi loa ka manaʻo o ka Canary Deployment deployment model: i ka wā e hoʻomaka ai ʻoe i kahi mana hou o kāu polokalamu (i kā mākou hihia, he microservice), hāʻawi mua ʻoe iā ia i kahi hui liʻiliʻi o nā mea hoʻohana. Inā holo pono nā mea a pau, hoʻonui mālie ʻoe i kēia pūʻulu a hiki i ka hoʻomaka ʻana o ka mana hou e hana, a i ʻole - inā ʻaʻole - e neʻe i nā mea hoʻohana a pau i laila. Ma ka noʻonoʻo a me ka hoʻokomo mālie ʻana i kahi mana hou a me ka hoʻololi ʻana i nā mea hoʻohana iā ia ma ke ʻano kaohi, hiki iā ʻoe ke hōʻemi i nā pilikia a hoʻonui i ka manaʻo.

ʻOiaʻiʻo, hoʻomaʻamaʻa ʻo Istio i ka Canary Deployment ma ka hāʻawi ʻana i nā koho maikaʻi no ka hoʻokele noiʻi naʻauao. A ʻae, hiki ke hana i kēia me ka hoʻopā ʻole ʻana i kāu code kumu ma kekahi ʻano.

Kānana i ka polokalamu kele pūnaewele

ʻO kekahi o nā pae hoʻokele maʻalahi loa ʻo ia ka redirection-based browser. E ʻōlelo mākou makemake wale ʻoe i nā noi mai nā mākaʻikaʻi Safari e hele i v2. Penei ka hana ana:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
E hoʻohana i kēia lula alahele a laila hoʻohana i ke kauoha curl E hoʻohālike mākou i nā noi maoli i ka microservice ma kahi loop. E like me kāu e ʻike ai ma ke kiʻi kiʻi, hele lākou āpau i v1:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
Aia i hea ke kaʻa ma v2? No ka mea i kā mākou hiʻohiʻona i hele mai nā noi āpau mai kā mākou laina kauoha ponoʻī, ʻaʻole ia. Akā e noʻonoʻo i nā laina lalo o ka pale ma luna: he pane kēia i ka ʻoiaʻiʻo ua hoʻokō mākou i kahi noi mai ka polokalamu Safari, a ʻo ia ka mea i hana i kēia:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna

Mana palena ʻole

Ua kākau mua mākou e hāʻawi nā ʻōlelo maʻamau i nā mana ikaika loa no nā noi alahele. E nānā i kēia hiʻohiʻona (manaʻo mākou e hoʻomaopopo ʻoe i kāna hana):

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
I kēia manawa ua loaʻa paha iā ʻoe kahi manaʻo i ka mea e hiki ai i nā ʻōlelo maʻamau ke hana.

Hana akamai

ʻO ke ala ala akamai, ma ka hoʻoponopono ʻana i nā poʻomanaʻo packet me ka hoʻohana ʻana i nā ʻōlelo maʻamau, hiki iā ʻoe ke hoʻokele i ke ala āu e makemake ai. A ua maʻalahi kēia i ka hoʻokō ʻana i ke code hou - he maʻalahi, ʻaʻole pono e hoʻololi i ke code ponoʻī, a inā pono, hiki ke hoʻihoʻi koke ʻia nā mea āpau e like me ia.

hoihoi?

Makemake ʻoe e hoʻokolohua me Istio, Kubernetes a me OpenShift ma kāu kamepiula? Hui Pūʻulu Hoʻokumu ʻo Red Hat hoʻomākaukau maikaʻi ʻolelo e pili ana i kēia kumuhana a hoʻolaha i nā faila a pau. No laila e hele i mua a mai hōʻole iā ʻoe iho i kekahi mea.

Istio Egress: e puka i waho ma ka hale kūʻai souvenir

Ma ka hoʻohana ʻana iā Istio me Red Hat OpenShift a me Kubernetes, hiki iā ʻoe ke maʻalahi i kou ola me nā microservices. Ua hūnā ʻia ka mesh lawelawe a Istio i loko o nā pods Kubernetes, a holo kāu code (ka hapa nui) i kahi kaʻawale. ʻO ka hana, ka maʻalahi o ka hoʻololi, ka huli ʻana, a me nā mea ʻē aʻe - maʻalahi kēia mau mea a pau i ka hoʻohana ʻana i nā pahu sidecar. He aha inā inā pono kāu microservice e kamaʻilio me nā lawelawe ʻē aʻe i loaʻa ma waho o kāu ʻōnaehana OpenShift-Kubernetes?

ʻO kēia kahi i hele mai ai ʻo Istio Egress e hoʻopakele. I ka pōkole, hiki iā ʻoe ke komo i nā kumuwaiwai (heluhelu: "lawelawe") ʻaʻole ʻāpana o kāu ʻōnaehana o nā pods Kubernetes. Inā ʻaʻole ʻoe e hana i kahi hoʻonohonoho hou aʻe, a laila i loko o ka Istio Egress kaiapuni ka holo ʻana i loko o kahi pūʻulu o nā pods a ma waena o ia mau pūʻulu e pili ana i nā papa IP kūloko. A hana maikaʻi kēlā pupation inā ʻaʻole pono ʻoe e komo i nā lawelawe mai waho.

Hāʻawi ʻo Egress iā ʻoe e kāʻalo i nā papa IP ma luna, ma muli o nā lula Egress a i ʻole nā ​​ʻano helu IP.

E ʻōlelo mākou he polokalamu Java mākou e hana i kahi noi GET iā httpbin.org/headers.

(ʻO httpbin.org kahi kumu kūpono no ka hoʻāʻo ʻana i nā noi lawelawe i waho.)

Inā ʻoe e komo ma ka laina kauoha curl http://httpbin.org/headers, e ike kakou i keia:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
A i ʻole hiki iā ʻoe ke wehe i ka helu helu like ma ka polokalamu kele pūnaewele:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
E like me kāu e ʻike ai, hoʻihoʻi wale ka lawelawe ma laila i nā poʻo i hāʻawi ʻia iā ia.

Ke hoʻololi nei mākou i nā mea lawe mai

I kēia manawa e lawe mākou i ka code Java o kēia lawelawe, ma waho o kā mākou ʻōnaehana, a holo iā mākou iho, kahi, hoʻomanaʻo, ua hoʻokomo ʻia ʻo Istio. (Hiki iā ʻoe ke hana iā ʻoe iho ma ke kelepona ʻana kā mākou kumu aʻo Istio.) Ma hope o ke kūkulu ʻana i ke kiʻi kūpono a hoʻokuʻu iā ia ma ka OpenShift platform, e kāhea mākou i kēia lawelawe me ke kauoha curl egresshttpbin-istioegress.$(minishift ip).nip.io, a laila e ʻike mākou i kēia ma ka pale:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
Auwe, heaha ka mea i hanaia? Ua hana wale nā ​​mea a pau. He aha ka manaʻo ʻaʻole i loaʻa? Ua hana wale mākou no ia curl.

Hoʻonui i nā papa IP i ka Pūnaewele holoʻokoʻa

Pono ʻo Istio e hoʻopiʻi (a mahalo ʻia) no kēia. Ma hope o nā mea a pau, ʻo Istio wale nō nā pahu sidecar nona ke kuleana no ka ʻike a me ke ala ʻana (a me nā mea ʻē aʻe a mākou i kamaʻilio mua ai). No kēia kumu, ʻike wale nā ​​papa IP i ka mea i loko o kāu ʻōnaehana cluster. A aia ʻo httpbin.org ma waho a no laila hiki ʻole ke komo. A ʻo kēia kahi i hele mai ai ʻo Istio Egress e hoʻopakele - me ka ʻole o ka hoʻololi iki ʻana i kāu code kumu.

ʻO ke kānāwai Egress ma lalo e koi iā Istio e ʻimi (inā pono, a laila ma ka Pūnaewele holoʻokoʻa) no ka lawelawe pono, ma kēia hihia, httpbin.org. E like me kāu e ʻike ai mai kēia faila (egress_httpbin.yml), maʻalahi ka hana ma aneʻi:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
ʻO nā mea a pau e pili ana i kēia lula:

istioctl create -f egress_httpbin.yml -n istioegress

Hiki iā ʻoe ke nānā i nā lula Egress me ke kauoha istioctl get egressrules:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna
A i ka hope, holo hou mākou i ke kauoha pana - a ʻike mākou ua hana nā mea a pau:

Hoʻomaka ʻeleʻele ma Istio: Nā lawelawe huna

Manao akea makou

E like me kāu e ʻike ai, ʻae ʻo Istio iā ʻoe e hoʻonohonoho i ka pilina me ka honua o waho. I nā huaʻōlelo ʻē aʻe, hiki iā ʻoe ke hana i nā lawelawe OpenShift a hoʻokele iā lākou ma o Kubernetes, e mālama ana i nā mea āpau i nā pods e piʻi a i lalo e like me ka mea e pono ai. A i ka manawa like, hiki iā ʻoe ke komo palekana i nā lawelawe ma waho o kou kaiapuni. A ʻae, ʻōlelo hou mākou e hiki ke hana i kēia me ka ʻole o ka hoʻopā ʻana i kāu code ma kekahi ʻano.

ʻO kēia ka pou hope loa ma ka moʻolelo ma Istio. E hoʻolohe - he nui nā mea hoihoi ma mua!

Source: www.habr.com

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