PÄrskats un salÄ«dzinÄjums par Kubernetes Ingress kontrolieriem
Palaižot Kubernetes klasteru konkrÄtai lietojumprogrammai, jums ir jÄsaprot, ko pati lietojumprogramma, bizness un izstrÄdÄtÄji rada Å”im resursam. Izmantojot Å”o informÄciju, jÅ«s varat sÄkt pieÅemt arhitektonisku lÄmumu un, jo Ä«paÅ”i, izvÄlÄties konkrÄtu Ingress kontrolieri, kuru jau Å”odien ir liels skaits. Lai gÅ«tu priekÅ”statu par pieejamajÄm opcijÄm, neizpÄtot daudz rakstu/dokumentÄciju utt., esam sagatavojuÅ”i Å”o pÄrskatu, iekļaujot galvenos (ražoÅ”anai gatavus) Ingress kontrollerus.
Ceram, ka tas palÄ«dzÄs kolÄÄ£iem arhitektoniskÄ risinÄjuma izvÄlÄ ā vismaz kļūs par atspÄriena punktu sÄ«kÄkas informÄcijas iegÅ«Å”anai un praktiskiem eksperimentiem. IepriekÅ” mÄs pÄtÄ«jÄm citus lÄ«dzÄ«gus materiÄlus tÄ«klÄ un, dÄ«vainÄ kÄrtÄ, neatradÄm nevienu vairÄk vai mazÄk pilnÄ«gu un pats galvenais - strukturÄtu pÄrskatu. TÄpÄc aizpildÄ«sim Å”o robu!
kritÄriji
PrincipÄ, lai veiktu salÄ«dzinÄjumu un iegÅ«tu kÄdu noderÄ«gu rezultÄtu, jums ir jÄsaprot ne tikai priekÅ”meta joma, bet arÄ« jÄbÅ«t konkrÄtam kritÄriju sarakstam, kas noteiks pÄtÄ«juma vektoru. NepretendÄjot uz visu iespÄjamo Ingress / Kubernetes lietoÅ”anas gadÄ«jumu analÄ«zi, mÄs centÄmies izcelt vispÄrÄ«gÄkÄs prasÄ«bas kontrolieriem - esiet gatavi, ka jebkurÄ gadÄ«jumÄ jums bÅ«s jÄizpÄta visa jÅ«su specifika un detaļas atseviŔķi.
Bet es sÄkÅ”u ar Ä«paŔībÄm, kas ir kļuvuÅ”as tik pazÄ«stamas, ka tÄs tiek ieviestas visos risinÄjumos un netiek Åemtas vÄrÄ:
dinamiska pakalpojumu atklÄÅ”ana (pakalpojumu atklÄÅ”ana);
SSL pÄrtraukÅ”ana;
darbs ar tÄ«mekļa ligzdÄm.
Tagad par salÄ«dzinÄÅ”anas punktiem:
Atbalstītie protokoli
Viens no galvenajiem atlases kritÄrijiem. JÅ«su programmatÅ«ra var nedarboties ar standarta HTTP, vai arÄ« tai var bÅ«t nepiecieÅ”ams darbs ar vairÄkiem protokoliem vienlaikus. Ja jÅ«su korpuss ir nestandarta, noteikti Åemiet vÄrÄ Å”o faktoru, lai vÄlÄk nebÅ«tu jÄpÄrkonfigurÄ klasteris. Visiem kontrolleriem atbalstÄ«to protokolu saraksts atŔķiras.
programmatÅ«ras pamatÄ
Ir vairÄkas lietojumprogrammu variÄcijas, uz kurÄm balstÄs kontrolieris. PopulÄri ir nginx, traefik, haproxy, envoy. VispÄrÄ«gÄ gadÄ«jumÄ tam var nebÅ«t lielas ietekmes uz to, kÄ satiksme tiek uztverta un pÄrraidÄ«ta, taÄu vienmÄr ir noderÄ«gi zinÄt iespÄjamÄs nianses un iezÄ«mes tam, kas atrodas āzem pÄrsegaā.
Satiksmes marÅ”rutÄÅ”ana
Uz kÄ pamata var pieÅemt lÄmumu par satiksmes virzienu uz konkrÄto pakalpojumu? Parasti tie ir saimniekdators un ceļŔ, taÄu ir arÄ« papildu iespÄjas.
Nosaukumtelpa klasterī
Namespace (namespace) - iespÄja loÄ£iski sadalÄ«t resursus Kubernetes (piemÄram, uz skatuves, producÄÅ”ana utt.). Ir Ingress kontrolleri, kas katrÄ nosaukumvietÄ ir jÄinstalÄ atseviŔķi (un tad tas var novirzÄ«t trafiku tikai uz Ŕīs telpas pÄkstÄ«m). Un ir tie (un to nepÄrprotami lielÄkÄ daļa), kas darbojas globÄli visÄ klasterÄ« - tajos trafika tiek novirzÄ«ta uz jebkuru klastera apgabalu neatkarÄ«gi no nosaukumvietas.
Paraugi augÅ”tecÄm
KÄ trafiks tiek novirzÄ«ts uz veseliem lietojumprogrammu gadÄ«jumiem, pakalpojumiem? Ir iespÄjas ar aktÄ«vÄm un pasÄ«vÄm pÄrbaudÄm, atkÄrtojumiem, automÄtiskiem slÄdžiem (SÄ«kÄku informÄciju skatiet, piemÄram, raksts par Istio), pielÄgotas veselÄ«bas pÄrbaudes utt. Ä»oti svarÄ«gs parametrs, ja jums ir augstas prasÄ«bas attiecÄ«bÄ uz pieejamÄ«bu un neveiksmÄ«gu pakalpojumu savlaicÄ«gu izÅemÅ”anu no balansÄÅ”anas.
KÄdas autorizÄcijas shÄmas pÄrzinis atbalsta? Pamata, Ä«ssavilkums, oauth, ÄrÄjÄ autentifikÄcija ā es domÄju, ka Ŕīm opcijÄm vajadzÄtu bÅ«t pazÄ«stamÄm. Tas ir svarÄ«gs kritÄrijs, ja ir daudz izstrÄdÄtÄju (un/vai tikai privÄtu) cilpu, kurÄm var piekļūt, izmantojot Ingress.
Satiksmes sadale
Vai kontrolieris atbalsta tÄdus bieži lietotus satiksmes sadales mehÄnismus kÄ kanÄrijputnu izlaiÅ”ana (kanÄrijputniÅÅ”), A/B testÄÅ”ana, satiksmes spoguļoÅ”ana (spoguļoÅ”ana/ÄnoÅ”ana)? Å is ir ļoti sÄpÄ«gs temats lietojumprogrammÄm, kurÄm nepiecieÅ”ama precÄ«za un precÄ«za trafika pÄrvaldÄ«ba produktÄ«vai testÄÅ”anai, produktu kļūdu atkļūdoÅ”anai bezsaistÄ (vai ar minimÄliem zaudÄjumiem), trafika analÄ«zei utt.
Maksas abonements
Vai kontrolierim ir maksas opcija ar uzlabotu funkcionalitÄti un/vai tehnisko atbalstu?
Vai ir kÄds GUI, lai pÄrvaldÄ«tu kontrollera konfigurÄciju? GalvenokÄrt "ÄrtÄ«bai" un/vai tiem, kam jÄveic dažas izmaiÅas Ingress'a konfigurÄcijÄ, taÄu darbs ar "neapstrÄdÄtÄm" veidnÄm ir neÄrts. Tas var bÅ«t noderÄ«gi, ja izstrÄdÄtÄji vÄlas veikt dažus eksperimentus ar satiksmi lidojuma laikÄ.
JWT validÄcija
IebÅ«vÄta JSON tÄ«mekļa pilnvaru validÄcija lietotÄja autorizÄcijai un validÄcijai gala lietojumprogrammÄ.
KonfigurÄcijas pielÄgoÅ”anas iespÄjas
VeidÅu paplaÅ”inÄÅ”ana tÄdÄ nozÄ«mÄ, ka ir mehÄnismi, kas ļauj standarta konfigurÄcijas veidnÄm pievienot savas direktÄ«vas, karogus utt.
Pamata DDOS aizsardzÄ«bas mehÄnismi
VienkÄrÅ”i Ätruma ierobežojuma algoritmi vai sarežģītÄkas trafika filtrÄÅ”anas iespÄjas, kuru pamatÄ ir adreses, baltie saraksti, valstis utt.
Pieprasīt izsekoŔanu
IespÄja pÄrraudzÄ«t, izsekot un atkļūdot pieprasÄ«jumus no Ingresses uz konkrÄtiem pakalpojumiem/apd, un ideÄlÄ gadÄ«jumÄ arÄ« starp pakalpojumiem/aplikumiem.
Kontrolieru saraksts tika izveidots, pamatojoties uz oficiÄlÄ Kubernetes dokumentÄcija Šø Å”o tabulu. Dažus no tiem mÄs izslÄdzÄm no pÄrskata specifiskuma vai zemas izplatÄ«bas dÄļ (agrÄ«na attÄ«stÄ«bas stadija). PÄrÄjie ir apspriesti tÄlÄk. SÄksim ar vispÄrÄ«gu risinÄjumu aprakstu un turpinÄsim ar kopsavilkuma tabulu.
Å is ir oficiÄlais Kubernetes kontrolieris, un to izstrÄdÄ kopiena. AcÄ«mredzot pÄc nosaukuma, tas ir balstÄ«ts uz nginx, un to papildina cits Lua spraudÅu komplekts, ko izmanto papildu funkciju ievieÅ”anai. SakarÄ ar paÅ”a nginx popularitÄti un minimÄlajÄm modifikÄcijÄm tajÄ, kad to izmanto kÄ kontrolieri, Ŕī opcija var bÅ«t visvieglÄk un visvieglÄk konfigurÄjama vidusmÄra inženierim (ar tÄ«mekļa pieredzi).
OficiÄlais nginx izstrÄdÄtÄju produkts. Ir maksas versija, kuras pamatÄ ir NGINX Plus. GalvenÄ ideja ir augsts stabilitÄtes lÄ«menis, pastÄvÄ«ga atpakaļejoÅ”a savietojamÄ«ba, sveÅ”u moduļu neesamÄ«ba un deklarÄtais palielinÄtais Ätrums (salÄ«dzinÄjumÄ ar oficiÄlo kontrolieri), kas panÄkts Lua noraidÄ«Å”anas dÄļ.
Bezmaksas versija ir ievÄrojami samazinÄta, tostarp pat salÄ«dzinot ar oficiÄlo kontrolieri (tÄdu paÅ”u Lua moduļu trÅ«kuma dÄļ). TajÄ paÅ”Ä laikÄ maksas ir diezgan plaÅ”a papildu funkcionalitÄte: reÄllaika metrika, JWT validÄcija, aktÄ«vÄs veselÄ«bas pÄrbaudes un daudz kas cits. SvarÄ«ga priekÅ”rocÄ«ba salÄ«dzinÄjumÄ ar NGINX Ingress ir pilnÄ«gs TCP / UDP trafika atbalsts (un arÄ« kopienas versijÄ!). MÄ«nuss - trÅ«kums trafika sadales funkcija, kurai tomÄr "izstrÄdÄtÄjiem ir visaugstÄkÄ prioritÄte", taÄu tÄ ievieÅ”ana prasa laiku.
Produkts, ko izstrÄdÄjis Kong Inc. divÄs versijÄs: komerciÄlÄ un bezmaksas. BalstÄ«ts uz nginx, kas ir paplaÅ”inÄts ar lielu skaitu Lua moduļu.
SÄkotnÄji tas bija vÄrsts uz API pieprasÄ«jumu apstrÄdi un marÅ”rutÄÅ”anu, t.i. kÄ API Gateway, bet Å”obrÄ«d tas ir kļuvis par pilnvÄrtÄ«gu Ingress kontrolieri. GalvenÄs priekÅ”rocÄ«bas: daudzi papildu moduļi (ieskaitot treÅ”o puÅ”u izstrÄdÄtÄjus), kurus ir viegli uzstÄdÄ«t un konfigurÄt un ar kuru palÄ«dzÄ«bu tiek ieviests plaÅ”s papildu funkciju klÄsts. TomÄr iebÅ«vÄtÄs funkcijas jau piedÄvÄ daudzas iespÄjas. Darba konfigurÄÅ”ana tiek veikta, izmantojot CRD resursus.
SvarÄ«ga produkta Ä«paŔība - darbs vienÄ kontÅ«rÄ (nevis starpnosaukumos) ir strÄ«dÄ«gs temats: dažiem tas ŔķitÄ«s trÅ«kums (katrai kontÅ«rai ir jÄizveido entÄ«tijas), bet kÄdam tÄ ir funkcija ( bŠ¾LielÄks izolÄcijas lÄ«menis, kÄ ja ir bojÄts viens kontrolieris, problÄma attiecas tikai uz Ä·Ädi).
Starpniekserveris, kas sÄkotnÄji tika izveidots, lai strÄdÄtu ar pieprasÄ«jumu marÅ”rutÄÅ”anu mikropakalpojumiem un to dinamiskajai videi. LÄ«dz ar to daudzas noderÄ«gas funkcijas: konfigurÄcijas atjauninÄÅ”ana bez pÄrstartÄÅ”anas, atbalsts lielam skaitam balansÄÅ”anas metožu, tÄ«mekļa saskarne, metrikas pÄrsÅ«tÄ«Å”ana, atbalsts dažÄdiem protokoliem, REST API, kanÄrijputnu izlaidumi un daudz kas cits. VÄl viena jauka funkcija ir atbalsts Let's Encrypt sertifikÄtiem. TrÅ«kums ir tÄds, ka, lai organizÄtu augstu pieejamÄ«bu (HA), kontrolierim bÅ«s jÄinstalÄ un jÄpievieno sava KV krÄtuve.
HAProxy jau sen ir pazÄ«stams kÄ starpniekserveris un satiksmes lÄ«dzsvarotÄjs. KÄ daļa no Kubernetes klastera tas piedÄvÄ āmÄ«kstoā konfigurÄcijas atjauninÄjumu (bez trafika zuduma), pakalpojumu atklÄÅ”anu, pamatojoties uz DNS, dinamisku konfigurÄciju, izmantojot API. Var bÅ«t pievilcÄ«gi pilnÄ«bÄ pielÄgot konfigurÄcijas veidni, aizstÄjot CM, kÄ arÄ« iespÄju tajÄ izmantot Sprig bibliotÄkas funkcijas. KopumÄ risinÄjuma galvenais uzsvars ir uz lielu Ätrumu, tÄ optimizÄciju un efektivitÄti patÄrÄtajos resursos. Kontroliera priekÅ”rocÄ«ba ir rekordliela dažÄdu balansÄÅ”anas metožu atbalsts.
BalstÄ«ts uz HAproxy kontrolleri, kas ir pozicionÄts kÄ universÄls risinÄjums, kas atbalsta plaÅ”u funkciju klÄstu daudziem pakalpojumu sniedzÄjiem. Tiek piedÄvÄta iespÄja balansÄt trafiku uz L7 un L4, un TCP L4 trafika balansÄÅ”anu kopumÄ var saukt par vienu no galvenajÄm risinÄjuma iezÄ«mÄm.
Å is risinÄjums nav balstÄ«ts tikai uz Envoy: to izstrÄdÄja kopÄ«gi ar Ŕī populÄrÄ starpniekservera autoriem. SvarÄ«ga iezÄ«me ir iespÄja nodalÄ«t Ingress resursu kontroli, izmantojot IngressRoute CRD resursus. OrganizÄcijÄm ar daudzÄm izstrÄdes komandÄm, kuras izmanto vienu un to paÅ”u kopu, tas palÄ«dz maksimÄli palielinÄt droŔību darbÄ ar trafiku blakus esoÅ”ajÄs cilpÄs un aizsargÄt tÄs no kļūdÄm, mainot ieejas resursus.
Tas piedÄvÄ arÄ« paplaÅ”inÄtu balansÄÅ”anas metožu kopu (ir pieprasÄ«juma spoguļoÅ”ana, automÄtiskais atkÄrtojums, pieprasÄ«juma Ätruma ierobežoÅ”ana un daudz kas cits), detalizÄtu satiksmes plÅ«smas un kļūmju uzraudzÄ«bu. VarbÅ«t kÄdam tas bÅ«s bÅ«tisks trÅ«kums atbalsta trÅ«kums lipÄ«gÄm sesijÄm (lai gan darbs jau notiek).
VisaptveroÅ”s pakalpojumu tÄ«kla risinÄjums, kas ir ne tikai Ingress kontrolieris, kas pÄrvalda ienÄkoÅ”o trafiku no Ärpuses, bet arÄ« kontrolÄ visu trafiku klasterÄ«. Zem pÄrsega Envoy tiek izmantots kÄ blakusvÄÄ£a starpniekserveris katram pakalpojumam. BÅ«tÄ«bÄ Å”is ir liels kombains, kas āvar visuā, un tÄ galvenÄ ideja ir maksimÄla vadÄmÄ«ba, paplaÅ”inÄmÄ«ba, droŔība un caurspÄ«dÄ«gums. Ar to jÅ«s varat precizÄt trafika marÅ”rutÄÅ”anu, piekļuves autorizÄciju starp pakalpojumiem, balansÄÅ”anu, uzraudzÄ«bu, kanÄriju izlaidumus un daudz ko citu. VairÄk par Istio lasiet rakstu sÄrijÄ "Atgriezties uz mikropakalpojumiem ar Istio'.
Cits risinÄjums, kura pamatÄ ir Envoy. Tam ir bezmaksas un komerciÄlas versijas. Tas ir pozicionÄts kÄ "pilnÄ«bÄ Kubernetes dzimtene", kas sniedz atbilstoÅ”Äs priekÅ”rocÄ«bas (cieÅ”a integrÄcija ar K8s klastera metodÄm un entÄ«tijÄm).
salÄ«dzinÄjuma tabula
TÄtad, raksta kulminÄcija ir Ŕī milzÄ«gÄ tabula:
Tas ir noklikŔķinÄms, lai skatÄ«tu tuvÄk, un tas ir pieejams arÄ« formÄtÄ Google izklÄjlapas.
Apkopojot
Å Ä« raksta mÄrÄ·is ir sniegt pilnÄ«gÄku izpratni (tomÄr tas nekÄdÄ gadÄ«jumÄ nav izsmeļoÅ”s!) par to, kÄdu izvÄli izdarÄ«t konkrÄtajÄ gadÄ«jumÄ. KÄ parasti, katram kontrolierim ir savas priekÅ”rocÄ«bas un trÅ«kumiā¦
Klasiskais Kubernetes Ingress ir labs ar savu pieejamÄ«bu un pierÄdÄ«tÄ«bu, pietiekami bagÄtÄ«gÄm funkcijÄm - kopumÄ tam vajadzÄtu bÅ«t āacÄ«m pietiekamiā. TomÄr, ja ir paaugstinÄtas prasÄ«bas attiecÄ«bÄ uz stabilitÄti, funkciju lÄ«meni un attÄ«stÄ«bu, jums vajadzÄtu pievÄrst uzmanÄ«bu Ingress ar NGINX Plus un maksas abonementu. Kongam ir visbagÄtÄkais spraudÅu komplekts (un attiecÄ«gi arÄ« to sniegtÄs iespÄjas), un maksas versijÄ to ir vÄl vairÄk. Tam ir plaÅ”as iespÄjas strÄdÄt kÄ API vÄrteja, dinamiska konfigurÄcija, kuras pamatÄ ir CRD resursi, kÄ arÄ« pamata Kubernetes pakalpojumi.
Å emot vÄrÄ paaugstinÄtÄs prasÄ«bas balansÄÅ”anas un autorizÄcijas metodÄm, apskatiet Traefik un HAProxy. Tie ir atvÄrtÄ koda projekti, kas ir pÄrbaudÄ«ti gadu gaitÄ, ļoti stabili un aktÄ«vi attÄ«stÄs. Contour ir iznÄcis jau pÄris gadus, taÄu tas joprojÄm izskatÄs pÄrÄk jauns, un tam ir pievienotas tikai pamata funkcijas, kas pievienotas Envoy. Ja ir prasÄ«bas attiecÄ«bÄ uz WAF klÄtbÅ«tni / iegulÅ”anu lietojumprogrammas priekÅ”Ä, jums jÄpievÄrÅ” uzmanÄ«ba tam paÅ”am Kubernetes vai HAProxy Ingress.
Un visbagÄtÄkie funkciju ziÅÄ ir produkti, kas uzbÅ«vÄti uz Envoy, Ä«paÅ”i Istio. Å Ä·iet, ka tas ir visaptveroÅ”s risinÄjums, kas "var darÄ«t jebko", kas tomÄr nozÄ«mÄ arÄ« ievÄrojami augstÄku ievades slieksni konfigurÄÅ”anai / palaiÅ”anai / administrÄÅ”anai nekÄ citi risinÄjumi.
KÄ standarta kontrolieri esam izvÄlÄjuÅ”ies un joprojÄm izmantojam Ingress no Kubernetes, kas sedz 80-90% vajadzÄ«bu. Tas ir diezgan uzticams, viegli konfigurÄjams un paplaÅ”inÄms. KopumÄ, ja nav Ä«paÅ”u prasÄ«bu, tai vajadzÄtu bÅ«t piemÄrotai lielÄkajai daļai klasteru/lietojumprogrammu. No tiem paÅ”iem universÄlajiem un salÄ«dzinoÅ”i vienkÄrÅ”iem produktiem var ieteikt Traefik un HAProxy.