
Kur konfigurohet një klaster Kubernetes për një aplikacion të caktuar, është e rëndësishme të kuptohet se cilat kërkesa ka ky burim nga aplikacioni vetë, biznesi dhe zhvilluesit. Me këtë informacion, mund të filloni të merrni vendime për arkitekturën dhe, në veçanti, të zgjidhni një kontroler të veçantë Ingress, të cilët aktualisht janë shumë në dispozicion. Për të krijuar një përmbledhje themelore të opsioneve të disponueshme pa pasur nevojë të studioni shumë artikuj/dokumentacion e kështu me radhë, ne përgatitëm këtë përmbledhje, duke përfshirë kontrolerët Ingress kryesorë (ready for production).
Shpresojmë se kjo do t'i ndihmojë kolegët në zgjedhjen e zgjidhjes arkitekturore - të paktën do të shërbejë si një pikë e fillimit për të marrë më shumë informacion dhe eksperimente praktike. Para kësaj, kemi shqyrtuar materiale të ngjashme në internet dhe, para së gjithash, nuk gjetëm asnjë përmbledhje më të plotë, duke qenë e strukturuar. Le të plotësojmë këtë boshllëk!
Kriteret
PĂ«r tĂ« bĂ«rĂ« njĂ« krahasim dhe pĂ«r tĂ« marrĂ« ndonjĂ« rezultat tĂ« dobishĂ«m, Ă«shtĂ« e domosdoshme tĂ« kuptohet jo vetĂ«m fusha e temĂ«s, por gjithashtu tĂ« kishim njĂ« listĂ« konkrete kriteresh, tĂ« cilat do tĂ« pĂ«rcaktojnĂ« drejtimin e hulumtimit. Pa pretenduar tĂ« analizojmĂ« tĂ« gjitha rastet e mundshme tĂ« pĂ«rdorimit tĂ« Ingress/Kubernetes, kemi tentuar tĂ« nxjerrim nĂ« pah kĂ«rkesat mĂ« tĂ« zakonshme pĂ«r kontrolluesit â jini tĂ« gatshĂ«m qĂ« gjithĂ« specifikat dhe hollĂ«sitĂ« do tĂ« duhet tĂ« studiohen veçmas.
Por do të filloj me karakteristikat që janë bërë kaq të zakonshme, sa që janë realizuar në të gjitha zgjidhjet dhe nuk shqyrtohen:
- zbulimi dinamik i shërbimeve (service discovery);
- terminimi SSL;
- puna me websocket-et.
Tani â pĂ«r pikat e krahasimit:
Protokollet e mbështetura
Një nga kriteret themelore për zgjedhjen. Softueri juaj mund të funksionojë jo sipas HTTP standard dhe mund të kërkojë punë me disa protokolle njëherësh. Nëse rasti juaj është jostandarde, sigurohuni që të merrni parasysh këtë faktor, në mënyrë që të mos keni nevojë ta rivendosni më vonë klasterin. Lista e protokolleve të mbështetur variaton për të gjithë kontrolluesit.
Softueri në thelb
Ka disa variante aplikacionesh mbi të cilat bazohet kontrolluesi. Popullorët janë nginx, traefik, haproxy, envoy. Në përgjithësi, mund të mos ketë efekt të madh në mënyrën si pranohet dhe transmetohet trafik, megjithatë gjithmonë është e dobishme të dihet për potencialet dhe veçoritë e asaj që është "në brendësi".
Routimi i trafikut
Në bazë të çfarë mund të merret vendimi për drejtimin e trafikut në një shërbim të caktuar? Zakonisht është host dhe path, por ndodhin mundësi shtesë.
Hapsira e emrave brenda klasterit
Hapsira e emrave (namespace) â mundĂ«sia pĂ«r tĂ« ndarĂ« nĂ« mĂ«nyrĂ« logjike burimet nĂ« Kubernetes (pĂ«r shembull, nĂ« stage, production etj.). Ka Ingress-kontrollues qĂ« duhet tĂ« instalohet veçmas nĂ« çdo namespace (dhe atĂ«herĂ« ai mund tĂ« drejtojĂ« trafik vetĂ«m nĂ« pod-at e kĂ«saj hapsire). Por ka edhe tĂ« tillĂ« (dhe numri i tyre Ă«shtĂ« i konsiderueshĂ«m) qĂ« punojnĂ« globalisht pĂ«r tĂ« gjithĂ« klasterin â nĂ« to, trafiku drejtohet nĂ« çdo pod tĂ« klasterit, pa marrĂ« parasysh hapsirĂ«n e emrave.
Kontrolli për upstream-at
Si sigurohet drejtimi i trafikut në instancat e shëndetshme të aplikacionit, shërbimeve? Ka mundësi me kontrollime aktive dhe pasive, përpjekje të përsëritura (retries), dhe circuit breakers. (për më shumë rreth tyre, shihni, për shembull, në ), implementimet e veta të kontrollimeve të gjendjes (kontrolle të personalizuara) etj. Një parametër mjaft i rëndësishëm nëse keni kërkesa të larta për disponueshmëri dhe dalje të menjëhershme nga balancimi të shërbimeve që kanë dështuar.
Algoritmet e balancimit
Këtu ka shumë mundësi: nga tradicionet deri te eksotiket si , si dhe mundësi të veçanta si .
Autentifikimi
Cilat mĂ«nyra autentikimi mbĂ«shtet kontrolluesi? Basic, digest, oauth, external-auth â mendoj se kĂ«to opsione duhet tĂ« jenĂ« tĂ« njohura. Ky Ă«shtĂ« njĂ« kriter i rĂ«ndĂ«sishĂ«m nĂ«se pĂ«rdoren shumĂ« konture pĂ«r zhvilluesit (dhe/ose thjesht tĂ« mbyllura), tĂ« cilat aksesohen pĂ«rmes Ingress.
Shpërndarja e trafikut
A mbështet kontrolluesi mekanizmat e përdorur shpesh për shpërndarjen e trafikut si roll-out të kanarive (canary), testim A/B, dhe pasqyrimin e trafikut (mirroring/shadowing)? Kjo është një temë vërtet e ndjeshme për aplikacionet që kërkojnë menaxhim delikat dhe të saktë të trafikut për testime produktive, rregullimin e gabimeve të produkteve jashtë prodhimit (ose me humbje minimale), analizën e trafikut etj.
Abonimi me pagesë
A ka ndonjë variant të paguar të kontrolluesit me funksionalitete të zgjeruara dhe/ose mbështetje teknike?
Ndërfaqja grafike (Web UI)
A ekziston ndonjĂ« ndĂ«rfaqe grafike pĂ«r menaxhimin e konfigurimit tĂ« kontrolluesit? Kryesisht pĂ«r "lehtĂ«sinĂ«" dhe/ose pĂ«r ata qĂ« duhet tĂ« bĂ«jnĂ« disa ndryshime nĂ« konfigurimin e Ingressâit, por punimi me "forma tĂ« papĂ«rpunuara" Ă«shtĂ« i pakĂ«ndshĂ«m. Mund tĂ« jetĂ« e dobishme nĂ« rast se zhvilluesit duan tĂ« realizojnĂ« eksperimente me trafikun nĂ« flakĂ«.
Validimi JWT
Prania e verifikimit të integruar të JSON web-tokeneve për autorizimin dhe validimin e përdoruesit në aplikacionin përfundimtar.
Mundësitë për personalizimin e konfigurimit
Zgjerueshmëria e formave në kuptimin e pranishëm të mekanizmave që lejojnë shtimin e direktivave, flamujve etj. të vetat në format standard të konfigurimit.
Mekanizmat bazë të mbrojtjes nga DDOS
Algoritme të thjeshta të kufizimit të normës ose variante më të komplikuara për filtrimin e trafikut në bazë të adresave, listave të bardha, vendeve etj.
Gjetja e kërkesave
MundĂ«sitĂ« pĂ«r monitorimin, ndjekjen dhe depurimin e kĂ«rkesave nga Ingress nĂ« shĂ«rbime/pod specifike, dhe idealisht â edhe mes shĂ«rbimeve/podâave.
WAF
Mbështetje .
Kontrollorët Ingress
Lista e kontrollorëve është krijuar në bazë të dhe . Disa prej tyre i kemi përjashtuar nga shqyrtimi për shkak të specifikës ose përhapjes së ulët (në fazë të hershme zhvillimi). Ato të mbetura janë shqyrtuar më poshtë. Le të fillojmë me një përshkrim të përgjithshëm të zgjidhjeve dhe të vazhdojmë me një tabelë përmbledhëse.
Ingress nga Kubernetes
Faqja e internetit:
Licenca: Apache 2.0
Ky është kontrollori zyrtar për Kubernetes, i cili zhvillohet nga komuniteti. Siç tregohet nga emri, bazuar në nginx dhe i përcjellë me një grup të ndryshëm të plug-in-eve Lua, të aplikuara për të realizuar mundësi shtesë. Falë popullaritetit të nginx dhe modifikimeve minimale mbi të kur përdoret si kontrollor, kjo mund të jetë opsioni më i thjeshtë dhe më i kuptueshëm për konfigurimin nga një inxhinier mesatar (me përvojë në web).
Ingress nga NGINX Inc
Faqja e internetit:
Licenca: Apache 2.0
Produkti zyrtar i zhvilluesve të nginx. Ka një version me pagesë, bazuar në . Ideja kryesore është një nivel i lartë stabiliteti, përputhshmëri e vazhdueshme, mungesë moduli të huaj dhe shpejtësi e deklaruar e rritur (krahasuar me kontrolluesin zyrtar), e arritur duke hequr dorë nga Lua.
Versioni falas Ă«shtĂ« dukshĂ«m i kufizuar, pĂ«rfshirĂ« dyshime madje nĂ« krahasim me kontrolluesin zyrtar (pĂ«r shkak tĂ« mungesĂ«s sĂ« atyre moduli Lua). Versioni i paguar ka funksionalitet tĂ« gjerĂ« shtesĂ«: metrika nĂ« kohĂ« reale, validimi JWT, kontroll aktiv i shĂ«ndetit dhe mĂ« shumĂ«. Avantazhi i rĂ«ndĂ«sishĂ«m ndaj NGINX Ingress Ă«shtĂ« mbĂ«shtetje e plotĂ« pĂ«r trafikun TCP/UDP (edhe nĂ« versionin e komunitetit!). Mungesa â funksionesh pĂ«r shpĂ«rndarjen e trafik, qĂ«, megjithatĂ«, "ka prioritet maksimal pĂ«r zhvilluesit", por kĂ«rkon kohĂ« pĂ«r zbatim.
Kong Ingress
Faqja e internetit:
Licenca: Apache 2.0
Produkti i zhvilluar nga Kong Inc. në dy variante: tregtare dhe falas. Bazohet në nginx, mundësitë e të cilit janë zgjeruar me shumë module në Lua.
Fillimisht ishte orientuar drejt përpunimit dhe drejtimit të kërkesave API, dmth si API Gateway, megjithatë tani është bërë një kontrollues i plotë Ingress. Avantazhet kryesore: një numër i madh modulash shtesë (përfshirë ato të zhvilluesve të tretë) që mund të instalohen dhe konfigurohen lehtësisht dhe me të cilat realizohet një gammë e gjerë mundësish shtesë. Megjithatë, funksionet e ndërtuara tashmë ofrojnë shumë mundësi. Konfigurimi i punës bëhet përmes burimeve CRD.
NjĂ« karakteristikĂ« e rĂ«ndĂ«sishme e produktit â funksionimi brenda njĂ« konturi (nĂ« vend tĂ« cross-namespaced) Ă«shtĂ« njĂ« temĂ« e diskutueshme: disa do ta konsideronin si njĂ« disavantazh (duke detyruar krijimin e entiteteve pĂ«r çdo kontur), ndĂ«rsa pĂ«r disa Ă«shtĂ« njĂ« veçori (nĂ« nivelin e lartĂ« tĂ« izolimit, pasi nĂ«se njĂ« kontrollues dĂ«shtoi, problemi Ă«shtĂ« i kufizuar vetĂ«m nĂ« atĂ« kontur).oTraefik
github.com/containous/traefik
Faqja e internetit:
Licenca: MIT
Proxyt qĂ« u krijua fillimisht pĂ«r tĂ« punuar me ruterimin e kĂ«rkesave pĂ«r mikroshĂ«rbimet dhe mjedisin e tyre dinamik. Kjo sjell shumĂ« mundĂ«si tĂ« dobishme: pĂ«rditĂ«simi i konfigurimit pa nevojĂ«n pĂ«r rinisje, mbĂ«shtetje pĂ«r shumĂ« metoda balancimi, ndĂ«rfaqe web, kalimi i metrikave, mbĂ«shtetje pĂ«r protokolle tĂ« ndryshme, REST API, lansime kanarin dhe shumĂ« mĂ« tepĂ«r. NjĂ« veçori tĂ«rheqĂ«se Ă«shtĂ« gjithashtu mbĂ«shtetje pĂ«r certifikatat Letâs Encrypt nga kuti. Disavantazhi Ă«shtĂ« se pĂ«r tĂ« organizuar disponueshmĂ«rinĂ« e lartĂ« (HA), kontrollori kĂ«rkon instalimin dhe lidhjen e njĂ« depo tĂ« vetĂ«n KV.
HAProxy
Faqja e internetit:
Licenca: Apache 2.0
HAProxy është njohur prej kohësh si një proxy dhe balancues trafiku. Në kuadër të një klasteri Kubernetes, ofron "përditësim" të butë të konfiguracionit (pa humbje trafiku), zbulim shërbimi në bazë të DNS, dhe konfigurim dinamik përmes API. Personalizimi i plotë i modelit të konfigurimeve përmes zëvendësimit të CM-së, si dhe mundësitë për të përdorur funksionet e bibliotekës Sprig, mund të jetë tërheqës. Shqyrtim kryesor i zgjidhjes është fokusimi në shpejtësinë e lartë të punës, optimizimin dhe efektivitetin në konsumimin e burimeve. Avantazhi i kontrolluesit është që mbështet numrin rekord të mënyrave të ndryshme të balancimit.
Voyager
Faqja e internetit:
Licenca: Apache 2.0
Një kontrolle i ndërtuar mbi HAproxy, i cili pozicionohet si një zgjidhje universale, duke mbështetur mundësi të gjera në shumë ofrues. Ofron mundësinë për balancim trafiku në L7 dhe L4, dhe balancimi i trafikut TCP L4 mund të quhet si një nga veçoritë kryesore të zgjidhjes.
Contour
Faqja e internetit:
Licenca: Apache 2.0
Ky zgjidhje nuk është ndërtuar vetëm mbi Envoy: ajo është zhvilluar në bashkëpunim me autorët e këtij proxy të njohur. Një karakteristikë e rëndësishme është mundësia e ndarjes së menaxhimit të burimeve Ingress përmes burimeve CRD IngressRoute. Për organizatat me shumë ekipe zhvillimi që përdorin një grup, kjo ndihmon për të siguruar maksimalisht punën me trafikun në kalimet ngjitur dhe për t'i mbrojtur ato nga gabimet gjatë ndryshimit të burimeve Ingress.
Gjithashtu ofrohet një gamë e zgjeruar metodash balancimi (përfshiheti edhe pasqyrimin e kërkesave, ripërsëritjet automatike, kufizimi i rate-it të kërkesave dhe shumë e tjera), monitorimi i detajuar i fluksit të trafikut dhe dështimeve. Mund të jetë një mangësi e rëndësishme për disa mospranimi i sesioneve ngjitëse (megjithatë puna ).
Istio Ingress
Faqja e internetit:
Licenca: Apache 2.0
Një zgjidhje e plotë për rrjetin e shërbimeve, e cila është jo vetëm një kontrollues i hyrjes që menaxhon trafikun e ardhshëm nga jashtë, por gjithashtu kontrollon të gjithë trafikun brenda klasterit. "Nën kapak", si një proxy sidecar për çdo shërbim, përdoret Envoy. Në thelb, kjo është një makinë e madhe që "mund të bëjë gjithçka", dhe ideja e saj kryesore është maksimizimi i menaxhueshmërisë, shkallëzueshmërisë, sigurisë dhe transparencës. Me ndihmën e saj, ju mund të konfiguroni me hollësi rrugëtimin e trafikut, autorizimin e aksesit midis shërbimeve, balancimin, monitorimin, lëshimet kanarinë dhe shumë më tepër. Më shumë për Istio lexoni në serinë e artikujve "».
Ambassador
Faqja e internetit:
Licenca: Apache 2.0
Një tjetër zgjidhje e bazuar në Envoy. Ka versione falas dhe tregtare. Pozicionohet si "plotësisht natyrale për Kubernetes", që sjell përfitime përkatëse (integim të ngushtë me metodologjitë dhe entitetet e klasterit K8s).
Tabela krahasuese
Pra, kulmin e artikullit e kemi këtë tabelë të madhe:
Ajo është klikueshme për mundësinë e parë të shikimit më të detajuar, dhe gjithashtu e disponueshme në formatin .
Le të përmbledhim
Qëllimi i artikullit është të ofrojë një kuptim më të plotë (nuk është plotësisht shterues!) të asaj se çfarë zgjedhjeje duhet të bëni në rastin tuaj të veçantë. Si zakonisht, çdo kontrollues ka avantazhe dhe disavantazhe të tij...
Ingress klasik nga Kubernetes është i njohur për disponueshmërinë e tij dhe për besueshmërinë, duke ofruar mundësi mjaft të pasura - në përgjithësi, ai duhet të jetë "i mjaftueshëm". Megjithatë, nëse ka kërkesa të larta për qëndrushmëri, nivelin e funksionaliteteve dhe zhvillimit, është e rëndësishme të shqyrtohet Ingress me NGINX Plus dhe abonimin e paguar. Kong ka një set shumë të pasur plugin-esh (dhe, për pasojë, mundësish të ofruara prej tyre), ndërsa në versionin e paguar ka edhe më shumë. Ai ofron mundësi të gjera për të operuar si API Gateway, konfigurim dinamik mbi bazën e burimeve CRD, si dhe shërbime bazë Kubernetes.
Nëse keni kërkesa të larta për balancimin e ngarkesës dhe metodat e autorizimit, shqyrtoni Traefik dhe HAProxy. Këto janë projekte Open Source, të provuara me kalimin e viteve, shumë të qëndrueshme dhe në zhvillim aktiv. Contour ka dalë në dritë vetëm para disa vitesh, por ende duket shumë e re dhe ka vetëm mundësi bazike të shtuara mbi Envoy. Nëse ka kërkesa për praninë/e integrimin e WAF para aplikacionit, duhet të shqyrtoni Ingress nga Kubernetes ose HAProxy.
Produktet më të pasura në funksionalitete janë ato të ndërtuara mbi bazën e Envoy, veçanërisht Istio. Ai paraqitet si një zgjidhje gjithëpërfshirëse, e cila "mund gjithçka", që, megjithatë, do të thotë gjithashtu një prag të lartë hyrjeje për konfigurimin/filtrimin/adminstrimin në krahasim me zgjidhje të tjera.
Si standardi, ne u zgjodh e pĂ«rdorur ende Ingress nga Kubernetes, i cili mbulon 80â90% tĂ« nevojave. Ai Ă«shtĂ« plotĂ«sisht i besueshĂ«m, lehtĂ« i konfigurueshĂ«m dhe i zgjerueshĂ«m. NĂ« pĂ«rgjithĂ«si, nĂ« mungesĂ« tĂ« kĂ«rkesave specifike, duhet tĂ« pĂ«rshtatet me shumicĂ«n e grupeve/aplikacioneve. Nga produktet gjithashtu universale dhe relativisht tĂ« thjeshta, mund tĂ« rekomandohen Traefik dhe HAProxy.
P.S.
Lexoni gjithashtu në blogun tonë:
- «Kthehu te mikroshërbimet me Istio»: , , ;
- «»;
- «».
Burimi: habr.com
