Yfirlit og samanburður á Ingress stýringar fyrir Kubernetes

Yfirlit og samanburður á Ingress stýringar fyrir Kubernetes

Þegar þú setur upp Kubernetes þyrping fyrir tiltekið forrit þarftu að skilja hvað forritið sjálft, fyrirtækið og þróunaraðilarnir bera fyrir sig við þessa auðlind. Með þessum upplýsingum geturðu byrjað að taka byggingarákvörðun og sérstaklega að velja sérstakan Ingress stjórnandi, sem nú þegar er mikill fjöldi af. Til þess að fá grunnhugmynd um tiltæka valkosti án þess að þurfa að fara í gegnum margar greinar / skjöl osfrv., höfum við útbúið þetta yfirlit, þar á meðal helstu (framleiðslutilbúna) Ingress stýringar.

Við vonum að það hjálpi samstarfsfólki við að velja byggingarlausn - að minnsta kosti verður það upphafspunktur til að afla ítarlegri upplýsinga og hagnýtra tilrauna. Áður höfðum við rannsakað önnur sambærileg efni á netinu og, einkennilega nóg, fundum við ekki eina meira eða minna fullkomna, og síðast en ekki síst - skipulagða - umsögn. Svo við skulum fylla það skarð!

viðmið

Í grundvallaratriðum, til þess að gera samanburð og fá gagnlegar niðurstöður, þarftu að skilja ekki bara viðfangsefnið, heldur einnig að hafa sérstakan lista yfir viðmiðanir sem munu setja rannsóknarferilinn. Án þess að þykjast greina öll möguleg tilvik um notkun Ingress / Kubernetes, reyndum við að varpa ljósi á almennustu kröfurnar fyrir stýringar - vertu viðbúinn því að í öllum tilvikum verður þú að kynna þér allar sérstöður þínar og upplýsingar sérstaklega.

En ég ætla að byrja á þeim eiginleikum sem eru orðnir svo kunnuglegir að þeir eru innleiddir í allar lausnir og eru ekki teknar til greina:

  • kraftmikil uppgötvun þjónustu (þjónustuuppgötvun);
  • SSL uppsögn;
  • vinna með veftengi.

Nú fyrir samanburðarpunktana:

Stuðlar samskiptareglur

Eitt af grundvallarvalviðmiðunum. Hugbúnaðurinn þinn virkar kannski ekki á venjulegu HTTP, eða það gæti þurft að vinna á mörgum samskiptareglum í einu. Ef tilfellið þitt er ekki staðlað, vertu viss um að taka tillit til þessa þáttar svo þú þurfir ekki að endurstilla þyrpinguna síðar. Fyrir alla stýringar er listinn yfir studdar samskiptareglur mismunandi.

hugbúnaður í kjarna

Það eru nokkur afbrigði af forritum sem stjórnandinn er byggður á. Vinsælir eru nginx, traefik, haproxy, envoy. Í almennu tilvikinu getur það ekki haft mikil áhrif á hvernig umferð er móttekin og send, en það er alltaf gagnlegt að vita hugsanlega blæbrigði og eiginleika þess sem er „undir húddinu“.

Umferðarleiðsögn

Á grundvelli hvers er hægt að taka ákvörðun um stefnu umferðar að tiltekinni þjónustu? Venjulega eru þetta gestgjafi og slóð, en það eru fleiri möguleikar.

Nafnarými innan klasa

Nafnarými (nafnarými) - hæfileikinn til að skipta auðlindum á rökréttan hátt í Kubernetes (til dæmis á sviði, framleiðslu osfrv.). Það eru Ingress stýringar sem þarf að setja upp sérstaklega í hverju nafnrými (og þá getur það beint umferð aðeins að belgjum þessa rýmis). Og það eru þeir (og hreinn meirihluti þeirra) sem vinna á heimsvísu fyrir allan klasann - í þeim er umferð beint á hvaða belg sem er í klasanum, óháð nafnrýminu.

Sýni fyrir andstreymi

Hvernig er umferð beint til heilbrigðra tilvika forritsins, þjónustunnar? Það eru valkostir með virkum og óvirkum athugunum, endurteknum tilraunum, aflrofum (Nánari upplýsingar er að finna í td. grein um Istio), eigin útfærslur á heilbrigðisskoðunum (sérsniðnar heilbrigðisskoðanir) o.fl. Mjög mikilvæg færibreyta ef þú hefur miklar kröfur um framboð og tímanlega fjarlægingu á misheppnuðum þjónustu frá jafnvægi.

Jafnvægisalgrím

Það eru margir valkostir: frá hefðbundnum kringlukast til hins framandi rdp-kaka, auk einstakra eiginleika eins og klístraðar lotur.

Auðkenning

Hvaða heimildakerfi styður ábyrgðaraðili? Basic, digest, oauth, external-auth - ég held að þessir valkostir ættu að vera kunnuglegir. Þetta er mikilvægt viðmið ef það eru margar forritara (og/eða bara einka-) lykkjur sem hægt er að nálgast í gegnum Ingress.

Dreifing umferðar

Styður stjórnandinn svo almennt notaður umferðardreifingarkerfi eins og kanaríflugur (kanarífugl), A/B prófun, umferðarspeglun (speglun/skugga)? Þetta er mjög sárt viðfangsefni fyrir forrit sem krefjast nákvæmrar og nákvæmrar umferðarstjórnunar fyrir árangursríkar prófanir, kembiforrit vörugalla utan nets (eða með lágmarks tapi), umferðargreiningu og svo framvegis.

Greidd áskrift

Er til greiddur valkostur fyrir stjórnandann, með háþróaðri virkni og/eða tæknilega aðstoð?

Grafískt notendaviðmót (vefviðmót)

Er eitthvað GUI til að stjórna stillingum stjórnanda? Aðallega fyrir "handiness" og / eða fyrir þá sem þurfa að gera einhverjar breytingar á Ingress'a uppsetningunni, en að vinna með "hrá" sniðmát er óþægilegt. Það getur verið gagnlegt ef forritarar vilja gera nokkrar tilraunir með umferð á flugu.

JWT staðfesting

Tilvist innbyggðrar staðfestingar á JSON veftáknum fyrir heimild og staðfestingu notandans til lokaforritsins.

Möguleikar á aðlögun stillinga

Stækkanleiki sniðmáts í þeim skilningi að hafa kerfi sem gerir þér kleift að bæta við þínum eigin tilskipunum, fánum osfrv. við venjuleg uppsetningarsniðmát.

Grunn DDOS verndarkerfi

Einföld reiknirit fyrir hraðatakmarkanir eða flóknari umferðarsíuvalkostir byggðir á heimilisföngum, hvítlistum, löndum osfrv.

Óska eftir rekstri

Hæfni til að fylgjast með, rekja og villuleita beiðnir frá Ingresses til tiltekinna þjónustu / belg, og helst á milli þjónustu / belg líka.

WAF

Stuðningur eldvegg forrits.

Stjórnendur

Listi yfir stjórnendur var myndaður út frá opinber Kubernetes skjöl и þetta borð. Við útilokuðum sum þeirra frá endurskoðuninni vegna sérhæfni eða lágs algengis (snemma þroskastigs). Um restina er fjallað hér að neðan. Byrjum á almennri lýsingu á lausnum og höldum áfram með yfirlitstöflu.

Ingress frá Kubernetes

Vefsíða: github.com/kubernetes/ingress-nginx
Leyfi: Apache 2.0

Þetta er opinber stjórnandi fyrir Kubernetes og er í þróun hjá samfélaginu. Augljóslega af nafninu, það er byggt á nginx og er bætt við annað sett af Lua viðbótum sem notuð eru til að útfæra viðbótareiginleika. Vegna vinsælda nginx sjálfs og lágmarks breytinga á því þegar það er notað sem stjórnandi, gæti þessi valkostur verið auðveldasti og auðveldasti að stilla fyrir meðalverkfræðing (með vefreynslu).

Ingress eftir NGINX Inc.

Vefsíða: github.com/nginxinc/kubernetes-ingress
Leyfi: Apache 2.0

Opinber vara nginx forritara. Er með greidda útgáfu byggt á NGINX Plus. Meginhugmyndin er mikil stöðugleiki, stöðugt afturábak eindrægni, skortur á neinum óviðkomandi einingum og yfirlýstur aukinn hraði (samanborið við opinbera stjórnandann), sem næst vegna höfnunar Lua.

Ókeypis útgáfan minnkar verulega, þar á meðal jafnvel þegar hún er borin saman við opinbera stjórnandann (vegna skorts á sömu Lua einingum). Á sama tíma hefur sá sem er greiddur nokkuð víðtæka viðbótarvirkni: rauntímamælingar, JWT staðfestingu, virkt heilsufarsskoðun og fleira. Mikilvægur kostur umfram NGINX Ingress er fullur stuðningur við TCP / UDP umferð (og í samfélagsútgáfu líka!). Mínus - fjarveru umferðardreifingareiginleika, sem þó „hefur hæsta forgang fyrir þróunaraðila,“ en tekur tíma að innleiða.

Kong Ingress

Vefsíða: github.com/Kong/kubernetes-ingress-controller
Leyfi: Apache 2.0

Vara þróuð af Kong Inc. í tveimur útgáfum: auglýsing og ókeypis. Byggt á nginx, sem hefur verið útvíkkað með miklum fjölda Lua eininga.

Upphaflega var lögð áhersla á að vinna úr og beina API beiðnum, þ.e. sem API Gateway, en í augnablikinu er það orðið fullgildur Ingress stjórnandi. Helstu kostir: Margar viðbótareiningar (þar á meðal frá þriðja aðila þróunaraðila) sem auðvelt er að setja upp og stilla og með hjálp er fjölbreytt úrval viðbótareiginleika útfært. Hins vegar bjóða innbyggðar aðgerðir nú þegar upp á marga möguleika. Verkstillingar eru gerðar með því að nota CRD auðlindir.

Mikilvægur eiginleiki vörunnar - að vinna innan sömu útlínunnar (í stað þess að vera með kross-nafnabil) er umdeilt efni: fyrir suma mun það virðast vera ókostur (þú verður að framleiða einingar fyrir hverja útlínu), og fyrir einhvern er það eiginleiki ( bоMeiri einangrun, eins og ef einn stjórnandi er bilaður, þá er vandamálið takmarkað við hringrásina eina).

Traefik

Vefsíða: github.com/containous/traefik
Leyfi: MIT

Staðgengill sem var upphaflega búinn til til að vinna með beiðnaleiðingu fyrir örþjónustur og kraftmikið umhverfi þeirra. Þess vegna eru margir gagnlegir eiginleikar: uppfærsla á stillingum án þess að endurræsa neitt, stuðningur við fjölda jafnvægisaðferða, vefviðmót, framsendingu mæligilda, stuðningur við ýmsar samskiptareglur, REST API, kanaríútgáfur og margt fleira. Annar ágætur eiginleiki er stuðningur við Let's Encrypt vottorð úr kassanum. Ókosturinn er sá að til þess að skipuleggja háa framboð (HA) þarf stjórnandinn að setja upp og tengja sína eigin KV geymslu.

HAProxy

Vefsíða: github.com/jcmoraisjr/haproxy-ingress
Leyfi: Apache 2.0

HAProxy hefur lengi verið þekkt sem umboð og umferðarjafnvægi. Sem hluti af Kubernetes klasa býður það upp á „mjúka“ stillingaruppfærslu (án umferðartaps), þjónustuuppgötvun byggða á DNS, kraftmikla stillingu með API. Það getur verið aðlaðandi að sérsníða stillingarsniðmátið algjörlega með því að skipta um CM, sem og getu til að nota Sprig bókasafnsaðgerðir í því. Almennt séð er megináhersla lausnarinnar lögð á mikinn hraða, hagræðingu hans og skilvirkni í neyttum auðlindum. Kosturinn við stjórnandann er stuðningur við metfjölda mismunandi jafnvægisaðferða.

Voyager

Vefsíða: github.com/appscode/voyager
Leyfi: Apache 2.0

Byggt á HAproxy stjórnandi, sem er staðsettur sem alhliða lausn sem styður fjölbreytt úrval af eiginleikum hjá fjölda þjónustuaðila. Boðið er upp á tækifæri til að jafna umferð á L7 og L4 og má kalla jafnvægi á TCP L4 umferð í heild einn af lykileiginleikum lausnarinnar.

Útlínur

Vefsíða: github.com/heptio/contour
Leyfi: Apache 2.0

Þessi lausn er ekki aðeins byggð á Envoy: hún var þróuð af sameiginlega með höfundum þessa vinsæla umboðsmanns. Mikilvægur eiginleiki er hæfileikinn til að aðgreina stjórn á Ingress auðlindum með því að nota IngressRoute CRD auðlindir. Fyrir stofnanir með mörg þróunarteymi sem nota sama klasann hjálpar þetta við að hámarka öryggi við að vinna með umferð í nálægum lykkjum og vernda þau fyrir villum þegar skipt er um Ingress tilföng.

Það býður einnig upp á aukið sett af jafnvægisaðferðum (það er speglun á beiðnum, sjálfvirk endurtekning, takmörkun á hraða beiðna og margt fleira), ítarlegt eftirlit með umferðarflæði og bilunum. Kannski fyrir einhvern mun það vera verulegur galli skortur á stuðningi við klístraða fundi (þó að vinnan þegar í gangi).

Istio Ingress

Vefsíða: istio.io/docs/tasks/traffic-management/ingress
Leyfi: Apache 2.0

Alhliða þjónustunetslausn sem er ekki aðeins Ingress-stýribúnaður sem stýrir komandi umferð að utan, heldur stjórnar einnig allri umferð innan klasans. Undir hettunni er Envoy notað sem umboð fyrir hliðarvagn fyrir hverja þjónustu. Í meginatriðum er þetta stór sameining sem „getur allt“ og meginhugmynd hennar er hámarks viðráðanleiki, stækkanleiki, öryggi og gagnsæi. Með því geturðu fínstillt umferðarleiðir, aðgangsheimild milli þjónustu, jafnvægi, eftirlit, kanaríútgáfur og margt fleira. Lestu meira um Istio í greinaflokknum "Aftur í örþjónustur með Istio'.

Sendiherra

Vefsíða: github.com/datawire/ambassador
Leyfi: Apache 2.0

Önnur lausn byggð á Envoy. Það hefur ókeypis og viðskiptaútgáfur. Það er staðsett sem "að fullu innfæddur maður til Kubernetes", sem færir samsvarandi kosti (þétt samþættingu við aðferðir og einingar K8s klasans).

Samanburðarborð

Svo, hápunktur greinarinnar er þessi risastóra tafla:

Yfirlit og samanburður á Ingress stýringar fyrir Kubernetes

Það er smellanlegt til að sjá nánar og er einnig fáanlegt í formi Google töflur.

til að draga saman

Tilgangur þessarar greinar er að veita fullkomnari skilning (þó á engan hátt tæmandi!) á hvaða vali á að taka í þínu tilteknu tilviki. Eins og venjulega hefur hver stjórnandi sína kosti og galla...

Klassíski Ingress frá Kubernetes er góður fyrir framboð og sannleika, nógu ríka eiginleika - í almennu tilviki ætti það að vera „nóg fyrir augun“. Hins vegar, ef það eru auknar kröfur um stöðugleika, eiginleika og þróun, ættir þú að fylgjast með Ingress með NGINX Plus og greiddri áskrift. Kong hefur ríkasta sett af viðbætur (og, í samræmi við það, tækifærin sem þau veita), og í greiddu útgáfunni eru enn fleiri af þeim. Það hefur næg tækifæri til að vinna sem API-gátt, kraftmikla uppsetningu byggða á CRD auðlindum, sem og grunnþjónustu Kubernetes.

Með auknum kröfum um jafnvægis- og heimildaraðferðir skaltu skoða Traefik og HAProxy. Þetta eru Open Source verkefni, sannað í gegnum árin, mjög stöðug og í virkri þróun. Contour hefur verið út í nokkur ár núna, en það lítur enn of ungt út og hefur aðeins grunneiginleika bætt ofan á Envoy. Ef það eru kröfur um tilvist / innfellingu WAF fyrir framan forritið, ættir þú að borga eftirtekt til sama Ingress frá Kubernetes eða HAProxy.

Og þær ríkustu hvað varðar eiginleika eru vörur byggðar ofan á Envoy, sérstaklega Istio. Þetta virðist vera alhliða lausn sem „getur gert hvað sem er“ sem þýðir hins vegar einnig umtalsvert hærri aðgangsþröskuld fyrir uppsetningu / ræsingu / stjórnun en aðrar lausnir.

Við höfum valið og notum enn Ingress frá Kubernetes sem staðalstýringu, sem tekur til 80-90% af þörfum. Það er nokkuð áreiðanlegt, auðvelt að stilla og stækka. Almennt séð, þar sem sérstakar kröfur eru ekki fyrir hendi, ætti það að henta flestum klasa / forritum. Af sömu alhliða og tiltölulega einföldu vörum má mæla með Traefik og HAProxy.

PS

Lestu líka á blogginu okkar:

Heimild: www.habr.com

Bæta við athugasemd