Nānā a me ka hoʻohālikelike o nā mea hoʻokele Ingress no Kubernetes

Nānā a me ka hoʻohālikelike o nā mea hoʻokele Ingress no Kubernetes

I ka hoʻomaka ʻana i kahi pūʻulu Kubernetes no kahi noi kikoʻī, pono ʻoe e hoʻomaopopo i ke ʻano o ka noi ponoʻī, ka ʻoihana, a me nā mea hoʻomohala i kēia kumuwaiwai. Me kēia ʻike, hiki iā ʻoe ke hoʻomaka e hana i kahi hoʻoholo hoʻolālā a, ʻoi aku hoʻi, ke koho ʻana i kahi mea hoʻokele Ingress kikoʻī, kahi i loaʻa i kahi helu nui i kēia lā. I mea e loaʻa ai kahi manaʻo kumu o nā koho i loaʻa me ka ʻole e hele i ka nui o nā ʻatikala / palapala, a me nā mea ʻē aʻe, ua hoʻomākaukau mākou i kēia hiʻohiʻona, me ka mea nui (hoʻomākaukau mākaukau) nā mea hoʻokele Ingress.

Manaʻo mākou e kōkua ia i nā hoa hana i ke koho ʻana i kahi hoʻoponopono hoʻolālā - ma ka liʻiliʻi e lilo ia i wahi hoʻomaka no ka loaʻa ʻana o ka ʻike kikoʻī a me nā hoʻokolohua kūpono. Ma mua, ua aʻo mākou i nā mea like ʻē aʻe ma ka ʻupena a, ʻaʻole i loaʻa i kahi hoʻokahi a ʻoi aku ka liʻiliʻi, a ʻo ka mea nui loa - hoʻonohonoho - loiloi. No laila e hoʻopiha kāua i kēlā hakahaka!

Nā Kūlana

Ma ke kumu, i mea e hoʻohālikelike ai a loaʻa i kekahi hopena maikaʻi, pono ʻoe e hoʻomaopopo ʻaʻole wale i ke kumuhana, akā loaʻa pū kekahi papa inoa o nā koina e hoʻonohonoho i ka vector noiʻi. Me ka ʻole o ka hoʻohālikelike ʻana i nā hihia āpau o ka hoʻohana ʻana iā Ingress / Kubernetes, ua hoʻāʻo mākou e hōʻike i nā koi maʻamau no nā mea hoʻokele - e mākaukau ʻoe i kēlā me kēia hihia e pono ʻoe e aʻo i kāu mau kikoʻī āpau a me nā kikoʻī.

Akā e hoʻomaka wau me nā hiʻohiʻona i maʻa loa i hoʻokō ʻia i nā hoʻonā āpau a ʻaʻole i manaʻo ʻia:

  • ʻike ikaika o nā lawelawe (ʻike lawelawe);
  • Hoʻopau SSL;
  • e hana pū me nā pūnaewele pūnaewele.

I kēia manawa no nā mea hoʻohālikelike:

Kākoʻo ʻia nā protocols

ʻO kekahi o nā pae koho koʻikoʻi. ʻAʻole hiki ke hoʻohana ʻia kāu polokalamu ma ka HTTP maʻamau, a i ʻole e koi ʻia ka hana ma nā protocol he nui i ka manawa hoʻokahi. Inā ʻaʻole maʻamau kāu hihia, e noʻonoʻo pono e noʻonoʻo i kēia kumu i ʻole ʻoe e hoʻonohonoho hou i ka hui ma hope. No nā mea hoʻoponopono āpau, ʻokoʻa ka papa inoa o nā protocols i kākoʻo ʻia.

lako polokalamu ma ke kumu

Nui nā ʻano like ʻole o nā noi i hoʻokumu ʻia ai ka mea hoʻoponopono. ʻO nā mea kaulana he nginx, traefik, haproxy, ʻelele. Ma ka hihia maʻamau, ʻaʻole nui ka hopena i ka loaʻa ʻana o ke kaʻa a hoʻouna ʻia, akā pono mau ka ʻike i nā nuances a me nā hiʻohiʻona o ka mea "ma lalo o ka pā".

