"ʻ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.
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
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ʻ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:
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:
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:
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):
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
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:
A i ʻole hiki iā ʻoe ke wehe i ka helu helu like ma ka polokalamu kele pūnaewele:
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 curl egresshttpbin-istioegress.$(minishift ip).nip.io
, a laila e ʻike mākou i kēia ma ka pale:
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:
ʻ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
:
A i ka hope, holo hou mākou i ke kauoha pana - a ʻike mākou ua hana nā mea a pau:
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