
Kubernetes'e klastri kĂ€ivitamisel konkreetse rakenduse jaoks tuleks mĂ”ista, millised nĂ”udmised see rakendus koos Ă€ri ja arendajatega sellele ressursile esitab. Kui see teave on olemas, saab alustada arhitektuurilise otsuse tegemist, sealhulgas valida konkreetse Ingress-kontrolleri, mida tĂ€naseks on juba palju. Selle ĂŒlevaate koostamiseks, et anda baasteave olemasolevate variantide kohta ilma paljude artiklite / dokumentatsiooni jms uurimiseta, oleme selle ĂŒlevaate ette valmistanud, kaasates peamised (tootmiskĂ”lbulikud) Ingress-kontrollerid.
Loodame, et see aitab kolleegidel arhitektuurilise lahenduse valimisel â vĂ€hemalt on see alguspunkt, et saada ĂŒksikasjalikumat teavet ja praktilisi katsetusi. Oleme eelnevalt uurinud teisi sarnaseid materjale veebis ning, imelik kĂŒll, ei leidnud ĂŒhtegi rohkem-vĂ”i-vĂ€hem tĂ€ielikku, ja mis kĂ”ige tĂ€htsam â struktureeritud â ĂŒlevaadet. Nii et lĂŒkakem see puudujÀÀk tĂ€ide!
Kriteeriumid
Kuna vĂ”rreldavate tulemuste saamiseks tuleb mĂ”ista mitte ainult teemat, vaid ka omada konkreetset kriteeriumide loetelu, mis suunavad uurimist. Ilma et pĂŒĂŒdleksime kĂ”igi vĂ”imalike Ingress / Kubernetes'e kasutusjuhtumite analĂŒĂŒsi poole, pĂŒĂŒdsime esile tuua kĂ”ige ĂŒldisemad nĂ”uded kontrolleritele â olge valmis, et kogu oma eripĂ€ra ja detailid tuleb siiski eraldi uurida.
Kuid alustame omadustest, mis on muutunud nii levinuks, et need on teostatud kÔigis lahendustes ja neid ei kÀsitleta:
- dĂŒnaamiline teenuste avastamine (service discovery);
- SSL-i terminatsioon;
- töötamine websocket'idega.
NĂŒĂŒd â vĂ”rreldavad punktid:
Toetatud protokollid
Ăks pĂ”hikriteeriumidest valiku jaoks. Teie tarkvara ei pruugi töötada standardse HTTP kaudu vĂ”i nĂ”uda koos töötamist mitmete protokollidega. Kui teie juhtum on ebatavaline, vĂ”tke kindlasti arvesse seda tegurit, et teil hiljem ei peaks kloorimise klastrit ĂŒle seadistama. KĂ”ikide kontrollerite toetatud protokollide nimekiri varieerub.
Tarkvara aluseks
On erinevaid rakendusi, millel pĂ”hinevad kontrollerid. Populaarsed on nginx, traefik, haproxy, envoy. Ăldiselt ei pruugi see tugevalt mĂ”jutada, kuidas liiklus vastu vĂ”etakse ja edastatakse, kuid alati on kasulik teada vĂ”imalikke nĂŒansse ja omadusi, mis on "kapoti all".
Liikluse marsruutimine
Mille alusel saab otsustada, kuhu suunata liiklus teatud teenusesse? TĂŒĂŒpiliselt on selleks host ja path, kuid vĂ”ivad olla ka tĂ€iendavad vĂ”imalused.
Nimeala klastris
Nimeala (namespace) â vĂ”imalus loogiliselt jaotada ressursse Kuberneteses (nĂ€iteks stseeni, tootmise jne jĂ€rgi). On Ingress-kontrollereid, mida tuleb igasse nimealasse eraldi installeerida (ja siis suudavad nad liiklust suunata seda selle nimeala pod'idesse). Kuid on ka teisi (ja neid on selgelt enamuses), mis töötavad globaalselt kogu klastris â neid kasutades suunatakse liiklus igasse klastris asuvasse pod'i, sĂ”ltumata nimealast.
Ălesvoolu proovid
Kuidas tagatakse liikluse suunamine tervetesse rakenduste, teenuste eksemplaridesse? On variante aktiivsete ja passiivsete kontrollidega, korduvate katsetega (retries), circuit breakeri (rohkem neist vt nÀiteks, ), kohandatud olekute kontrollide (custom health checks) jne. See on vÀga oluline parameeter, kui teie nÔudmised kÀttesaadavuse ja katkestustega vÀlja langemise vajaduste osas on kÔrged.
Tasakaalustamisalgoritmid
Siin on mitmeid variante: alates traditsioonilisest kuni eksootiliseni nagu , samuti eraldi vÔimalused nagu .
Ahnikeerimine
Milliseid autoriseerimise skeeme toetab kontroller? Basic, digest, oauth, external-auth â ma arvan, et need valikud peaksid olema tuttavad. See on oluline kriteerium, kui kasutatakse palju kontuure arendajatele (ja/vĂ”i lihtsalt suletud), millele pÀÀseb ligi lĂ€bi Ingressi.
Liikluse jaotamine
Kas kontroller toetab selliseid sageli kasutatavaid mehhanisme liikluse jaotamiseks nagu kanarisĂŒsteemid (canary), A/B-testimine, liikluse peegeldamine (mirroring/shadowing)? See on tĂ”eliselt probleemne teema rakenduste jaoks, mis vajavad delikaatset ja tĂ€pset liikluse juhtimist tootetestimise, tootmisvigade silumise (vĂ”i minimaalsete kadudega), liikluse analĂŒĂŒsi jne jaoks.
Tasuline tellimus
Kas on olemas tasuline versioon kontrollerist, millel on laiendatud funktsionaalsus ja/vÔi tehniline tugi?
Graafiline liides (Web UI)
Kas kontrolleri konfiguratsiooni haldamiseks on olemas mÔni graafiline liides? Peamiselt mugavuse huvides ja/vÔi neile, kes peavad tegema muudatusi Ingress'i konfiguratsioonis, kuid on ebamugav töötada "toorete" ƥabloonidega. See vÔib osutuda kasulikuks juhul, kui arendajad soovivad reaalajas katsetada liiklust.
JWT-valiidatsioon
Sisseehitatud JSON web-tokenite kontrollimise vÔimalus kasutaja autentimiseks ja valideerimiseks lÔpprakenduses.
Konfiguratsiooni kohandamise vÔimalused
Ć abloonide laiendatavus, et vĂ”imaldada standardsete konfiguratsioonimudelite kohandamist oma direktiivide, lippude jne lisamise mehhanismide kaudu.
PÔhimehhanismid DDOS-i kaitseks
Lihtsad kiiruspiirangute algoritmid vÔi keerukamad versioonid liikluse filtreerimiseks aadresside, lubatud loendite, riikide jne alusel.
KĂŒsimuste jĂ€lgimine
VĂ”imalused Ingress'ide ja konkreetsete teenuste/pod'ide vaheliste pĂ€ringute jĂ€lgimiseks, jĂ€lgimiseks ja tĂ”rkeotsinguks ning ideaaljuhul â ka teenuste/pod'ide vahel.
WAF
Tugi .
Ingress'i kontrollerid
Kontrollerite nimekiri on koostatud ja . MĂ”ned neist oleme erandeid teinud spetsiifilisuse vĂ”i vĂ€ikese leviku (arengufaasi) tĂ”ttu. JĂ€relejÀÀnud on allpool arutatud. Alustame ĂŒldise ĂŒlevaate kirjeldusest ja jĂ€tkame koondtabeliga.
Ingress Kubernetes'elt
Veebisait:
Litsents: Apache 2.0
See on ametlik kontroller Kubernetes'e jaoks, mille on vÀlja töötanud kogukond. Nimi annab selgelt mÔista, et see pÔhineb nginx'il ning on varustatud erinevate Lua-pluginatega, mida kasutatakse tÀiendavate vÔimaluste rakendamiseks. TÀnu nginx'i populaarsusele ja minimaalsetele muudatustele selle kasutamisel kontrollerina on see variant keskmise inseneri (web-kogemusega) jaoks kÔige lihtsam ja arusaadavam konfigureerida.
Ingress NGINX Inc'ilt
Veebisait:
Litsents: Apache 2.0
Ametlik toode nginx'i arendajatelt. Omab tasulist versiooni, mis pÔhineb Peamine idee on kÔrge stabiilsuse tase, pidev tagasipööratavus, kÔrvaliste moodulite puudumine ja vÀidetav suurenenud kiirus (vÔrreldes ametliku kontrolleriga), mis on saavutatud Lua loobumise tÔttu.
Tasuta versioon on oluliselt kÀrbitud, sealhulgas isegi ametliku kontrolleriga vÔrreldes (kuna puuduvad jÀlle need samad Lua-moodulid). Tasuline versioon omab samas piisavalt laia lisafunktsionaalsust: reaalajas mÔÔdikud, JWT-aktiveerimine, aktiivsed health check'id ja muud. Oluline eelis NGINX Ingress'i ees on tÀielik TCP/UDP liikluse tugi (ka community versioonis!). Miinus - funktsioonid liikluse jagamiseks, mis, muide, on "arendajate jaoks maksimaalse prioriteediga", kuid nÔuab selle elluviimiseks aega.
Kong Ingress
Veebisait:
Litsents: Apache 2.0
Toode, mida arendab ettevÔte Kong Inc. kahes versioonis: kommerts- ja tasuta. See pÔhineb nginx'il, mille vÔimalusi on laiendatud suure hulga Lua moodulitega.
Esialgu oli see suunatud API pÀringute töötlemiseks ja marsruutimiseks, st kui API Gateway, kuid hetkel on sellest saanud tÀieÔiguslik Ingress-kontroller. Peamised eelised: mitmed lisamoodulid (ka kolmandate osapoolte arendajatelt), mida on lihtne installida ja konfigureerida ning millega saab realiseerida laia spektri tÀiendavaid vÔimalusi. Samas pakuvad sisseehitatud funktsioonid juba palju vÔimalusi. Töö konfiguratsioon toimub CRD-resursside kaudu.
Toote oluline omadus - töötamine ĂŒhes kontuuris (asemel cross-namespaced) on vaieldav teema: kellelegi vĂ”ib see tunduda puudusena (kuna tuleb igas kontuuris luua ĂŒksused), kuid kellelegi on see omadus (bilotkasuurem isolatsioonitase, kuna kui ĂŒks kontroller on rikutud, siis probleem on piiratud vaid ĂŒhe kontuuriga).
Traefik
Veebisait:
Litsents: MIT
Proxii, mis loodi algselt mikroteenuste ja nende dĂŒnaamilise keskkonna pĂ€ringute suunamiseks. SeetĂ”ttu on sellel palju kasulikke funktsioone: seadistuste vĂ€rskendamine ilma taaskĂ€ivitusteta, mitmekesiste tasakaalustusmeetodite tugi, veebiliides, mÔÔdikute edastamine, erinevate protokollide toimetamine, REST API, kanaroude vĂ€ljalasked ja palju muud. Meeldiv omadus on ka Letâs Encrypti sertifikaatide tugi otse karbist. Puuduseks on, et kĂ”rge kĂ€ttesaadavuse (HA) korral peab kontrollerile olema seatud ja ĂŒhendatud oma KV-lao.
Edasi lĂ€ks kliendi pĂ€ring HAProxy-sse, mis lahendas jĂ€rgmised ĂŒlesanded:
Veebisait:
Litsents: Apache 2.0
HAProxy on tuntud kui proksi ja liikluse tasakaalustaja. Kubernetes'i klastris pakub see "pehmet" seadistuste vĂ€rskendust (ilma liiklust kaotamata), DNS-pĂ”hist teenuse avastamist, dĂŒnaamilist konfiguratsiooni API abil. Atraktiivne vĂ”ib olla tĂ€ielik konfigureerimise mallide isikupĂ€rastamine CM-i asendamise kaudu, samuti Sprigi raamatukogu funktsioonide kasutamise vĂ”imalused. Ăldiselt keskendub lahenduse pĂ”hitĂ€helepanu töö kiirus, optimeeritus ja ressursikasutuse efektiivsus. Kontrolleri eeliseks on rekordiliselt palju erinevaid tasakaalustusviise.
Voyager
Veebisait:
Litsents: Apache 2.0
HAproxy'le pĂ”hinev kontroller, mis positsioneeritakse universaalse lahendusena, pakkudes laia valikut vĂ”imalusi paljude pakkujate seas. Pakub vĂ”imalust liikluse tasakaalustamiseks L7 ja L4 tasemel ning TCP L4-liikluse tasakaalustamist vĂ”ib pidada lahenduse ĂŒheks pĂ”hifunktsiooniks.
Contour
Veebisait:
Litsents: Apache 2.0
Selle lahenduse aluseks ei ole mitte ainult Envoy: see on vĂ€lja töötatud koosluses selle populaarse proksi autoritega. Oluline omadus on Ingress'i ressursside haldamise eristamine IngressRoute CRD-resursside kaudu. Organisatsioonide jaoks, kus paljud arendusmeeskonnad kasutavad ĂŒhte klastrit, aitab see maksimaalselt kaitsta liiklust naaberpiirides ja kaitsta neid vigu Ingress'i ressursside muutmisel.
Pakutavakse laiem komplekt koormuse tasakaalustamise meetodeid (sh pÀringute peegeldamine, automaatsed kordused, pÀringute kiiruspiirangud ja palju muud), detailne liikluse ja tÔrgete jÀlgimine. VÔib-olla mÔne jaoks on mÀrkimisvÀÀrne miinus sticky sessions toe puudumine (kuigi tööd ).
Istio Ingress
Veebisait:
Litsents: Apache 2.0
Kohandatud teenuste mesh-lahendus, mis ei ole mitte ainult sissepÀÀsukontroller, mis haldab vÀljastpoolt tulevat liiklust, vaid kontrollib ka kogu liiklust klastris. 'Kapoti all' kasutatakse iga teenuse jaoks sidecar-proksi, milleks on Envoy. Essentsilt on see suur kombain, mis 'oskab kÔike', ja selle pÔhieesmÀrk on maksimaalne hallatavus, laiendatavus, turvalisus ja lÀbipaistvus. Selle abil saate detailselt seadistada liikluse marsruutimist, juurdepÀÀsu autoriseerimist teenuste vahel, koormuse jaotamist, jÀlgimist, kanarrelease ja palju muud. Lisainfot Istio kohta loe sarjast artikleid '».
Ambassador
Veebisait:
Litsents: Apache 2.0
Veel ĂŒks lahendus, mis pĂ”hineb Envoy. Saadaval on tasuta ja kommertsversioon. Positiivne, et see on 'tĂ€ielikult Kubernetesele kohandatud', mis kinnitab sellega seonduvaid eeliseid (tihe integreeritus K8s klastrite meetodite ja entiteetidega).
VÔrdlustabel
Nii et artikli tipuks on see suur tabel:
See on klikatav, et saaksite selgemalt vaadata, ja saadaval ka vormingus .
KokkuvÔtteks
Artikli eesmÀrk on anda pÔhjalikum arusaam (kuigi mitte ammendav!), milline valik teha just teie konkreetses olukorras. Nagu tavaliselt, on iga kontrolleril omad plusse ja miinuseid...
Kubernetes'i klassikaline Ingress on hea oma kĂ€ttesaadavuse ja usaldusvÀÀrsuse poolest, samuti piisava hulga funktsioonide poolest â see peaks enamasti piisama. Kuid kui on kĂ”rgendatud nĂ”uded stabiilsusele, funktsioonide tasemele ja arengule, tasub tĂ€helepanu pöörata NGINX Plus Ingress'ile ja tasulisele tellimusele. Kongil on rikkalik pluginakogum (ja vastavalt seelĂ€bi pakutavad vĂ”imalused), ning tasulisest versioonist leiab neid isegi rohkem. Sellel on laiad vĂ”imalused API Gateway'na töötamiseks, dĂŒnaamiliseks konfigureerimiseks CRD-resursside pĂ”hjal ning ka Kubernetes'i pĂ”hiteenuste jaoks.
Kui teil on suuremad nÔuded koormuse tasakaalustamise ja autentimismeetodite osas, uurige Traefiki ja HAProxy. Need on avatud lÀhtekoodiga projektid, mis on aastate jooksul tÔestatud, vÀga stabiilsed ja aktiivselt arenevad. Contour ilmus juba paar aastat tagasi, kuid nÀeb endiselt liiga noor vÀlja ja sellel on vaid pÔhifunktsioonid, mis on lisatud Envoy'i peale. Kui on nÔuded WAF'i olemasolu / integreerimise osas rakenduse ette, tasub tÀhelepanu pöörata ka Kubernetes'i vÔi HAProxy Ingress'ile.
KÔige rikkamad funktsioonide poolest on tooted, mis pÔhinevad Envoy'l, eriti Istio. See esindab komplekset lahendust, mis "suudab kÔike", mis tÀhendab samuti oluliselt kÔrgemat ÔppimiskÔverat konfiguratsiooni / kÀivitamise / haldamise osas vÔrreldes teiste lahendustega.
Me valisime standardsete kontrolleritena Ingress'i Kubernetes'ilt, mis katab 80â90% vajadustest. See on tĂ€iesti usaldusvÀÀrne, lihtne konfigureerida ja laiendada. Ăldiselt peaks see sobima enamiku klastrite / rakenduste jaoks, vĂ€lja arvatud juhul, kui on spetsiifilisi nĂ”udmisi. Samadest universaalsetest ja suhteliselt lihtsatest toodetest vĂ”ib soovitada Traefiki ja HAProxy.
P.S.
Lugege ka meie blogist:
- "Tagasi mikroteenustele koos Istio": , , ;
- «»;
- «».
Allikas: habr.com