Kaʻa kaʻa

Ma ke kumu o ka mea e hiki ai ke hoʻoholo e pili ana i ke kuhikuhi o ke kaʻa i kahi lawelawe kūikawā? ʻO ka maʻamau he host a me ke ala kēia, akā aia kekahi mau mea hou aʻe.

Kapa inoa i loko o kahi pūʻulu

Namespace (namespace) - ka hiki ke hoʻokaʻawale pono i nā kumuwaiwai ma Kubernetes (no ka laʻana, ma ke kahua, hana, etc.). Aia nā mea hoʻokele Ingress e pono e hoʻokomo ʻokoʻa i kēlā me kēia inoa inoa (a laila hiki iā ia ke kuhikuhi i ke kaʻa wale i nā ʻōpala o kēia wahi). A aia kekahi mau mea (a me ka hapa nui) e hana ana ma ka honua holoʻokoʻa no ka pūʻulu holoʻokoʻa - i loko o ia mau mea e kuhikuhi ʻia ai ke kaʻa i kekahi pod o ka hui, me ka nānā ʻole i ka inoa inoa.

Nā laʻana no uka

Pehea e kuhikuhi ʻia ai ke kaʻa i nā manawa olakino o ka noi, nā lawelawe? Loaʻa nā koho me nā mākaʻikaʻi a me nā passive, hoʻāʻo hou, nā kaʻa kaʻa (No nā kikoʻī hou aku, e nānā, no ka laʻana, ʻatikala e pili ana iā Istio), nā loiloi olakino maʻamau, etc. ʻO kahi ʻāpana koʻikoʻi inā loaʻa iā ʻoe nā koi kiʻekiʻe no ka loaʻa ʻana a me ka wehe ʻana i nā lawelawe i hāʻule ʻole mai ke kaupaona ʻana.

Nā algorithms kaulike

Nui nā koho: mai ke kuʻuna puni-robin i ka malihini rdp-kuki, a me nā hiʻohiʻona pākahi like nā kau pili.

Kalaukina

He aha nā papahana ʻae a ka mea hoʻoponopono e kākoʻo ai? Basic, digest, oauth, external-auth - Manaʻo wau e kamaʻāina kēia mau koho. He koʻikoʻi koʻikoʻi kēia inā he nui nā puka lou i hoʻomohala (a/a i ʻole pilikino) i loaʻa ma o Ingress.

Māhele kaʻahele

Kākoʻo paha ka mea hoʻoponopono i nā ʻano hana hoʻolaha kaʻa i hoʻohana mau ʻia e like me ka canary rollouts (canary), ka hoʻāʻo A / B, ka hoʻohālikelike ʻana i ke kaʻa (ke aniani / ke aniani)? He kumuhana ʻeha loa kēia no nā noi e koi ana i ka hoʻokele kaʻa pololei a pololei no ka hoʻāʻo ʻana i ka huahana, ka hoʻopau ʻana i nā pahu huahana ma waho o ka laina (a i ʻole me ka liʻiliʻi o ka pohō), ka nānā ʻana i nā kaʻa, a pēlā aku.

Uku kau inoa

Aia kahi koho uku no ka mea hoʻoponopono, me ka hana holomua a / a i ʻole ke kākoʻo ʻenehana?

Mea hoʻohana kiʻi kiʻi (UI pūnaewele)

Aia kekahi GUI e hoʻokele i ka hoʻonohonoho hoʻonohonoho? ʻO ka mea nui no ka "handiness" a / a no ka poʻe pono e hoʻololi i ka hoʻonohonoho Ingressʻa, akā ʻaʻole kūpono ka hana ʻana me nā template "raw". Hiki ke hoʻohana inā makemake nā mea hoʻomohala e hana i kekahi mau hoʻokolohua me nā kaʻa ma ka lele.

