Apèsi ak konparezon kontwolè Ingress pou Kubernetes

Apèsi ak konparezon kontwolè Ingress pou Kubernetes

Lè w lanse yon gwoup Kubernetes pou yon aplikasyon espesifik, ou bezwen konprann ki sa aplikasyon an li menm, biznis la, ak devlopè yo poze nan resous sa a. Avèk enfòmasyon sa a, ou ka kòmanse pran yon desizyon achitekti epi, an patikilye, chwazi yon kontwolè Ingress espesifik, ki gen deja yon gwo kantite jodi a. Yo nan lòd yo jwenn yon lide debaz sou opsyon ki disponib yo san yo pa bezwen ale nan yon anpil nan atik / dokiman, elatriye, nou te prepare BECA sa a, ki gen ladan prensipal (pwodiksyon pare) kontwolè Ingress yo.

Nou espere ke li pral ede kòlèg yo nan chwazi yon solisyon achitekti - omwen li pral vin yon pwen depa pou jwenn plis enfòmasyon detaye ak eksperyans pratik. Précédemment, nou etidye lòt materyèl ki sanble sou nèt la epi, etranj ase, pa t 'jwenn yon sèl plis oswa mwens konplè, ak pi enpòtan - estriktire - revizyon. Se konsa, ann ranpli espas sa a!

Kritè

Nan prensip, yo nan lòd yo fè yon konparezon ak jwenn nenpòt rezilta itil, ou bezwen konprann pa sèlman sijè a, men tou, gen yon lis espesifik nan kritè ki pral mete vektè rechèch la. San yo pa pretann analize tout ka posib pou itilize Ingress / Kubernetes, nou te eseye mete aksan sou kondisyon ki pi jeneral pou kontwolè - dwe prepare ke nan nenpòt ka ou pral oblije etidye tout spesifik ou yo ak detay separeman.

Men, mwen pral kòmanse ak karakteristik sa yo ki te vin tèlman abitye ke yo aplike nan tout solisyon epi yo pa konsidere:

  • dekouvèt dinamik sèvis (dekouvèt sèvis);
  • SSL revokasyon;
  • travay ak websockets.

Koulye a, pou pwen yo nan konparezon:

Pwotokòl sipòte

Youn nan kritè seleksyon fondamantal yo. Lojisyèl ou a ka pa travay sou HTTP estanda, oswa li ka mande pou travay sou plizyè pwotokòl an menm tan. Si ka w la pa estanda, asire w ke w pran faktè sa a an kont pou w pa oblije rekonfigure gwoup la pita. Pou tout contrôleur, lis pwotokòl sipòte yo varye.

lojisyèl nan nwayo a

Gen plizyè varyasyon aplikasyon ke kontwolè a baze sou. Moun popilè yo se nginx, traefik, haproxy, anvwaye. Nan ka jeneral la, li ka pa gen anpil efè sou fason trafik yo resevwa ak transmèt, men li toujou itil pou konnen nuans potansyèl ak karakteristik sa ki "anba kapo a".

Trafik routage

Sou baz sa li posib pou pran yon desizyon sou direksyon trafik nan yon sèvis patikilye? Anjeneral sa yo se lame ak chemen, men gen posiblite adisyonèl.

Espas non nan yon gwoup

Namespace (namespace) - kapasite nan lojikman divize resous nan Kubernetes (pa egzanp, sou sèn, pwodiksyon, elatriye). Gen kontwolè Ingress ki dwe enstale separeman nan chak espas non (ak Lè sa a, li ka dirije trafik sèlman nan gous espas sa a). Epi gen sa yo (ak majorite klè yo) ki travay globalman pou tout gwoup la - nan yo trafik yo dirije nan nenpòt gous nan gwoup la, kèlkeswa espas non an.

Echantiyon pou en

Kouman yo dirije trafik nan ka an sante nan aplikasyon an, sèvis? Gen opsyon ak chèk aktif ak pasif, retry, disjoncteurs (Pou plis detay, gade, pa egzanp, atik sou Istio), pwòp aplikasyon chèk sante (chèk sante koutim), elatriye. Yon paramèt trè enpòtan si ou gen gwo kondisyon pou disponiblite ak alè retire sèvis echwe nan balanse.

Algoritm balanse

