Overview ug pagtandi sa Ingress controllers para sa Kubernetes

Overview ug pagtandi sa Ingress controllers para sa Kubernetes

Kung maglansad ug Kubernetes cluster para sa usa ka piho nga aplikasyon, kinahanglan nimong masabtan kung unsa ang gipresentar mismo sa aplikasyon, negosyo, ug mga developer sa kini nga kapanguhaan. Uban niini nga kasayuran, mahimo ka magsugod sa paghimo usa ka desisyon sa arkitektura ug, labi na, pagpili sa usa ka piho nga controller sa Ingress, diin adunay daghan na karon. Aron makakuha usa ka sukaranan nga ideya sa mga magamit nga kapilian nga dili kinahanglan nga moagi sa daghang mga artikulo / dokumentasyon, ug uban pa, giandam namon kini nga kinatibuk-ang panan-aw, lakip ang panguna (andam nga produksiyon) nga mga tigkontrol sa Ingress.

Kami nanghinaut nga kini makatabang sa mga kauban sa pagpili sa usa ka solusyon sa arkitektura - labing menos kini mahimong usa ka punto sa pagsugod sa pagkuha sa mas detalyado nga impormasyon ug praktikal nga mga eksperimento. Kaniadto, gitun-an namon ang uban pang parehas nga mga materyales sa pukot ug, sa katingad-an, wala’y nakit-an nga usa nga labi pa o dili kaayo kompleto, ug labing hinungdanon - istruktura - pagrepaso. Busa atong pun-on kana nga kal-ang!

Mga Criteria

Sa prinsipyo, aron makahimo usa ka pagtandi ug makuha ang bisan unsang mapuslanon nga sangputanan, kinahanglan nimo nga masabtan dili lamang ang lugar sa hilisgutan, apan adunay usab usa ka piho nga lista sa mga pamatasan nga magtakda sa vector sa panukiduki. Kung wala magpakaaron-ingnon nga pag-analisar sa tanan nga posible nga mga kaso sa paggamit sa Ingress / Kubernetes, gisulayan namon nga ipasiugda ang labing kasagaran nga mga kinahanglanon alang sa mga tigkontrol - pag-andam nga sa bisan unsang kaso kinahanglan nimo nga tun-an ang tanan nimo nga mga detalye ug mga detalye nga gilain.

Apan magsugod ako sa mga kinaiya nga nahimong pamilyar kaayo nga kini gipatuman sa tanan nga mga solusyon ug wala gikonsiderar:

  • dinamikong pagdiskobre sa mga serbisyo (service discovery);
  • pagtapos sa SSL;
  • nagtrabaho uban sa mga websocket.

Karon alang sa mga punto sa pagtandi:

Gisuportahan nga mga protocol

Usa sa mga sukaranan nga sukaranan sa pagpili. Mahimong dili molihok ang imong software sa sagad nga HTTP, o mahimo’g kinahanglan nga magtrabaho sa daghang mga protocol sa usa ka higayon. Kung dili standard ang imong kaso, siguruha nga tagdon kini nga hinungdan aron dili nimo kinahanglan nga i-configure pag-usab ang cluster sa ulahi. Alang sa tanan nga mga controller, ang lista sa gisuportahan nga mga protocol magkalainlain.

software sa kinauyokan

Adunay daghang mga kalainan sa mga aplikasyon nga gibase sa controller. Ang mga sikat mao ang nginx, traefik, haproxy, envoy. Sa kinatibuk-an nga kaso, kini mahimo nga wala’y daghang epekto kung giunsa ang trapiko nadawat ug gipasa, apan kanunay nga mapuslanon nga mahibal-an ang potensyal nga mga nuances ug mga bahin sa kung unsa ang "sa ilawom sa hood".

Pag-ruta sa trapiko

Pinasukad sa kung unsa ang posible nga maghimo usa ka desisyon bahin sa direksyon sa trapiko sa usa ka partikular nga serbisyo? Kasagaran kini mga host ug agianan, apan adunay dugang nga mga posibilidad.

Namespace sulod sa cluster