JWT hōʻoia

ʻO ka loaʻa ʻana o ka hōʻoia i kūkulu ʻia o nā hōʻailona pūnaewele JSON no ka ʻae a me ka hōʻoia ʻana o ka mea hoʻohana i ka noi hope.

Hiki i ka hoʻonohonoho hoʻonohonoho

ʻO ka hoʻonui ʻia ʻana o ka template ma ke ʻano o ka loaʻa ʻana o nā mīkini e hiki ai iā ʻoe ke hoʻohui i kāu mau kuhikuhi ponoʻī, nā hae, a me nā mea ʻē aʻe i nā kumu hoʻonohonoho maʻamau.

Nā mīkini pale DDOS kumu

ʻO nā algorithms palena palena maʻalahi a i ʻole nā ​​​​koho kānana kaʻa paʻakikī e pili ana i nā helu wahi, nā papa inoa keʻokeʻo, nā ʻāina, etc.

Noi mai

ʻO ka hiki ke nānā, nānā a me ka debug noi mai Ingresses i nā lawelawe kikoʻī / pods, a kūpono hoʻi ma waena o nā lawelawe / pods pū kekahi.

WAF

kākoʻo pā ahi noi.

Nā mea hoʻoponopono

Ua hoʻokumu ʻia ka papa inoa o nā mea hoʻoponopono ma muli o palapala kūhelu Kubernetes и keia papaaina. Ua hoʻokaʻawale mākou i kekahi o lākou mai ka loiloi ma muli o ka kikoʻī a i ʻole ka haʻahaʻa haʻahaʻa (ka pae mua o ka hoʻomohala ʻana). Kūkākūkā ʻia nā mea i koe ma lalo nei. E hoʻomaka kākou me ka wehewehe maʻamau o nā hoʻonā a hoʻomau me ka papa hōʻuluʻulu.

ʻO Ingress mai Kubernetes

kahua pūnaewele: github.com/kubernetes/ingress-nginx
Laikini: Apache 2.0

ʻO kēia ka mana mana no Kubernetes a ke kūkulu ʻia nei e ke kaiāulu. ʻIke ʻia mai ka inoa, ua hoʻokumu ʻia ia ma ka nginx a ua hoʻokō ʻia e kahi pūʻulu ʻokoʻa o nā plugins Lua i hoʻohana ʻia e hoʻokō i nā hiʻohiʻona hou. Ma muli o ka kaulana o ka nginx ponoʻī a me nā hoʻololi liʻiliʻi iā ia i ka wā i hoʻohana ʻia ma ke ʻano he kaohi, ʻo kēia koho ka mea maʻalahi a maʻalahi hoʻi e hoʻonohonoho no ka ʻenekini maʻamau (me ka ʻike pūnaewele).

ʻO Ingress na NGINX Inc.

kahua pūnaewele: github.com/nginxinc/kubernetes-ingress
Laikini: Apache 2.0

ʻO ka huahana mana o nā mea hoʻomohala nginx. Loaʻa i kahi mana uku ma muli o NGINX Hoʻohui. ʻO ka manaʻo nui he pae kiʻekiʻe o ka paʻa, hoʻohālikelike mau i hope, ʻaʻole i loaʻa nā modula ʻokoʻa a me ka wikiwiki i haʻi ʻia (i hoʻohālikelike ʻia me ka mana mana), i loaʻa ma muli o ka hōʻole ʻana iā Lua.

Ho'emi nui 'ia ka mana kū'oko'a, me ka ho'ohālikelike 'ia me ka mana mana (no ka nele o nā modula Lua like). I ka manawa like, ʻo ka mea i uku ʻia he ʻano hana hou aʻe: nā metric manawa maoli, hōʻoia ʻo JWT, nā loiloi olakino ikaika, a me nā mea hou aku. ʻO kahi pōmaikaʻi koʻikoʻi ma luna o NGINX Ingress ke kākoʻo piha no ka TCP / UDP traffic (a ma ke ʻano kaiāulu pū kekahi!). Minus - ua nele ʻO ka hiʻohiʻona hoʻohele kaʻahele, ʻo ia naʻe, "ʻo ia ka mea kiʻekiʻe loa no nā mea hoʻomohala," akā pono ka manawa e hoʻokō ai.

Kong Ingress

kahua pūnaewele: github.com/Kong/kubernetes-ingress-controller
Laikini: Apache 2.0

ʻO ka huahana i hoʻomohala ʻia e Kong Inc. i ʻelua mana: pāʻoihana a manuahi. Ma muli o ka nginx, i hoʻonui ʻia me ka nui o nā modula Lua.

I ka hoʻomaka ʻana, ua kālele ʻia i ka hana ʻana a me ka hoʻokele ʻana i nā noi API, ʻo ia hoʻi. ma ke ʻano he API Gateway, akā i kēia manawa ua lilo ia i mea hoʻokele Ingress piha. Nā pōmaikaʻi nui: nui nā modula hou (me nā mea mai nā mea hoʻomohala ʻaoʻao ʻekolu) i maʻalahi e hoʻouka a hoʻonohonoho a me ke kōkua ʻana i kahi ākea o nā hiʻohiʻona hou. Eia naʻe, hāʻawi mua nā hana i kūkulu ʻia i nā mea hiki. Hana ʻia ka hoʻonohonoho hana me ka hoʻohana ʻana i nā kumuwaiwai CRD.

ʻO kahi hiʻohiʻona koʻikoʻi o ka huahana - ʻo ka hana ʻana i loko o ka contour like (ma kahi o ka cross-namespaced) he kumuhana hoʻopaʻapaʻa: no kekahi e like paha ia me kahi hemahema (pono ʻoe e hana i nā hui no kēlā me kēia contour), a no kekahi he hiʻohiʻona ( bоʻOi aku ka nui o ka noho kaʻawale ʻana, e like me inā ua haki kekahi mea hoʻoponopono, a laila ua kaupalena ʻia ka pilikia i ke kaapuni wale nō).

Traefik

kahua pūnaewele: github.com/containous/traefik
Laikini: MIT

ʻO kahi koho i hana mua ʻia e hana me ka hoʻokele noi ʻana no nā microservices a me ko lākou ʻano hoʻoikaika. No laila, nui nā hiʻohiʻona pono: ka hoʻonui ʻana i ka hoʻonohonoho ʻana me ka ʻole o ka rebooting, ke kākoʻo no ka nui o nā ʻano kaulike, ke kikowaena pūnaewele, ka hoʻouna ʻana i nā metric, kākoʻo no nā protocols like ʻole, REST API, hoʻokuʻu canary, a me nā mea hou aku. ʻO kekahi hiʻohiʻona maikaʻi ke kākoʻo no Let's Encrypt palapala hōʻoia ma waho o ka pahu. ʻO ka hemahema ʻo ia i mea e hoʻonohonoho ai i ka loaʻa kiʻekiʻe (HA), pono ka mea hoʻoponopono e hoʻokomo a hoʻohui i kāna waihona KV ponoʻī.

HAProxy

kahua pūnaewele: github.com/jcmoraisjr/haproxy-ingress
Laikini: Apache 2.0

Ua ʻike lōʻihi ʻia ʻo HAProxy ma ke ʻano he koho a me ka mea kaulike kaʻa. Ma ke ʻano he ʻāpana o kahi pūʻulu Kubernetes, hāʻawi ia i kahi hoʻoponopono hoʻonohonoho "māmā" (me ka ʻole o ka nalowale o ke kaʻa), ka ʻike lawelawe e pili ana i ka DNS, ka hoʻonohonoho ikaika me ka hoʻohana ʻana i ka API. Hiki ke ʻoluʻolu ke hoʻonohonoho pono i ka template config ma ka hoʻololi ʻana i ka CM, a me ka hiki ke hoʻohana i nā hana waihona Sprig i loko. Ma keʻano laulā, ʻo ke koʻikoʻi nui o ka hoʻonā ma ka wikiwiki kiʻekiʻe, kona optimization a me ka hoʻokō ʻana i nā kumuwaiwai pau. ʻO ka pōmaikaʻi o ka mea hoʻoponopono ke kākoʻo o kahi helu moʻolelo o nā ʻano kaulike like ʻole.

Hele

kahua pūnaewele: github.com/appscode/voyager
Laikini: Apache 2.0

Ma muli o ka mea hoʻoponopono HAproxy, kahi i hoʻonohonoho ʻia ma ke ʻano he hopena honua e kākoʻo ana i kahi ākea o nā hiʻohiʻona ma kahi nui o nā mea hoʻolako. Hāʻawi ʻia kahi manawa kūpono no ke kaulike ʻana i nā kaʻa ma L7 a me L4, a ʻo ke kaulike ʻana i ka holo ʻana o TCP L4 holoʻokoʻa hiki ke kapa ʻia kekahi o nā hiʻohiʻona nui o ka hopena.

ʻO Contour

kahua pūnaewele: github.com/heptio/contour
Laikini: Apache 2.0

ʻAʻole hoʻokumu wale ʻia kēia hopena ma luna o Envoy: ua hoʻomohala ʻia e hui pū me nā mea kākau o kēia mea koho kaulana. ʻO kahi hiʻohiʻona nui ka hiki ke hoʻokaʻawale i ka mana o nā kumuwaiwai Ingress me ka hoʻohana ʻana i nā kumuwaiwai CRD IngressRoute. No nā hui me nā hui hoʻomohala he nui e hoʻohana ana i ka puʻupuʻu like, kōkua kēia i ka hoʻonui ʻana i ka palekana o ka hana ʻana me nā kaʻa ma nā puka lou e pili ana a pale iā lākou mai nā hewa ke hoʻololi i nā kumuwaiwai Ingress.

Hāʻawi ia i kahi hoʻonohonoho lōʻihi o nā ʻano kaulike (aia ke noi mirroring, auto-repeat, noi no ka palena palena, a me nā mea hou aʻe), ka nānā kikoʻī ʻana i ke kahe a me nā hemahema. Malia paha no kekahi mea e lilo ia i mea hoʻihoʻi nui i ka nele o ke kākoʻo no nā kau paʻa (ʻoiai ka hana ke hoʻomaka nei).

Istio Ingress

kahua pūnaewele: istio.io/docs/tasks/traffic-management/ingress
Laikini: Apache 2.0

ʻO kahi hoʻonā mesh lawelawe holoʻokoʻa ʻaʻole ia he mea hoʻokele Ingress wale nō e hoʻokele i nā kaʻa komo mai waho mai, akā mālama pū kekahi i nā kaʻa āpau i loko o ka hui. Ma lalo o ka puʻupuʻu, hoʻohana ʻia ʻo Envoy ma ke ʻano he sidecar proxy no kēlā me kēia lawelawe. ʻO ke kumu, he hui nui kēia e "hiki ke hana i kekahi mea", a ʻo kāna manaʻo nui ʻo ia ka hoʻokele kiʻekiʻe, hoʻonui, palekana a me ka ʻike. Me ia, hiki iā ʻoe ke hoʻoponopono maikaʻi i ka hoʻokele kaʻa, ʻae i ka ʻae ma waena o nā lawelawe, ke kaupaona ʻana, ka nānā ʻana, nā hoʻokuʻu canary, a me nā mea hou aku. E heluhelu hou aʻe e pili ana iā Istio ma ke ʻano o nā ʻatikala "E hoʻi i nā microservices me Istio".

Kāpena

kahua pūnaewele: github.com/datawire/ambassador
Laikini: Apache 2.0

ʻO kahi hopena ʻē aʻe e pili ana iā Envoy. Loaʻa iā ia nā mana manuahi a kālepa. Hoʻonoho ʻia ʻo ia ma ke ʻano he "kūpono maoli ʻo Kubernetes", e lawe mai i nā pono kūpono (hoʻohui paʻa me nā ʻano a me nā hui o ka hui K8s).

Hōʻike pāʻani

No laila, ʻo ka culmination o ka ʻatikala kēia papa nui:

Nānā a me ka hoʻohālikelike o nā mea hoʻokele Ingress no Kubernetes

Hiki ke kaomi ʻia no ka ʻike kokoke ʻana, a loaʻa nō hoʻi ma ka ʻano Nā Palapala Hōʻikeʻike.

E hōʻoia kāua

ʻO ke kumu o kēia ʻatikala ʻo ia ka hāʻawi ʻana i kahi ʻike piha loa (akā naʻe, ʻaʻole pau loa!) ʻO ke koho e hana ai i kāu hihia. E like me ka mea maʻamau, loaʻa i kēlā me kēia mea hoʻokele kona mau pono a me nā hemahema ...

Maikaʻi ka Ingress maʻamau mai Kubernetes no kona loaʻa ʻana a me ka hōʻoia ʻana, nā hiʻohiʻona waiwai nui - ma ka hihia maʻamau, pono ia " lawa no nā maka". Eia naʻe, inā he nui nā koi no ka paʻa, ka pae o nā hiʻohiʻona a me ka hoʻomohala ʻana, pono ʻoe e hoʻolohe iā Ingress me NGINX Plus a me kahi kau inoa uku. Loaʻa iā Kong ka waiwai nui o nā plug-ins (a, no laila, nā manawa kūpono a lākou e hāʻawi ai), a ma ka uku uku ʻoi aku ka nui o lākou. Loaʻa iā ia nā manawa kūpono e hana ma ke ʻano he API Gateway, ka hoʻonohonoho hoʻonohonoho e pili ana i nā kumuwaiwai CRD, a me nā lawelawe Kubernetes kumu.

Me nā koi hoʻonui no ke kaulike a me nā ʻano ʻae, e nānā iā Traefik a me HAProxy. ʻO kēia nā papahana Open Source, i hōʻoia ʻia i nā makahiki, paʻa loa a hoʻomohala ikaika. Ua hala ʻo Contour no ʻelua mau makahiki i kēia manawa, akā he ʻōpiopio loa ia a he mau hiʻohiʻona wale nō i hoʻohui ʻia ma luna o Envoy. Inā loaʻa nā koi no ka hele ʻana / hoʻokomo ʻana o WAF i mua o ka noi, pono ʻoe e hoʻolohe i ka Ingress like mai Kubernetes a i ʻole HAProxy.

A ʻo ka mea waiwai loa i ka ʻōlelo o nā hiʻohiʻona nā huahana i kūkulu ʻia ma luna o Envoy, ʻoi aku ʻo Istio. Me he mea lā he hopena piha e "hiki ke hana i kekahi mea", akā naʻe, ʻo ia hoʻi ke ʻano o ka paepae komo kiʻekiʻe loa no ka hoʻonohonoho / hoʻomaka / hoʻokele ʻana ma mua o nā hopena ʻē aʻe.

Ua koho mākou a hoʻohana mau i ka Ingress mai Kubernetes ma ke ʻano he kaohi maʻamau, e uhi ana i ka 80-90% o nā pono. Hiki ke hilinaʻi, maʻalahi e hoʻonohonoho a hoʻonui. Ma ka laulā, i ka nele o nā koi kikoʻī, pono ia e kūpono i ka hapa nui o nā puʻupuʻu / noi. No nā huahana like ʻole a maʻalahi hoʻi, hiki ke ʻōlelo ʻia ʻo Traefik a me HAProxy.

PS

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

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