Kubernetes-erako Ingress kontrolagailuen ikuspegi orokorra eta alderaketa

Kubernetes-erako Ingress kontrolagailuen ikuspegi orokorra eta alderaketa

Kubernetes kluster bat aplikazio zehatz baterako abiarazten duzunean, aplikazioak berak, negozioak eta garatzaileek baliabide honi zer planteatzen dioten ulertu behar duzu. Informazio horrekin, erabaki arkitektoniko bat hartzen has zaitezke eta, bereziki, Ingress kontroladore zehatz bat aukeratzen has zaitezke, gaur egun dagoeneko kopuru handia baitago. Eskuragarri dauden aukeren oinarrizko ideia bat izateko, artikulu / dokumentazio eta abar asko pasatu beharrik gabe, ikuspegi orokor hau prestatu dugu, sarrerako kontrolagailu nagusiak (ekoizpen prest) barne.

Lankideei irtenbide arkitektoniko bat aukeratzen lagunduko diela espero dugu; informazio zehatzagoa eta esperimentu praktikoak lortzeko abiapuntu bihurtuko da behintzat. Aurretik, sarean antzeko beste material batzuk aztertu genituen eta, bitxia bada ere, ez genuen berrikuspen osoa edo gutxiago aurkitu, eta, batez ere, egituratua. Beraz, bete dezagun hutsune hori!

irizpideak

Printzipioz, konparaketa bat egiteko eta emaitza erabilgarria lortzeko, gai-arloa ez ezik, ikerketa-bektorea ezarriko duen irizpide-zerrenda zehatz bat ere izan behar duzu. Ingress / Kubernetes erabiltzeko kasu posible guztiak aztertzeko asmorik gabe, kontrolagailuen eskakizun orokorrenak nabarmentzen saiatu gara - prest egon, edozein kasutan, zure zehaztasun eta xehetasun guztiak bereizita aztertu beharko dituzula.

Baina hain ezagunak diren ezaugarriekin hasiko naiz, non irtenbide guztietan inplementatzen diren eta kontuan hartzen ez diren:

  • zerbitzuen aurkikuntza dinamikoa (zerbitzuen aurkikuntza);
  • SSL amaiera;
  • websocketekin lan egitea.

Orain alderaketa puntuak:

Onartutako protokoloak

Oinarrizko hautaketa-irizpideetako bat. Baliteke zure softwareak HTTP estandarrean ez funtzionatzea edo aldi berean hainbat protokolotan lan egin behar izatea. Zure kasua estandarra ez bada, ziurtatu faktore hau kontuan hartzen duzula gero kluster berriro konfiguratu beharrik ez izateko. Kontrolagailu guztientzat, onartzen diren protokoloen zerrenda aldatu egiten da.

softwarea oinarrian

Kontroladorea oinarritzen diren hainbat aplikazio aldaera daude. Ezagunak nginx, traefik, haproxy, envoy dira. Kasu orokorrean, agian ez du eragin handirik izango trafikoa nola jaso eta transmititzen den, baina beti da baliagarria "kapapean" dagoenaren balizko ñabardurak eta ezaugarriak ezagutzea.

Trafikoaren bideratzea

Zerren arabera posible da zerbitzu jakin baterako trafikoaren noranzkoari buruzko erabakia hartzea? Normalean hauek ostalari eta bidea dira, baina aukera gehigarriak daude.

Izen-espazioa kluster baten barruan

Namespace (namespace) - Kubernetes-en baliabideak logikoki banatzeko gaitasuna (adibidez, eszenatokian, ekoizpenean, etab.). Izen-espazio bakoitzean bereizita instalatu behar diren Ingress kontrolagailuak daude (eta gero trafikoa bideratu dezake bakarrik espazio honetako leketara). Eta badaude (eta haien gehiengo argia) kluster osorako globalki lan egiten dutenak; horietan trafikoa klusterreko edozein podetara zuzentzen da, izen-espazioa edozein dela ere.

Gorantzako laginak

Nola bideratzen da trafikoa aplikazioaren instantzia osasuntsuetara, zerbitzuetara? Egiaztapen aktibo eta pasiboekin, berriro saiakerak, etengailuekin aukerak daude (Xehetasun gehiagorako, ikus, adibidez, Istiori buruzko artikulua), osasun-kontrolen ezarpen propioak (osasun-kontrol pertsonalizatuak), etab. Oso parametro garrantzitsua da erabilgarritasun-eskakizun handiak badituzu eta huts egin duten zerbitzuak orekatzetik denboraz kentzeko.

Orekatze algoritmoak

Aukera asko daude: tradizionala joan-robin exotikora rdp-cookie, baita banakako ezaugarriak bezalakoak ere saio itsaskorrak.

autentifikazio

Zein baimen-eskema onartzen ditu kontrolatzaileak? Basic, digest, oauth, external-auth - Aukera hauek ezagunak izan beharko liratekeela uste dut. Irizpide garrantzitsua da Ingress bidez sartzen diren garatzaileen (eta/edo pribatuak) begizta asko badaude.

Trafiko banaketa

Kontroladoreak onartzen al ditu normalean erabiltzen diren trafikoa banatzeko mekanismoak, hala nola, kanariar inplementazioak (kanariar), A / B probak, trafikoaren ispilua (ispilatzea / itzaltzea)? Proba produktiboetarako trafiko-kudeaketa zehatza eta zehatza behar duten aplikazioetarako gaia benetan mingarria da, produktuen akatsak lineaz kanpo araztea (edo galera minimoarekin), trafikoaren azterketa eta abar.

Ordainpeko harpidetza

Ba al dago kontrolagailurako ordainpeko aukerarik, funtzionalitate aurreratuarekin eta/edo laguntza teknikoarekin?

Erabiltzaile-interfaze grafikoa (Web UI)

Ba al dago kontroladorearen konfigurazioa kudeatzeko GUIrik? Batez ere "erabilgarritasuna"gatik eta/edo Ingress'a konfigurazioan aldaketa batzuk egin behar dituztenentzat, baina txantiloi "gordinak" lantzea deserosoa da. Baliagarria izan daiteke garatzaileek trafikoarekin esperimentu batzuk hegan egin nahi badituzte.

JWT baliozkotzea

JSON web tokenen baliozkotze integratuaren presentzia, erabiltzaileak amaierako aplikaziora baimentzeko eta baliozkotzeko.

Konfigurazioa pertsonalizatzeko aukerak

Txantiloien hedagarritasuna konfigurazio-txantiloi estandarretan zure zuzentarauak, banderak eta abar gehitzeko aukera ematen duten mekanismoak izatearen zentzuan.

DDOS babesteko oinarrizko mekanismoak

Tarifa mugatzeko algoritmo sinpleak edo trafikoa iragazteko aukera konplexuagoak helbideetan, zerrenda zurietan, herrialdeetan eta abarretan oinarrituta.

Eskatu arrastoa

Sarrerak zerbitzu/pod zehatz batzuetara egindako eskaerak monitorizatzeko, jarraipena egiteko eta arazketa egiteko gaitasuna, eta, hobekien, zerbitzu/poden artean ere.

WAF

Lagundu aplikazioen suebakia.

Kontrolatzaileak

Kontrolatzaileen zerrenda oinarri hartuta eratu zen Kubernetesen dokumentazio ofiziala и mahai hau. Horietako batzuk berrikuspenetik kanpo utzi genituen espezifikotasunagatik edo prebalentzia txikiagatik (garapenaren hasierako fasea). Gainontzekoak behean eztabaidatzen dira. Has gaitezen irtenbideen deskribapen orokor batekin eta jarrai gaitezen laburpen-taula batekin.

Kubernetes-en sarrera

Web: github.com/kubernetes/ingress-nginx
Lizentzia: Apache 2.0

Hau Kubernetesen kontroladore ofiziala da eta komunitateak garatzen ari da. Jakina denez, izenaren arabera, nginx-en oinarritzen da eta funtzio osagarriak ezartzeko erabiltzen diren Lua plugin-multzo ezberdinekin osatzen da. Nginx-en ospea dela eta kontrolagailu gisa erabiltzen denean hari egindako aldaketa minimoak direla eta, aukera hau batez besteko ingeniariarentzat (web-esperientziarekin) konfiguratzeko errazena eta errazena izan daiteke.

NGINX Inc.-ren sarrera

Web: github.com/nginxinc/kubernetes-ingress
Lizentzia: Apache 2.0

Nginx garatzaileen produktu ofiziala. Oinarritutako ordainpeko bertsioa du NGINX Plus. Ideia nagusia egonkortasun maila altua, etengabeko atzerako bateragarritasuna, kanpoko modulurik eza eta deklaratutako abiadura handitzea (kontrolagailu ofizialarekin alderatuta), Lua baztertzearen ondorioz lortutakoa da.

Doako bertsioa nabarmen murrizten da, kontrolagailu ofizialarekin alderatuta ere (Lua modulu berdinen faltagatik). Aldi berean, ordaindutakoak funtzionalitate gehigarri nahiko zabala du: denbora errealeko neurketak, JWT baliozkotzea, osasun-kontrol aktiboak eta abar. NGINX Ingress-en abantaila garrantzitsu bat TCP / UDP trafikorako laguntza osoa da (eta komunitatearen bertsioan ere!). Minus - eza trafikoa banatzeko eginbidea, ordea, "garatzaileentzat lehentasun handiena duena", baina ezartzeko denbora behar du.

Kong Ingress

Web: github.com/Kong/kubernetes-ingress-controller
Lizentzia: Apache 2.0

Kong Inc.-ek garatutako produktua bi bertsiotan: komertziala eta doakoa. Lua modulu ugarirekin zabaldu den nginx-en oinarrituta.

Hasieran, API eskaerak prozesatu eta bideratzera bideratu zen, hau da. API Gateway gisa, baina momentuz Ingress kontrolatzaile osoa bihurtu da. Abantaila nagusiak: modulu gehigarri asko (hirugarrenen garatzaileenak barne), erraz instalatzen eta konfiguratzen direnak eta horien laguntzaz funtzio osagarri ugari ezartzen dira. Hala ere, integratutako funtzioek aukera asko eskaintzen dituzte dagoeneko. Lanaren konfigurazioa CRD baliabideak erabiliz egiten da.

Produktuaren ezaugarri garrantzitsu bat - sestra berdinaren barruan lan egitea (izen gurutzatuaren ordez) gai polemikoa da: batzuentzat desabantaila bat irudituko zaio (ingerada bakoitzerako entitateak sortu behar dituzu), eta norbaitentzat ezaugarri bat da ( bоIsolamendu maila handiagoa, esaterako kontrolagailu bat apurtzen bada, orduan arazoa zirkuitura bakarrik mugatuko da).

Traefik

Web: github.com/containous/traefik
Lizentzia: MIT

Hasiera batean mikrozerbitzuetarako eskaera bideratzearekin eta haien ingurune dinamikoarekin lan egiteko sortu zen proxy bat. Horregatik, ezaugarri erabilgarriak asko: konfigurazioa eguneratzea batere berrabiarazi gabe, orekatzeko metodo ugariren laguntza, web interfazea, neurketen birbidaltzea, hainbat protokoloren euskarria, REST APIa, kanariar bertsioak eta askoz gehiago. Beste ezaugarri polita Let's Encrypt ziurtagirien laguntza da. Desabantaila da erabilgarritasun handia (HA) antolatzeko, kontrolagailuak bere KV biltegiratze propioa instalatu eta konektatu beharko duela.

HAProxy

Web: github.com/jcmoraisjr/haproxy-ingress
Lizentzia: Apache 2.0

HAProxy aspalditik ezagutzen da proxy eta trafiko-orekatzaile gisa. Kubernetes kluster baten barruan, konfigurazio-eguneratze "bigun" bat eskaintzen du (trafikorik galdu gabe), DNSn oinarritutako zerbitzuen aurkikuntza, APIa erabiliz konfigurazio dinamikoa. Erakargarria izan daiteke konfigurazio txantiloia guztiz pertsonalizatzea CM ordezkatuz, baita Sprig liburutegiko funtzioak bertan erabiltzeko aukera ere. Oro har, irtenbidearen enfasi nagusia abiadura handian, bere optimizazioan eta kontsumitutako baliabideetan eraginkortasuna da. Kontrolagailuaren abantaila oreka-metodo ezberdinen kopuru errekor baten laguntza da.

Voyager

Web: github.com/appscode/voyager
Lizentzia: Apache 2.0

HAproxy kontrolagailuan oinarrituta, hornitzaile ugaritan funtzio ugari onartzen dituen irtenbide unibertsal gisa kokatuta dagoena. L7 eta L4ko trafikoa orekatzeko aukera eskaintzen da, eta TCP L4 trafikoa oro har orekatzea irtenbidearen funtsezko ezaugarrietako bat dei daiteke.

ingerada

Web: github.com/heptio/contour
Lizentzia: Apache 2.0

Irtenbide hau ez da soilik Envoy-en oinarritzen: berak garatu zuen elkarrekin proxy ezagun honen egileekin. Ezaugarri garrantzitsu bat IngressRoute CRD baliabideak erabiliz Ingress baliabideen kontrola bereizteko gaitasuna da. Kluster bera erabiltzen duten garapen-talde asko dituzten erakundeentzat, honek inguruko begiztetan trafikoarekin lan egiteko segurtasuna maximizatzen laguntzen du eta Ingress baliabideak aldatzean akatsetatik babesten laguntzen du.

Orekatze-metodoen multzo zabala ere eskaintzen du (eskaeren ispilua, errepikapen automatikoa, eskaeren tasa mugatzea eta askoz gehiago), trafiko-fluxuaren eta hutsegiteen jarraipen zehatza. Beharbada norbaitentzat eragozpen nabarmena izango da saio itsaskorretarako laguntza eza (nahiz eta lana dagoeneko martxan).

Istio Ingress

Web: istio.io/docs/tasks/traffic-management/ingress
Lizentzia: Apache 2.0

Zerbitzu-sare-soluzio integrala, kanpotik sarrerako trafikoa kudeatzen duen Ingress kontrolatzailea ez ezik, kluster barruko trafiko guztia ere kontrolatzen duena. Kanpaiaren azpian, Envoy zerbitzu bakoitzeko sidecar proxy gisa erabiltzen da. Funtsean, "edozer egin dezakeen" konbinazio handi bat da, eta bere ideia nagusia kudeagarritasun handiena, hedagarritasuna, segurtasuna eta gardentasuna da. Harekin, trafikoaren bideratzea, zerbitzuen arteko atzitzeko baimena, orekatzea, monitorizazioa, kanariar kaleratzeak eta askoz gehiago doi ditzakezu. Irakurri gehiago Istio-ri buruz artikulu sortan "Itzuli mikrozerbitzuetara Istio-rekin'.

Enbaxadorea

Web: github.com/datawire/ambassador
Lizentzia: Apache 2.0

Envoy-en oinarritutako beste irtenbide bat. Doako eta merkataritzako bertsioak ditu. "Kubernetes-en guztiz berezkoa" bezala kokatzen da, eta horrek dagozkion abantailak ekartzen ditu (integrazio estua K8s klusterreko metodo eta entitateekin).

konparazio taula

Beraz, artikuluaren gailurra mahai handi hau da:

Kubernetes-erako Ingress kontrolagailuen ikuspegi orokorra eta alderaketa

Hurbilago ikusteko klikagarria da, eta formatuan ere eskuragarri dago Google Kalkulu orriak.

Laburbilduz

Artikulu honen helburua zure kasu zehatzean zer aukera egin behar den ulertzea da (hala ere, inola ere ez!) Ohi bezala, kontrolagailu bakoitzak bere abantailak eta desabantailak ditu...

Kubernetes-en Ingress klasikoa ona da bere erabilgarritasunagatik eta frogagatik, nahikoa ezaugarri aberatsagatik; kasu orokorrean, "nahikoa begietarako" izan beharko luke. Hala ere, egonkortasunerako, ezaugarrien eta garapen mailarako eskakizunak handitzen badira, arreta jarri beharko zenuke Ingress-i NGINX Plus-ekin eta ordainpeko harpidetza batekin. Kong-ek plug-in multzorik aberatsena du (eta, horren arabera, eskaintzen dituzten aukerak), eta ordainpeko bertsioan are gehiago daude. Aukera ugari ditu API Gateway gisa lan egiteko, CRD baliabideetan oinarritutako konfigurazio dinamikoa, baita oinarrizko Kubernetes zerbitzuak ere.

Balantze- eta baimen-metodoen eskakizunak handitu direnez, begiratu Traefik eta HAProxy-i. Kode Irekiko proiektuak dira, urteetan frogatuak, oso egonkorrak eta aktiboki garatzen direnak. Contour duela urte pare bat atera da, baina oraindik gazteegia dirudi eta oinarrizko ezaugarriak baino ez ditu gehitu Envoy-en gainean. Aplikazioaren aurrean WAF presentzia / txertatzeko baldintzak badaude, Kubernetes edo HAProxy-ren Sarrera berari erreparatu behar diozu.

Eta ezaugarrien aldetik aberatsenak Envoy-en gainean eraikitako produktuak dira, batez ere Istio. Badirudi "edozer egin dezakeen" irtenbide integrala dela, eta horrek, ordea, konfigurazio/abiarazte/administraziorako sarrera-atalase nabarmen handiagoa da beste soluzio batzuek baino.

Kuberneteseko Ingress aukeratu eta erabiltzen dugu kontroladore estandar gisa, beharren % 80-90 estaltzen duena. Nahiko fidagarria da, konfiguratzeko eta zabaltzeko erraza da. Oro har, baldintza zehatzik ezean, kluster / aplikazio gehienetara egokitu beharko litzateke. Produktu unibertsal eta nahiko sinple berdinetatik, Traefik eta HAProxy gomenda daitezke.

PS

Irakurri ere gure blogean:

Iturria: www.habr.com

Gehitu iruzkin berria