Namespace (namespace) - ang abilidad sa lohikal nga pagbahin sa mga kapanguhaan sa Kubernetes (pananglitan, sa entablado, produksiyon, ug uban pa). Adunay mga Ingress controllers nga kinahanglang i-install nga gilain sa matag namespace (ug dayon kini makadirekta sa trapiko lamang ngadto sa mga pod niini nga luna). Ug adunay mga (ug ang ilang tin-aw nga kadaghanan) nga nagtrabaho sa tibuuk kalibutan alang sa tibuuk nga cluster - sa kanila ang trapiko gitumong sa bisan unsang pod sa cluster, bisan unsa pa ang namespace.

Mga sample para sa upstream

Giunsa gitumong ang trapiko sa himsog nga mga higayon sa aplikasyon, mga serbisyo? Adunay mga kapilian nga adunay aktibo ug pasibo nga mga pagsusi, pagsulay pag-usab, mga circuit breaker (Alang sa dugang mga detalye, tan-awa, pananglitan, artikulo bahin sa Istio), naandan nga mga pagsusi sa kahimsog, ug uban pa. Usa ka hinungdanon kaayo nga parameter kung ikaw adunay taas nga mga kinahanglanon alang sa pagkaanaa ug tukma sa panahon nga pagtangtang sa mga napakyas nga serbisyo gikan sa pagbalanse.

Pagbalanse sa mga algorithm

Adunay daghang mga kapilian: gikan sa tradisyonal round robin ngadto sa exotic rdp-cookie, ingon man ang indibidwal nga mga bahin sama sa sticky nga mga sesyon.

Pagpanghimatuud

Unsang mga laraw sa pagtugot ang gisuportahan sa controller? Basic, digest, oauth, external-auth - Sa akong hunahuna kini nga mga kapilian kinahanglan nga pamilyar. Kini usa ka importante nga sukdanan kung adunay daghang developer (ug/o pribado lang) nga mga loops nga ma-access pinaagi sa Ingress.

Pag-apod-apod sa trapiko

Gisuportahan ba sa controller ang kasagarang gigamit nga mga mekanismo sa pag-apod-apod sa trapiko sama sa canary rollouts (canary), A/B testing, traffic mirroring (mirroring/shadowing)? Kini usa ka sakit nga hilisgutan alang sa mga aplikasyon nga nanginahanglan tukma ug tukma nga pagdumala sa trapiko alang sa produktibo nga pagsulay, pag-debug sa mga bug sa produkto nga wala sa linya (o adunay gamay nga pagkawala), pagtuki sa trapiko, ug uban pa.

Bayad nga suskrisyon

Adunay bay bayad nga kapilian alang sa controller, nga adunay advanced functionality ug / o teknikal nga suporta?

Graphical user interface (Web UI)

Aduna bay GUI nga magdumala sa pagsumpo sa controller? Nag-una alang sa "kaayo" ug / o alang sa mga kinahanglan nga magbag-o sa pag-configure sa Ingress'a, apan ang pagtrabaho kauban ang "hilaw" nga mga template dili kombenyente. Mahimong mapuslanon kung gusto sa mga developer nga magpahigayon og pipila ka mga eksperimento sa trapiko sa langaw.

Pag-validate sa JWT

Ang presensya sa built-in nga validation sa JSON web tokens alang sa pagtugot ug pag-validate sa user hangtod sa katapusan nga aplikasyon.

Mga posibilidad alang sa pag-customize sa config

Ang pagpalapad sa template sa kahulugan nga adunay mga mekanismo nga nagtugot kanimo sa pagdugang sa imong kaugalingon nga mga direktiba, mga bandila, ug uban pa sa mga sumbanan nga template sa pag-configure.

Batakang mekanismo sa pagpanalipod sa DDOS

Simple rate limit algorithms o mas komplikado nga traffic filtering options base sa mga adres, whitelist, nasud, etc.

Pangayo ug pagsubay

Ang abilidad sa pag-monitor, pagsubay ug pag-debug sa mga hangyo gikan sa Ingresses ngadto sa piho nga mga serbisyo/pods, ug sa labing maayo tali sa mga serbisyo/pods usab.

WAF

suporta firewall sa aplikasyon.

Mga tigkontrol