Gen anpil opsyon: soti nan tradisyonèl yo wonn-robin nan ekzotik la rdp-bonbon, osi byen ke karakteristik endividyèl tankou sesyon kolan.

Otantifikasyon

Ki plan otorizasyon kontwolè a sipòte? Basic, digest, oauth, external-auth - Mwen panse ke opsyon sa yo ta dwe abitye. Sa a se yon kritè enpòtan si gen anpil pwomotè (ak/oswa jis prive) bouk ki gen aksè atravè Ingress.

Distribisyon trafik

Èske kontwolè a sipòte mekanis distribisyon trafik yo souvan itilize tankou deplwaye Canary (Canary), tès A / B, mirwar trafik (mirroring / lonbraj)? Sa a se yon sijè vrèman fè mal pou aplikasyon ki mande pou jesyon trafik egzat ak egzak pou tès pwodiktif, debogaj pwodwi pinèz off-line (oswa ak pèt minim), analiz trafik, ak sou sa.

Abònman peye

Èske gen yon opsyon peye pou kontwolè a, ak fonksyonalite avanse ak / oswa sipò teknik?

Entèfas itilizatè grafik (Entènèt UI)

Èske gen nenpòt entèfas pou jere konfigirasyon kontwolè? Sitou pou "fatibilite" ak / oswa pou moun ki bezwen fè kèk chanjman nan konfigirasyon Ingress'a a, men travay ak modèl "kri" pa konvenyan. Li kapab itil si devlopè vle fè kèk eksperyans ak trafik sou vole.

Validasyon JWT

Prezans nan validation bati nan JSON web tokens pou otorizasyon ak validation nan itilizatè a aplikasyon an fen.

Posiblite pou personnalisation konfigirasyon

Ekstansibilite modèl nan sans gen mekanis ki pèmèt ou ajoute pwòp direktiv ou, drapo, elatriye nan modèl konfigirasyon estanda.

Mekanis debaz pwoteksyon DDOS

Algoritm limit to senp oswa opsyon filtraj trafik ki pi konplèks ki baze sou adrès, lis blan, peyi, elatriye.

Mande tras

Kapasite pou kontwole, swiv ak debogaj demann soti nan Ingresses nan sèvis espesifik / gous, e depreferans ant sèvis / gous tou.

WAF

Sipòte aplikasyon pare-feu.

Kontwolè

Lis contrôleur te fòme baze sou dokiman ofisyèl Kubernetes и tab sa a. Nou eskli kèk nan yo nan revizyon an akòz espesifik oswa prévalence ba (etap bonè nan devlopman). Rès yo diskite anba a. Ann kòmanse ak yon deskripsyon jeneral solisyon yo epi kontinye ak yon tablo rezime.

Antre soti nan Kubernetes

Sit wèb: github.com/kubernetes/ingress-nginx
Lisans: Apache 2.0

Sa a se kontwolè ofisyèl pou Kubernetes epi kominote a ap devlope. Li evidan nan non an, li baze sou nginx epi li konplete pa yon seri diferan nan grefon Lua yo itilize pou aplike karakteristik adisyonèl. Akòz popilarite nginx tèt li ak modifikasyon minimòm nan li lè yo itilize kòm yon kontwolè, opsyon sa a ka pi fasil ak pi fasil pou konfigirasyon pou enjenyè mwayèn (ak eksperyans entènèt).

Engress pa NGINX Inc.

Sit wèb: github.com/nginxinc/kubernetes-ingress
Lisans: Apache 2.0

Pwodwi ofisyèl devlopè nginx yo. Gen yon vèsyon peye ki baze sou NGINX Plus. Lide prensipal la se yon wo nivo estabilite, konstan konpatibilite bak, absans la nan nenpòt modil etranje ak vitès la te deklare ogmante (konpare ak kontwolè ofisyèl la), reyalize akòz rejè a nan Lua.

Se vèsyon an gratis siyifikativman redwi, ki gen ladan menm lè yo konpare ak kontwolè ofisyèl la (akòz mank nan menm modil Lua yo). An menm tan an, moun ki peye a gen yon fonksyonalite adisyonèl jistis lajè: mezi an tan reyèl, validation JWT, chèk sante aktif, ak plis ankò. Yon avantaj enpòtan sou NGINX Ingress se sipò total pou trafik TCP / UDP (ak nan vèsyon kominote a tou!). Mwens - absans karakteristik distribisyon trafik, ki, sepandan, "gen pi gwo priyorite pou devlopè," men li pran tan pou aplike.

Kong Ingress

Sit wèb: github.com/Kong/kubernetes-ingress-controller
Lisans: Apache 2.0

Pwodwi devlope pa Kong Inc. nan de vèsyon: komèsyal ak gratis. Ki baze sou nginx, ki te pwolonje ak yon gwo kantite modil Lua.

Okòmansman, li te konsantre sou pwosesis ak routage demann API, i.e. kòm yon Gateway API, men nan moman sa a li te vin tounen yon kontwolè Ingress plen véritable. Avantaj prensipal yo: anpil modil adisyonèl (ki gen ladan sa yo ki soti nan devlopè twazyèm pati) ki fasil pou enstale ak konfigirasyon epi avèk èd nan ki se yon pakèt karakteristik adisyonèl aplike. Sepandan, bati-an fonksyon deja ofri anpil posiblite. Konfigirasyon travay yo fè lè l sèvi avèk resous CRD.

Yon karakteristik enpòtan nan pwodwi a - k ap travay nan menm kontou a (olye pou yo cross-namespaced) se yon sijè kontwovèsyal: pou kèk li pral sanble tankou yon dezavantaj (ou dwe pwodwi antite pou chak kontou), ak pou yon moun li se yon karakteristik ( bоPi gwo nivo izolasyon, kòm si yon sèl kontwolè kase, Lè sa a, pwoblèm nan limite a sikwi a pou kont li).

Traefik

Sit wèb: github.com/containous/traefik
Lisans: MIT

Yon prokurasyon ki te kreye orijinèlman pou travay avèk wout demann pou mikwosèvis ak anviwònman dinamik yo. Pakonsekan, anpil karakteristik itil: aktyalizasyon konfigirasyon an san yo pa rdemare ditou, sipò pou yon gwo kantite metòd balanse, koòdone entènèt, voye mezi, sipò pou divès pwotokòl, REST API, degaje Canary, ak plis ankò. Yon lòt bèl karakteristik se sipò pou sètifika ann ankripte soti nan bwat la. Dezavantaj la se ke yo nan lòd yo òganize disponiblite segondè (HA), kontwolè a ap bezwen enstale ak konekte pwòp depo KV li yo.

HAProxy

Sit wèb: github.com/jcmoraisjr/haproxy-ingress
Lisans: Apache 2.0

HAProxy te konnen depi lontan kòm yon proxy ak balanse trafik. Kòm yon pati nan yon gwoup Kubernetes, li ofri yon aktyalizasyon "mou" konfigirasyon (san pèt trafik), dekouvèt sèvis ki baze sou DNS, konfigirasyon dinamik lè l sèvi avèk API. Li ka atire konplètman Customize modèl la konfigirasyon pa ranplase CM a, osi byen ke kapasite nan sèvi ak fonksyon bibliyotèk Sprig nan li. An jeneral, anfaz prensipal la nan solisyon an se sou gwo vitès, optimize li yo ak efikasite nan resous boule. Avantaj nan kontwolè a se sipò nan yon kantite dosye diferan metòd balanse.

Voyager

Sit wèb: github.com/appscode/voyager
Lisans: Apache 2.0

Ki baze sou kontwolè HAproxy, ki pozisyone kòm yon solisyon inivèsèl ki sipòte yon pakèt karakteristik sou yon gwo kantite founisè. Yo ofri yon opòtinite pou balanse trafik sou L7 ak L4, epi balanse trafik TCP L4 kòm yon antye ka rele youn nan karakteristik prensipal yo nan solisyon an.

Kontou

Sit wèb: github.com/heptio/contour
Lisans: Apache 2.0

Solisyon sa a se pa sèlman ki baze sou Envoy: li te devlope pa ansanm ak otè yo nan prokurasyon popilè sa a. Yon karakteristik enpòtan se kapasite pou separe kontwòl resous Ingress lè l sèvi avèk resous CRD IngressRoute. Pou òganizasyon ki gen anpil ekip devlopman k ap itilize menm gwoup la, sa ede maksimize sekirite travay ak trafik nan bouk vwazen yo epi pwoteje yo kont erè lè w ap chanje resous Ingress yo.

Li ofri tou yon seri metòd balanse pwolonje (gen mirwar nan demann, oto-repete, limite to a nan demann, ak plis ankò), siveyans detaye nan koule trafik ak echèk. Petèt pou yon moun li pral yon dezavantaj enpòtan mank nan sipò pou sesyon kolan (byenke travay la deja sou pye).

Istio Ingress

Sit wèb: istio.io/docs/tasks/traffic-management/ingress
Lisans: Apache 2.0

Yon solisyon may sèvis konplè ki se pa sèlman yon kontwolè Ingress ki jere trafik k ap rantre soti deyò a, men tou kontwole tout trafik nan gwoup la. Anba kapo a, Envoy itilize kòm yon prokurasyon sidecar pou chak sèvis. Nan sans, sa a se yon gwo konbine ki "ka fè anyen", ak lide prensipal li se maksimòm jere, ekstansiblite, sekirite ak transparans. Avèk li, ou ka ajiste wout trafik, aksè otorizasyon ant sèvis yo, balanse, siveyans, degaje Canary, ak plis ankò. Li plis sou Istio nan seri atik "Retounen nan microservices ak Istio'.

Anbasadè

Sit wèb: github.com/datawire/ambassador
Lisans: Apache 2.0

Yon lòt solisyon ki baze sou Envoy. Li gen vèsyon gratis ak komèsyal yo. Li pozisyone kòm "konplètman natif natal nan Kubernetes", ki pote avantaj ki koresponn lan (sere entegrasyon ak metòd ak antite nan gwoup K8s la).

Tab konparezon

Se konsa, akimilasyon atik la se gwo tab sa a:

Apèsi ak konparezon kontwolè Ingress pou Kubernetes

Li se klike sou pou yon gade pi pre, epi li disponib tou nan fòma a Google Sheets.

Pou rezime

Objektif atik sa a se pou bay yon konpreyansyon pi konplè (sepandan, pa gen okenn fason konplè!) Ki chwa pou fè nan ka patikilye ou. Kòm dabitid, chak kontwolè gen pwòp avantaj ak dezavantaj li yo ...

Klasik Ingress soti nan Kubernetes se bon pou disponiblite li yo ak pwovens, karakteristik ase rich - nan ka jeneral la, li ta dwe "ase pou je yo". Sepandan, si gen plis kondisyon pou estabilite, nivo karakteristik ak devlopman, ou ta dwe peye atansyon sou Ingress ak NGINX Plus ak yon abònman peye. Kong gen seri ki pi rich nan plug-ins (e, kòmsadwa, opòtinite yo bay), ak nan vèsyon an peye gen menm plis nan yo. Li gen anpil opòtinite pou travay kòm yon Gateway API, konfigirasyon dinamik ki baze sou resous CRD, ansanm ak sèvis Kubernetes debaz yo.

Avèk plis kondisyon pou balanse ak metòd otorizasyon, gade nan Traefik ak HAProxy. Sa yo se pwojè Open Source, pwouve sou ane yo, trè ki estab ak aktivman devlope. Kontour te soti pou yon koup de ane kounye a, men li toujou sanble twò piti epi li gen sèlman karakteristik debaz yo ajoute sou tèt Envoy. Si gen kondisyon pou prezans / entegre WAF devan aplikasyon an, ou ta dwe peye atansyon sou menm Engress nan Kubernetes oswa HAProxy.

Ak pi rich an tèm de karakteristik yo se pwodwi ki bati sou tèt Envoy, espesyalman Istio. Li sanble se yon solisyon konplè ki "ka fè anyen", ki, sepandan, vle di tou yon papòt antre siyifikativman pi wo pou konfigirasyon / lansman / administrasyon pase lòt solisyon.

Nou te chwazi epi nou toujou sèvi ak Ingress soti nan Kubernetes kòm yon kontwolè estanda, ki kouvri 80-90% nan bezwen. Li se byen serye, fasil pou konfigirasyon ak elaji. An jeneral, nan absans kondisyon espesifik, li ta dwe adapte pi grap / aplikasyon yo. Nan menm pwodwi yo inivèsèl ak relativman senp, Traefik ak HAProxy ka rekòmande.

PS

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè