Muhtasari na ulinganisho wa vidhibiti vya Ingress vya Kubernetes

Muhtasari na ulinganisho wa vidhibiti vya Ingress vya Kubernetes

Wakati wa kuzindua kikundi cha Kubernetes kwa programu mahususi, unahitaji kuelewa ni nini programu yenyewe, biashara, na wasanidi huleta rasilimali hii. Kwa habari hii, unaweza kuanza kufanya uamuzi wa usanifu na, hasa, kuchagua mtawala maalum wa Ingress, ambayo tayari kuna idadi kubwa leo. Ili kupata wazo la msingi la chaguzi zinazopatikana bila kulazimika kupitia vifungu / hati nyingi, nk, tumeandaa muhtasari huu, pamoja na vidhibiti kuu (utayarishaji tayari) wa Ingress.

Tunatumahi kuwa itasaidia wenzake katika kuchagua suluhisho la usanifu - angalau itakuwa mahali pa kuanzia kupata habari zaidi na majaribio ya vitendo. Hapo awali, tulisoma vifaa vingine vinavyofanana kwenye wavu na, isiyo ya kawaida, hatukupata moja zaidi au chini kamili, na muhimu zaidi - iliyopangwa - mapitio. Basi tujaze pengo hilo!

Viwango

Kimsingi, ili kulinganisha na kupata matokeo yoyote muhimu, unahitaji kuelewa sio tu eneo la somo, lakini pia kuwa na orodha maalum ya vigezo ambavyo vitaweka vekta ya utafiti. Bila kujifanya kuchambua kesi zote zinazowezekana za kutumia Ingress / Kubernetes, tulijaribu kuangazia mahitaji ya jumla ya vidhibiti - kuwa tayari kuwa kwa hali yoyote italazimika kusoma maelezo yako yote na maelezo kando.

Lakini nitaanza na sifa ambazo zimejulikana sana hivi kwamba zinatekelezwa katika suluhisho zote na hazizingatiwi:

  • ugunduzi wa nguvu wa huduma (ugunduzi wa huduma);
  • kusitisha SSL;
  • kufanya kazi na soketi za wavuti.

Sasa kwa pointi za kulinganisha:

Itifaki zinazotumika

Moja ya vigezo vya msingi vya uteuzi. Huenda programu yako isifanye kazi kwenye HTTP ya kawaida, au inaweza kuhitaji kufanyia kazi itifaki nyingi kwa wakati mmoja. Ikiwa kipochi chako si cha kawaida, hakikisha unazingatia kipengele hiki ili usilazimike kusanidi upya nguzo baadaye. Kwa vidhibiti vyote, orodha ya itifaki zinazotumika hutofautiana.

programu katika msingi

Kuna tofauti kadhaa za programu ambazo kidhibiti kinategemea. Maarufu ni nginx, traefik, haproxy, mjumbe. Kwa ujumla, inaweza kuwa haina athari kubwa juu ya jinsi trafiki inavyopokelewa na kupitishwa, lakini ni muhimu kujua nuances na sifa za kile kilicho "chini ya kofia".

Uelekezaji wa trafiki

Kwa msingi wa nini inawezekana kufanya uamuzi kuhusu mwelekeo wa trafiki kwa huduma fulani? Kawaida hizi ni mwenyeji na njia, lakini kuna uwezekano wa ziada.

Nafasi ya majina ndani ya kundi

Nafasi ya jina (nafasi ya jina) - uwezo wa kugawanya rasilimali kimantiki katika Kubernetes (kwa mfano, kwenye hatua, uzalishaji, nk). Kuna vidhibiti vya Ingress ambavyo lazima visakinishwe kando katika kila nafasi ya majina (na kisha inaweza kuelekeza trafiki tu kwa maganda ya nafasi hii). Na kuna zile (na nyingi zao wazi) ambazo hufanya kazi ulimwenguni kwa nguzo nzima - trafiki ndani yao inaelekezwa kwa ganda lolote la nguzo, bila kujali nafasi ya majina.

Sampuli za mito ya juu

Trafiki inaelekezwa vipi kwa hali nzuri za maombi, huduma? Kuna chaguzi na hundi zinazofanya kazi na zisizo na maana, hujaribu tena, vivunja mzunguko (Kwa maelezo zaidi, angalia, kwa mfano, makala kuhusu Istio), ukaguzi maalum wa afya, nk. Kigezo muhimu sana ikiwa una mahitaji ya juu ya upatikanaji na kuondolewa kwa wakati wa huduma zilizoshindwa kutoka kwa kusawazisha.

Kusawazisha algoriti

Kuna chaguzi nyingi: kutoka kwa jadi robin-pande zote kwa kigeni rdp-kidakuzi, pamoja na vipengele vya mtu binafsi kama vikao vya kunata.

Uthibitishaji

Ni mipango gani ya uidhinishaji ambayo mtawala anaunga mkono? Msingi, digest, kiapo, mwandishi wa nje - Nadhani chaguzi hizi zinapaswa kujulikana. Hiki ni kigezo muhimu ikiwa kuna vitanzi vingi vya wasanidi programu (na/au vya faragha) ambavyo vinapatikana kupitia Ingress.

Usambazaji wa trafiki

Je, kidhibiti kinaauni njia zinazotumika sana za usambazaji wa trafiki kama vile uchapishaji wa canary (canary), upimaji wa A / B, uakisi wa trafiki (kuakisi / kuweka kivuli)? Hili ni somo chungu sana kwa programu zinazohitaji usimamizi sahihi na sahihi wa trafiki kwa majaribio yenye tija, kutatua hitilafu za bidhaa nje ya mtandao (au kwa hasara ndogo), uchanganuzi wa trafiki, na kadhalika.

Usajili unaolipishwa

Je, kuna chaguo la kulipia kwa kidhibiti, chenye utendakazi wa hali ya juu na/au usaidizi wa kiufundi?

Kiolesura cha mchoro cha mtumiaji (UI ya Wavuti)

Kuna GUI yoyote ya kudhibiti usanidi wa mtawala? Hasa kwa "handness" na / au kwa wale wanaohitaji kufanya mabadiliko fulani kwenye usanidi wa Ingress'a, lakini kufanya kazi na violezo "mbichi" sio rahisi. Inaweza kuwa muhimu ikiwa wasanidi wanataka kufanya majaribio ya trafiki kwa kuruka.

Uthibitishaji wa JWT

Uwepo wa uthibitishaji uliojumuishwa wa tokeni za wavuti za JSON kwa idhini na uthibitishaji wa mtumiaji hadi mwisho wa programu.

Uwezekano wa kubinafsisha usanidi

Upanuzi wa kiolezo kwa maana ya kuwa na mifumo inayokuruhusu kuongeza maagizo yako, bendera, n.k. kwa violezo vya usanidi wa kawaida.

Mbinu za msingi za ulinzi wa DDOS

Algoriti rahisi za kikomo cha viwango au chaguo ngumu zaidi za uchujaji wa trafiki kulingana na anwani, orodha zilizoidhinishwa, nchi, n.k.

Omba kufuatilia

Uwezo wa kufuatilia, kufuatilia na kutatua maombi kutoka kwa Ingresses hadi huduma maalum / maganda, na haswa kati ya huduma / maganda pia.

WAF

Support programu ya firewall.

Vidhibiti

Orodha ya vidhibiti iliundwa kulingana na nyaraka rasmi za Kubernetes ΠΈ meza hii. Hatukujumuisha baadhi yao kwenye ukaguzi kwa sababu ya umaalum au kiwango cha chini cha maambukizi (hatua ya awali ya maendeleo). Mengine yanajadiliwa hapa chini. Wacha tuanze na maelezo ya jumla ya suluhisho na tuendelee na jedwali la muhtasari.

Ingress kutoka Kubernetes

Tovuti: github.com/kubernetes/ingress-nginx
Leseni: Apache 2.0

Huyu ndiye kidhibiti rasmi cha Kubernetes na anaendelezwa na jumuiya. Ni wazi kutoka kwa jina, ni msingi wa nginx na inakamilishwa na seti tofauti ya programu-jalizi za Lua zinazotumiwa kutekeleza vipengele vya ziada. Kwa sababu ya umaarufu wa nginx yenyewe na marekebisho machache kwayo inapotumiwa kama kidhibiti, chaguo hili linaweza kuwa rahisi na rahisi zaidi kusanidi kwa mhandisi wa wastani (mwenye uzoefu wa wavuti).

Ingress na NGINX Inc.

Tovuti: github.com/nginxinc/kubernetes-ingress
Leseni: Apache 2.0

Bidhaa rasmi ya watengenezaji nginx. Ina toleo la kulipwa kulingana na NGINX Plus. Wazo kuu ni kiwango cha juu cha utulivu, utangamano wa nyuma wa mara kwa mara, kutokuwepo kwa moduli yoyote ya nje na kasi iliyotangazwa ya kuongezeka (ikilinganishwa na mtawala rasmi), iliyopatikana kutokana na kukataliwa kwa Lua.

Toleo la bure limepunguzwa kwa kiasi kikubwa, ikiwa ni pamoja na hata ikilinganishwa na mtawala rasmi (kutokana na ukosefu wa moduli sawa za Lua). Wakati huo huo, anayelipwa ana utendakazi mpana wa ziada: vipimo vya wakati halisi, uthibitishaji wa JWT, ukaguzi wa afya unaoendelea, na zaidi. Faida muhimu zaidi ya NGINX Ingress ni usaidizi kamili kwa trafiki ya TCP / UDP (na katika toleo la jamii pia!). Ondoa - kutokuwepo kipengele cha usambazaji wa trafiki, ambayo, hata hivyo, "ina kipaumbele cha juu zaidi kwa watengenezaji," lakini inachukua muda kutekeleza.

Kong Ingress

Tovuti: github.com/Kong/kubernetes-ingress-controller
Leseni: Apache 2.0

Bidhaa iliyotengenezwa na Kong Inc. katika matoleo mawili: ya kibiashara na ya bure. Kulingana na nginx, ambayo imepanuliwa na idadi kubwa ya moduli za Lua.

Hapo awali, ilizingatia usindikaji na uelekezaji maombi ya API, i.e. kama Lango la API, lakini kwa sasa imekuwa kidhibiti kamili cha Ingress. Faida kuu: moduli nyingi za ziada (ikiwa ni pamoja na wale kutoka kwa watengenezaji wa tatu) ambazo ni rahisi kufunga na kusanidi na kwa msaada wa ambayo vipengele mbalimbali vya ziada vinatekelezwa. Hata hivyo, kazi zilizojengwa tayari hutoa uwezekano mwingi. Usanidi wa kazi unafanywa kwa kutumia rasilimali za CRD.

Kipengele muhimu cha bidhaa - kufanya kazi ndani ya contour sawa (badala ya jina-namespaced) ni mada yenye utata: kwa wengine itaonekana kama hasara (lazima utoe vyombo kwa kila contour), na kwa mtu ni kipengele ( bΠΎKiwango kikubwa cha kutengwa, kama ikiwa mtawala mmoja amevunjwa, basi tatizo ni mdogo kwa mzunguko pekee).

Traefik

Tovuti: github.com/containous/traefik
Leseni: MIT

Seva mbadala ambayo iliundwa awali kufanya kazi na uelekezaji wa ombi kwa huduma ndogo na mazingira yao yanayobadilika. Kwa hivyo, vipengele vingi muhimu: kusasisha usanidi bila kuwasha upya hata kidogo, usaidizi wa idadi kubwa ya mbinu za kusawazisha, kiolesura cha wavuti, usambazaji wa metriki, usaidizi wa itifaki mbalimbali, REST API, matoleo ya canary, na mengi zaidi. Kipengele kingine kizuri ni usaidizi wa vyeti vya Hebu Tusimbishe nje ya boksi. Hasara ni kwamba ili kuandaa upatikanaji wa juu (HA), mtawala atahitaji kufunga na kuunganisha hifadhi yake ya KV.

HAProxy

Tovuti: github.com/jcmorisjr/haproxy-ingress
Leseni: Apache 2.0

HAProksi kwa muda mrefu imekuwa ikijulikana kama wakala na kusawazisha trafiki. Kama sehemu ya kundi la Kubernetes, inatoa sasisho la usanidi "laini" (bila kupoteza trafiki), ugunduzi wa huduma kulingana na DNS, usanidi wa nguvu kwa kutumia API. Inaweza kuvutia kubinafsisha kabisa kiolezo cha usanidi kwa kuchukua nafasi ya CM, na pia uwezo wa kutumia kazi za maktaba ya Sprig ndani yake. Kwa ujumla, msisitizo kuu wa suluhisho ni kasi ya juu, uboreshaji wake na ufanisi katika rasilimali zinazotumiwa. Faida ya mtawala ni usaidizi wa nambari ya rekodi ya mbinu tofauti za kusawazisha.

Voyager

Tovuti: github.com/appscode/voyager
Leseni: Apache 2.0

Kulingana na kidhibiti cha HAproxy, ambacho kimewekwa kama suluhu la wote ambalo linaauni vipengele mbalimbali kwenye idadi kubwa ya watoa huduma. Fursa hutolewa kwa kusawazisha trafiki kwenye L7 na L4, na kusawazisha trafiki ya TCP L4 kwa ujumla inaweza kuitwa moja ya vipengele muhimu vya suluhisho.

Contour

Tovuti: github.com/heptio/contour
Leseni: Apache 2.0

Suluhisho hili sio tu kwa msingi wa Mjumbe: ilitengenezwa na pamoja na waandishi wa wakala huu maarufu. Kipengele muhimu ni uwezo wa kutenganisha udhibiti wa rasilimali za Ingress kwa kutumia rasilimali za IngressRoute CRD. Kwa mashirika yenye timu nyingi za maendeleo zinazotumia nguzo moja, hii husaidia kuongeza usalama wa kufanya kazi na trafiki katika vitanzi vya jirani na kuwalinda kutokana na makosa wakati wa kubadilisha rasilimali za Ingress.

Pia hutoa seti iliyopanuliwa ya mbinu za kusawazisha (kuna uakisi wa ombi, kurudia kiotomatiki, kikwazo cha kiwango cha ombi, na mengi zaidi), ufuatiliaji wa kina wa mtiririko wa trafiki na kushindwa. Labda kwa mtu itakuwa kikwazo kikubwa kukosekana kwa usaidizi kwa vikao vya nata (ingawa ni kazi tayari inaendelea).

Istio Ingress

Tovuti: istio.io/docs/tasks/trafiki-management/ingress
Leseni: Apache 2.0

Suluhisho la kina la matundu ya huduma ambalo sio tu kidhibiti cha Ingress ambacho kinadhibiti trafiki zinazoingia kutoka nje, lakini pia hudhibiti trafiki yote ndani ya nguzo. Chini ya kofia, Mjumbe hutumiwa kama wakala wa kando kwa kila huduma. Kwa asili, hii ni mchanganyiko mkubwa ambao "unaweza kufanya chochote", na wazo lake kuu ni usimamizi wa juu, upanuzi, usalama na uwazi. Kwa hiyo, unaweza kurekebisha uelekezaji wa trafiki, idhini ya kufikia kati ya huduma, kusawazisha, ufuatiliaji, matoleo ya canary, na mengi zaidi. Soma zaidi kuhusu Istio katika mfululizo wa makala "Rudi kwa huduma ndogo na Istio'.

Balozi

Tovuti: github.com/datawire/ambassador
Leseni: Apache 2.0

Suluhisho lingine kulingana na Mjumbe. Ina matoleo ya bure na ya kibiashara. Imewekwa kama "asili kamili kwa Kubernetes", ambayo huleta faida zinazolingana (muunganisho mkali na mbinu na vyombo vya nguzo ya K8s).

Jedwali la kulinganisha

Kwa hivyo, kilele cha kifungu ni meza hii kubwa:

Muhtasari na ulinganisho wa vidhibiti vya Ingress vya Kubernetes

Inaweza kubofya kwa mwonekano wa karibu zaidi, na inapatikana pia katika umbizo Majedwali ya Google.

Hebu tuangalie

Madhumuni ya kifungu hiki ni kutoa ufahamu kamili zaidi (hata hivyo, sio kamili!) ya chaguo gani cha kufanya katika kesi yako fulani. Kama kawaida, kila kidhibiti kina faida na hasara zake ...

Ingress ya asili kutoka Kubernetes ni nzuri kwa upatikanaji wake na uthibitisho, sifa nyingi za kutosha - kwa ujumla, inapaswa kuwa "ya kutosha kwa macho". Hata hivyo, ikiwa kuna mahitaji ya kuongezeka kwa utulivu, kiwango cha vipengele na maendeleo, unapaswa kuzingatia Ingress na NGINX Plus na usajili unaolipwa. Kong ina seti tajiri zaidi ya programu-jalizi (na, ipasavyo, fursa wanazotoa), na katika toleo la kulipwa kuna zaidi yao. Ina fursa nyingi za kufanya kazi kama Lango la API, usanidi unaobadilika kulingana na rasilimali za CRD, pamoja na huduma za msingi za Kubernetes.

Kwa kuongezeka kwa mahitaji ya mbinu za kusawazisha na kuidhinisha, angalia Traefik na HAProxy. Hii ni miradi ya Open Source, iliyothibitishwa kwa miaka mingi, imara sana na inayoendelea kikamilifu. Contour imekuwa nje kwa miaka kadhaa sasa, lakini bado inaonekana mchanga sana na ina vipengele vya kimsingi vilivyoongezwa juu ya Mjumbe. Ikiwa kuna mahitaji ya uwepo / upachikaji wa WAF mbele ya programu, unapaswa kuzingatia Ingress sawa kutoka Kubernetes au HAProxy.

Na tajiri zaidi kwa suala la huduma ni bidhaa zilizojengwa juu ya Mjumbe, haswa Istio. Inaonekana kuwa suluhisho la kina ambalo "linaweza kufanya chochote", ambalo, hata hivyo, pia linamaanisha kizingiti cha juu zaidi cha usanidi / uzinduzi / usimamizi kuliko suluhisho zingine.

Tumechagua na bado tunatumia Ingress kutoka Kubernetes kama kidhibiti cha kawaida, ambacho kinashughulikia 80-90% ya mahitaji. Ni ya kuaminika kabisa, rahisi kusanidi na kupanua. Kwa ujumla, kwa kukosekana kwa mahitaji maalum, inapaswa kuendana na nguzo / programu nyingi. Kati ya bidhaa sawa za ulimwengu wote na rahisi, Traefik na HAProxy zinaweza kupendekezwa.

PS

Soma pia kwenye blogi yetu:

Chanzo: mapenzi.com

Kuongeza maoni