Ang listahan sa mga controller naporma base sa opisyal nga dokumentasyon sa Kubernetes и kini nga lamesa. Wala namo iapil ang pipila niini gikan sa pagrepaso tungod sa espesipiko o ubos nga pagkaylap (sayo nga yugto sa kalamboan). Ang uban hisgotan sa ubos. Magsugod kita sa usa ka kinatibuk-ang paghulagway sa mga solusyon ug magpadayon sa usa ka lamesa sa katingbanan.

Ingress gikan sa Kubernetes

Website: github.com/kubernetes/ingress-nginx
Lisensya: Apache 2.0

Kini ang opisyal nga tigkontrol sa Kubernetes ug gipalambo sa komunidad. Dayag nga gikan sa ngalan, kini gibase sa nginx ug gidugangan sa lain-laing set sa Lua plugins nga gigamit sa pagpatuman sa dugang nga mga bahin. Tungod sa pagkapopular sa nginx mismo ug gamay nga mga pagbag-o niini kung gigamit ingon usa ka controller, kini nga kapilian mahimo’g ang labing kadali ug labing kadali nga i-configure alang sa kasagaran nga inhenyero (nga adunay kasinatian sa web).

Ingress sa NGINX Inc.

Website: github.com/nginxinc/kubernetes-ingress
Lisensya: Apache 2.0

Ang opisyal nga produkto sa nginx developers. Adunay usa ka bayad nga bersyon nga gibase sa NGINX Plus. Ang nag-unang ideya mao ang taas nga lebel sa kalig-on, kanunay nga atraso nga pagkasibo, ang pagkawala sa bisan unsang extraneous nga mga module ug ang gideklarar nga dugang nga tulin (itandi sa opisyal nga controller), nga nakab-ot tungod sa pagsalikway sa Lua.

Ang libre nga bersyon labi nga pagkunhod, lakip ang bisan kung itandi sa opisyal nga controller (tungod sa kakulang sa parehas nga mga module sa Lua). Sa parehas nga oras, ang bayad adunay usa ka medyo lapad nga dugang nga pag-andar: real-time nga sukatan, pag-validate sa JWT, aktibo nga pagsusi sa kahimsog, ug daghan pa. Usa ka importante nga bentaha sa NGINX Ingress mao ang bug-os nga suporta alang sa TCP / UDP trapiko (ug sa komunidad nga bersyon usab!). Minus - ang kakulang sa bahin sa pag-apod-apod sa trapiko, nga, bisan pa, "adunay labing taas nga prayoridad alang sa mga nag-develop," apan nagkinahanglag oras aron mapatuman.

Kong Ingress

Website: github.com/Kong/kubernetes-ingress-controller
Lisensya: Apache 2.0

Produkto nga gimugna sa Kong Inc. sa duha ka bersyon: komersyal ug libre. Pinasukad sa nginx, nga gipalapdan sa daghang mga module sa Lua.

Sa sinugdan, kini naka-focus sa pagproseso ug pag-ruta sa mga hangyo sa API, i.e. isip API Gateway, apan sa pagkakaron nahimo na kining bug-os nga Ingress controller. Panguna nga mga bentaha: daghang dugang nga mga module (lakip ang gikan sa mga developer sa ikatulo nga partido) nga dali i-install ug i-configure ug uban ang tabang nga gipatuman ang usa ka halapad nga dugang nga mga bahin. Bisan pa, ang mga built-in nga function nagtanyag na daghang mga posibilidad. Ang pag-configure sa trabaho gihimo gamit ang mga kapanguhaan sa CRD.

Usa ka importante nga bahin sa produkto - ang pagtrabaho sulod sa parehas nga contour (imbes nga cross-namespaced) usa ka kontrobersyal nga hilisgutan: alang sa pipila kini ingon usa ka disbentaha (kinahanglan nimo nga maghimo mga entidad alang sa matag contour), ug alang sa usa ka tawo kini usa ka bahin ( bоMas dako nga lebel sa pagkahimulag, ingon kung ang usa ka controller nabuak, nan ang problema limitado sa sirkito lamang).

Traefik

Website: github.com/containous/traefik
Lisensya: MIT

Usa ka proxy nga orihinal nga gihimo aron magtrabaho uban ang pag-ruta sa hangyo alang sa mga microservice ug ang ilang dinamikong palibot. Busa, daghang mapuslanon nga mga bahin: pag-update sa configuration nga walay pag-reboot sa tanan, suporta alang sa daghang mga pamaagi sa pagbalanse, web interface, metrics forwarding, suporta alang sa lain-laing mga protocol, REST API, canary releases, ug daghan pa. Ang laing nindot nga bahin mao ang suporta alang sa Let's Encrypt nga mga sertipiko gikan sa kahon. Ang disbentaha mao nga aron maorganisar ang taas nga pagkaanaa (HA), ang tigkontrol kinahanglan nga mag-install ug magkonektar sa kaugalingon nga pagtipig sa KV.

HAProxy

Website: github.com/jcmoraisjr/haproxy-ingress
Lisensya: Apache 2.0

Ang HAProxy dugay nang nailhan isip proxy ug traffic balancer. Isip kabahin sa usa ka Kubernetes cluster, nagtanyag kini og “soft” configuration update (walay pagkawala sa trapiko), service discovery base sa DNS, dynamic configuration gamit ang API. Mahimong madanihon ang hingpit nga pag-customize sa config template pinaagi sa pag-ilis sa CM, ingon man ang abilidad sa paggamit sa Sprig library functions niini. Sa kinatibuk-an, ang panguna nga gibug-aton sa solusyon mao ang taas nga tulin, ang pag-optimize niini ug pagkaepektibo sa nahurot nga mga kapanguhaan. Ang bentaha sa controller mao ang suporta sa usa ka rekord nga gidaghanon sa lain-laing mga paagi sa pagbalanse.

Voyager

Website: github.com/appscode/voyager
Lisensya: Apache 2.0

Pinasukad sa HAproxy controller, nga gipahimutang ingon usa ka unibersal nga solusyon nga nagsuporta sa usa ka halapad nga mga bahin sa daghang mga provider. Gitanyag ang usa ka oportunidad alang sa pagbalanse sa trapiko sa L7 ug L4, ug ang pagbalanse sa trapiko sa TCP L4 sa kinatibuk-an matawag nga usa sa mga importanteng bahin sa solusyon.

Kaundan

Website: github.com/heptio/contour
Lisensya: Apache 2.0

Kini nga solusyon wala lamang gibase sa Envoy: kini gimugna ni dungan uban sa mga tagsulat niining sikat nga proxy. Usa ka importante nga bahin mao ang abilidad sa pagbulag sa kontrol sa Ingress nga mga kapanguhaan gamit ang IngressRoute CRD nga mga kapanguhaan. Alang sa mga organisasyon nga adunay daghang mga team sa pag-uswag nga naggamit sa parehas nga cluster, makatabang kini nga mapadako ang seguridad sa pagtrabaho kauban ang trapiko sa kasikbit nga mga loop ug mapanalipdan sila gikan sa mga sayup sa pagbag-o sa mga kapanguhaan sa Ingress.

Nagtanyag usab kini usa ka taas nga hugpong sa mga pamaagi sa pagbalanse (adunay pagsalamin sa mga hangyo, pag-auto-repeat, paglimite sa rate sa mga hangyo, ug daghan pa), detalyado nga pag-monitor sa dagan sa trapiko ug mga kapakyasan. Tingali alang sa usa ka tawo kini usa ka hinungdanon nga disbentaha ang kakulang sa suporta alang sa mga sticky session (bisan kung ang trabaho nagpadayon na).

Istio Ingress

Website: istio.io/docs/tasks/traffic-management/ingress
Lisensya: Apache 2.0

Usa ka komprehensibo nga serbisyo sa mesh nga solusyon nga dili lamang usa ka Ingress controller nga nagdumala sa umaabot nga trapiko gikan sa gawas, apan nagkontrol usab sa tanan nga trapiko sulod sa cluster. Ubos sa tabon, ang Envoy gigamit ingon usa ka sidecar proxy alang sa matag serbisyo. Sa esensya, kini usa ka dako nga kombinasyon nga "makabuhat bisan unsa", ug ang panguna nga ideya niini mao ang labing kadaghan nga pagdumala, pagpalapad, seguridad ug transparency. Uban niini, mahimo nimong maayo ang pag-ruta sa trapiko, pag-access sa pagtugot sa taliwala sa mga serbisyo, pagbalanse, pag-monitor, pagpagawas sa canary, ug daghan pa. Basaha ang dugang bahin sa Istio sa serye sa mga artikulo "Balik sa microservices kauban si Istio".

Ambassador

Website: github.com/datawire/ambassador
Lisensya: Apache 2.0

Laing solusyon base sa Envoy. Kini adunay libre ug komersyal nga mga bersyon. Gipahimutang kini isip "bug-os nga lumad sa Kubernetes", nga nagdala sa katugbang nga mga bentaha (hugot nga panagsama sa mga pamaagi ug mga entidad sa K8s cluster).

Comparison lamesa

Busa, ang culmination sa artikulo mao kining dako nga lamesa:

Overview ug pagtandi sa Ingress controllers para sa Kubernetes

Kini ma-click alang sa mas duol nga pagtan-aw, ug anaa usab sa format Google Sheets.

Himoon naton

Ang katuyoan sa artikulo mao ang paghatag usa ka labi ka kompleto nga pagsabut (bisan pa, dili kompleto!) kung unsang kapilian ang himuon sa imong partikular nga kaso. Sama sa naandan, ang matag controller adunay kaugalingon nga mga bentaha ug disbentaha…

Ang klasiko nga Ingress gikan sa Kubernetes maayo alang sa pagkaanaa ug kapamatud-an niini, adunay igo nga mga bahin - sa kinatibuk-an nga kaso, kini kinahanglan nga "igo alang sa mga mata". Bisan pa, kung adunay dugang nga mga kinahanglanon alang sa kalig-on, ang lebel sa mga bahin ug pag-uswag, kinahanglan nimo nga hatagan pagtagad ang Ingress nga adunay NGINX Plus ug usa ka bayad nga suskrisyon. Ang Kong adunay pinakadato nga hugpong sa mga plug-in (ug, sumala niana, ang mga oportunidad nga ilang gihatag), ug sa bayad nga bersyon adunay daghan pa niini. Kini adunay igo nga mga oportunidad sa pagtrabaho isip usa ka API Gateway, dinamikong configuration base sa CRD resources, ingon man sa batakang mga serbisyo sa Kubernetes.

Uban sa dugang nga mga kinahanglanon alang sa pagbalanse ug mga pamaagi sa pagtugot, tan-awa ang Traefik ug HAProxy. Kini ang mga proyekto sa Open Source, napamatud-an sa daghang mga tuig, lig-on kaayo ug aktibo nga nag-uswag. Ang contour wala na sa pipila ka tuig na karon, apan kini tan-awon nga bata pa kaayo ug adunay mga sukaranan nga bahin nga gidugang sa ibabaw sa Envoy. Kung adunay mga kinahanglanon alang sa presensya / pag-embed sa WAF sa atubangan sa aplikasyon, kinahanglan nimo nga hatagan pagtagad ang parehas nga Ingress gikan sa Kubernetes o HAProxy.

Ug ang labing adunahan sa mga termino sa mga bahin mao ang mga produkto nga gitukod sa ibabaw sa Envoy, labi na si Istio. Kini daw usa ka komprehensibo nga solusyon nga "makabuhat bisan unsa", nga, bisan pa, nagpasabut usab nga usa ka labi ka taas nga threshold sa pagsulod alang sa pagsulud / paglansad / administrasyon kaysa sa ubang mga solusyon.

Gipili ug gigamit gihapon namo ang Ingress gikan sa Kubernetes isip standard controller, nga naglangkob sa 80-90% sa mga panginahanglan. Kini kasaligan, dali nga ma-configure ug mapalapad. Sa kinatibuk-an, kung wala’y piho nga mga kinahanglanon, kinahanglan nga mohaum kini sa kadaghanan nga mga kumpol / aplikasyon. Sa parehas nga unibersal ug medyo yano nga mga produkto, ang Traefik ug HAProxy mahimong irekomenda.

PS

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment