Txheej txheem cej luam thiab kev sib piv ntawm Ingress controllers rau Kubernetes

Txheej txheem cej luam thiab kev sib piv ntawm Ingress controllers rau Kubernetes

Thaum tso tawm Kubernetes pawg rau ib daim ntawv thov tshwj xeeb, koj yuav tsum nkag siab tias daim ntawv thov nws tus kheej, kev lag luam, thiab cov neeg tsim khoom tsim rau cov peev txheej no. Nrog rau cov ntaub ntawv no, koj tuaj yeem pib txiav txim siab kev tsim vaj tsev thiab, tshwj xeeb tshaj yog, xaiv ib qho tshwj xeeb Ingress controller, uas muaj ntau tus neeg niaj hnub no. Txhawm rau kom tau txais lub tswv yim yooj yim ntawm cov kev xaiv muaj yam tsis tas yuav mus los ntawm ntau cov ntawv / cov ntaub ntawv, thiab lwm yam, peb tau npaj cov lus piav qhia no, suav nrog cov ntsiab lus tseem ceeb (ntau lawm npaj) Ingress controllers.

Peb cia siab tias nws yuav pab tau cov npoj yaig hauv kev xaiv qhov kev daws teeb meem kev tsim vaj tsev - tsawg kawg nws yuav dhau los ua qhov chaw pib kom tau txais cov ntaub ntawv ntxaws ntxiv thiab cov kev sim ua haujlwm. Yav dhau los, peb tau kawm lwm cov ntaub ntawv zoo sib xws hauv lub vas thiab, oddly txaus, tsis pom ib qho ntxiv lossis tsawg dua, thiab qhov tseem ceeb tshaj - kev teeb tsa - tshuaj xyuas. Yog li cia peb sau qhov sib txawv!

Kev Ntsuas

Hauv cov ntsiab lus, txhawm rau ua kom muaj kev sib piv thiab tau txais txiaj ntsig zoo, koj yuav tsum nkag siab tsis yog thaj chaw kawm xwb, tab sis kuj tseem muaj cov npe tshwj xeeb uas yuav teeb tsa cov kev tshawb fawb vector. Yog tias tsis ua piv txwv los tshuaj xyuas txhua qhov tshwm sim ntawm kev siv Ingress / Kubernetes, peb tau sim qhia txog cov kev cai dav dav tshaj plaws rau cov tswj hwm - npaj siab tias nyob rau hauv txhua rooj plaub koj yuav tsum tau kawm tag nrho koj cov lus qhia tshwj xeeb thiab tshwj xeeb cais.

Tab sis kuv mam li pib nrog cov yam ntxwv uas tau dhau los ua kom paub tias lawv tau ua tiav hauv txhua qhov kev daws teeb meem thiab tsis suav nrog:

  • dynamic discovery ntawm cov kev pab cuam (kev pab nrhiav pom);
  • Kev txiav tawm SSL;
  • ua haujlwm nrog websockets.

Tam sim no rau cov ntsiab lus ntawm kev sib piv:

Txhawb cov txheej txheem

Ib qho ntawm cov kev xaiv tseem ceeb. Koj lub software yuav tsis ua haujlwm ntawm tus qauv HTTP, lossis nws yuav xav tau kev ua haujlwm ntawm ntau cov txheej txheem ib zaug. Yog tias koj rooj plaub tsis yog tus qauv, nco ntsoov coj qhov no mus rau hauv tus account kom koj tsis tas yuav rov teeb tsa pawg tom qab. Rau txhua tus tswj hwm, cov npe ntawm cov txheej txheem txhawb nqa sib txawv.

software ntawm lub hauv paus

Muaj ntau qhov kev hloov pauv ntawm cov ntawv thov uas tus tswj hwm yog raws li. Cov neeg nyiam yog nginx, traefik, haproxy, envoy. Hauv cov xwm txheej dav dav, nws yuav tsis cuam tshuam ntau npaum li cas cov tsheb thauj mus los tau txais thiab xa mus, tab sis nws yog ib txwm muaj txiaj ntsig kom paub txog cov peev xwm nuances thiab cov yam ntxwv ntawm "hauv qab hood".

Kev khiav tsheb khiav

Nyob rau hauv lub hauv paus ntawm dab tsi nws muaj peev xwm txiav txim siab txog cov kev taw qhia ntawm lub tsheb mus rau ib qho kev pab cuam? Feem ntau cov no yog tus tswv tsev thiab txoj hauv kev, tab sis muaj peev xwm ntxiv.

Namespace hauv ib pawg

Namespace (namespace) - lub peev xwm los faib cov peev txheej hauv Kubernetes (piv txwv li, ntawm theem, ntau lawm, thiab lwm yam). Muaj Ingress controllers uas yuav tsum tau muab tso rau nyias nyob rau hauv txhua lub npe (thiab tom qab ntawd nws tuaj yeem coj cov tsheb khiav tsuas mus rau lub pods ntawm qhov chaw no). Thiab muaj cov (thiab lawv qhov tseeb feem ntau) uas ua haujlwm thoob ntiaj teb rau tag nrho pawg - hauv lawv cov tsheb khiav mus rau txhua lub pod ntawm pawg, tsis hais lub npe chaw.

Samples rau upstreams

Yuav ua li cas kev khiav tsheb mus rau kev noj qab nyob zoo ntawm daim ntawv thov, kev pabcuam? Muaj cov kev xaiv nrog active thiab passive checks, retry, circuit breakers (Yog xav paub ntxiv, saib, piv txwv li, tsab xov xwm hais txog Istio), kev kuaj mob kev cai, thiab lwm yam. Ib qho tseem ceeb heev yog tias koj muaj kev xav tau siab rau kev muaj thiab kev tshem tawm raws sij hawm ntawm cov kev pabcuam ua tsis tau zoo los ntawm kev sib npaug.

Ntsuas algorithms

Muaj ntau txoj kev xaiv: los ntawm cov tsoos puag ncig-ob leeg mus rau qhov txawv rdp-cookie ua, nrog rau tus kheej nta xws li nplaum ntu.

Kev Txhaum Cai

Cov txheej txheem tso cai dab tsi uas tus tswj hwm txhawb nqa? Basic, digest, oauth, external-auth - Kuv xav tias cov kev xaiv no yuav tsum paub. Qhov no yog qhov kev ntsuas tseem ceeb yog tias muaj ntau tus tsim tawm (thiab/lossis tsuas yog ntiag tug) txoj hauv kev uas nkag los ntawm Ingress.

Kev faib tawm

Puas yog tus maub los txhawb nqa xws li kev siv tsheb thauj mus los yooj yim xws li canary rollouts (canary), A / B testing, tsheb mirroring (mirroring / shadowing)? Qhov no yog ib qho mob hnyav heev rau cov ntawv thov uas xav tau kev tswj xyuas kev khiav tsheb kom raug thiab meej rau kev sim ua haujlwm, kev debugging cov khoom lag luam tawm kab (lossis nrog kev poob qis), kev txheeb xyuas tsheb, thiab lwm yam.

Them subscription

Puas muaj kev xaiv them nyiaj rau tus maub los, nrog rau kev ua haujlwm siab heev thiab / lossis kev txhawb nqa?

Graphical user interface (Web UI)

Puas muaj ib qho GUI los tswj kev tswj hwm kev teeb tsa? Feem ntau yog rau "kev siv tes" thiab / lossis rau cov neeg uas yuav tsum tau ua qee qhov kev hloov pauv rau Ingress'a configuration, tab sis ua haujlwm nrog "raws" templates yog tsis yooj yim. Nws tuaj yeem pab tau yog tias cov neeg tsim khoom xav ua qee qhov kev sim nrog kev khiav ntawm ya.

JWT validation

Lub xub ntiag ntawm built-in validation ntawm JSON web tokens rau kev tso cai thiab validation ntawm tus neeg siv mus rau qhov kawg daim ntawv thov.

Muaj peev xwm rau config customization

Template extensibility nyob rau hauv qhov kev nkag siab ntawm muaj mechanisms uas tso cai rau koj ntxiv koj tus kheej cov lus qhia, chij, thiab lwm yam rau tus qauv configuration templates.

Basic DDOS tiv thaiv mechanisms

Yooj yim tus nqi txwv algorithms lossis ntau txoj kev khiav tsheb thauj mus los yooj yim raws li qhov chaw nyob, cov npe dawb, lub tebchaws, thiab lwm yam.

Thov kev taug qab

Lub peev xwm los saib xyuas, taug qab thiab debug thov los ntawm Ingresses rau cov kev pabcuam tshwj xeeb / pods, thiab qhov zoo ntawm cov kev pabcuam / pods ib yam nkaus.

ua waff

kev pab txhawb nqa daim ntawv thov firewall.

Cov tswj

Cov npe ntawm cov tswj tau tsim raws li Cov ntaub ntawv tseem ceeb Kubernetes ΠΈ lub rooj no. Peb tshem tawm qee qhov ntawm lawv los ntawm kev tshuaj xyuas vim qhov tshwj xeeb lossis tsis tshua muaj tshwm sim (thaum ntxov ntawm kev txhim kho). Cov seem yog tham hauv qab no. Cia peb pib nrog cov lus piav qhia dav dav ntawm cov kev daws teeb meem thiab txuas ntxiv nrog lub ntsiab lus.

Ingress los ntawm Kubernetes

lub vas sab: github.com/kubernetes/ingress-nginx
Daim ntawv tso cai: Apache 2.0

Qhov no yog tus tswj hwm rau Kubernetes thiab tab tom tsim los ntawm zej zog. Pom tseeb los ntawm lub npe, nws yog raws li nginx thiab tau ua tiav los ntawm cov txheej txheem sib txawv ntawm Lua plugins siv los siv cov yam ntxwv ntxiv. Vim qhov muaj koob meej ntawm nginx nws tus kheej thiab kev hloov kho me me rau nws thaum siv los ua tus tswj hwm, qhov kev xaiv no yuav yog qhov yooj yim tshaj plaws thiab nkag siab tshaj plaws los teeb tsa los ntawm tus engineer nruab nrab (nrog kev paub hauv web).

Ingress los ntawm NGINX Inc.

lub vas sab: github.com/nginxinc/kubernetes-ingress
Daim ntawv tso cai: Apache 2.0

Cov khoom lag luam ntawm nginx developers. Nws muaj ib tug them version raws li NGINX Plus. Lub tswv yim tseem ceeb yog qib siab ntawm kev ruaj ntseg, tsis tu ncua rov qab sib raug zoo, qhov tsis muaj ib qho kev hloov pauv ntxiv thiab tshaj tawm qhov nrawm nrawm (piv rau tus tswj hwm), ua tiav vim qhov tsis lees paub ntawm Lua.

Cov dawb version yog txo qis, suav nrog txawm tias piv nrog tus tswj hwm (vim tsis muaj tib lub Lua modules). Nyob rau tib lub sijhawm, tus them nyiaj muaj qhov ua haujlwm dav dav ntxiv: kev ntsuas lub sijhawm, JWT siv tau, kuaj xyuas kev noj qab haus huv, thiab ntau dua. Ib qho txiaj ntsig tseem ceeb ntawm NGINX Ingress yog kev txhawb nqa tag nrho rau TCP / UDP tsheb (thiab hauv zej zog version ib yam nkaus!). Tshem tawm - tsis muaj kev faib tawm cov yam ntxwv, uas, txawm li cas los xij, "muaj qhov tseem ceeb tshaj plaws rau cov neeg tsim khoom," tab sis siv sijhawm los siv.

Kong Ingress

lub vas sab: github.com/Kong/kubernetes-ingress-controller
Daim ntawv tso cai: Apache 2.0

Cov khoom tsim los ntawm Kong Inc. nyob rau hauv ob versions: coj mus muag thiab dawb. Raws li nginx, uas tau txuas ntxiv nrog ntau tus Lua modules.

Thaum xub thawj, nws tau tsom mus rau kev ua thiab xa cov lus thov API, i.e. raws li API Gateway, tab sis tam sim no nws tau dhau los ua tus tswj hwm Ingress tag nrho. Cov txiaj ntsig tseem ceeb: ntau cov qauv ntxiv (nrog rau cov los ntawm cov neeg tsim tawm thib peb) uas yooj yim rau nruab thiab teeb tsa thiab nrog kev pab los ntawm kev siv ntau yam ntxiv. Txawm li cas los xij, built-in functions twb muaj ntau txoj hauv kev. Kev teeb tsa txoj haujlwm yog ua tiav siv cov peev txheej CRD.

Ib qho tseem ceeb ntawm cov khoom - ua hauj lwm nyob rau hauv tib lub contour (es tsis txhob cross-namespaced) yog ib tug controversial lub ntsiab lus: rau ib co nws yuav zoo li ib tug tsis zoo (koj yuav tsum tsim cov koom haum rau txhua contour), thiab rau ib tug neeg nws yog ib tug feature ( bΠΎNtau theem ntawm kev cais tawm, xws li yog hais tias ib tug maub los lawm, ces qhov teeb meem yog txwv rau lub Circuit Court ib leeg).

Traefik

lub vas sab: github.com/containous/traefik
Daim ntawv tso cai: MIT

Ib lub npe uas yog tsim los ua haujlwm nrog kev thov rau kev pabcuam microservices thiab lawv qhov chaw nyob. Li no, ntau yam muaj txiaj ntsig zoo: hloov kho qhov teeb tsa yam tsis muaj rebooting txhua, kev txhawb nqa rau ntau txoj hauv kev ntsuas, web interface, metrics forwarding, kev txhawb nqa rau ntau yam kev cai, REST API, canary tso tawm, thiab ntau ntxiv. Lwm qhov zoo tshaj plaws yog kev txhawb nqa rau Let's Encrypt daim ntawv pov thawj tawm ntawm lub thawv. Qhov tsis zoo yog tias txhawm rau txhawm rau txhim kho qhov muaj peev xwm (HA), tus maub los yuav tsum tau nruab thiab txuas nws tus kheej KV cia.

HAPROxy

lub vas sab: github.com/jcmoraisjr/haproxy-ingress
Daim ntawv tso cai: Apache 2.0

HAProxy tau ntev tau paub tias yog tus neeg sawv cev thiab cov khoom sib npaug. Raws li ib feem ntawm Kubernetes pawg, nws muaj qhov "mos" hloov kho tshiab (tsis muaj tsheb khiav), kev pabcuam nrhiav pom raws li DNS, dynamic configuration siv API. Nws tuaj yeem ua kom txaus nyiam kom hloov kho tus qauv config los ntawm kev hloov CM, nrog rau lub peev xwm siv Sprig tsev qiv ntawv ua haujlwm hauv nws. Nyob rau hauv dav dav, lub ntsiab tseem ceeb ntawm kev daws yog nyob rau hauv kev kub ceev, nws optimization thiab efficiency nyob rau hauv cov khoom siv. Qhov kom zoo dua ntawm tus maub los yog kev txhawb nqa ntawm cov ntaub ntawv ntawm ntau txoj kev ntsuas sib txawv.

Voyager

lub vas sab: github.com/appscode/voyager
Daim ntawv tso cai: Apache 2.0

Raws li HAproxy maub los, uas yog positioned raws li ib tug universal kev daws teeb meem uas txhawb ntau yam nta ntawm ib tug loj tus naj npawb ntawm cov chaw muab kev pab. Ib lub sijhawm muaj rau kev ntsuas kev sib tw ntawm L7 thiab L4, thiab ntsuas TCP L4 kev khiav tsheb tag nrho tuaj yeem raug hu ua ib qho tseem ceeb ntawm kev daws teeb meem.

Contour

lub vas sab: github.com/heptio/contour
Daim ntawv tso cai: Apache 2.0

Qhov kev daws teeb meem no tsis yog raws li Envoy: nws tau tsim los ntawm ua ke nrog rau cov neeg sau npe nrov npe no. Ib qho tseem ceeb tshaj plaws yog lub peev xwm los cais tswj cov peev txheej Ingress siv IngressRoute CRD cov peev txheej. Rau cov koom haum uas muaj ntau pab pawg txhim kho siv tib pawg, qhov no yuav pab kom muaj kev ruaj ntseg ntawm kev ua haujlwm nrog cov tsheb khiav hauv cov neeg nyob sib ze thiab tiv thaiv lawv los ntawm kev ua yuam kev thaum hloov Ingress cov peev txheej.

Nws tseem muaj cov txheej txheem txuas ntxiv ntawm kev ntsuas qhov ntsuas (muaj kev thov tsom iav, rov ua dua, thov tus nqi txwv, thiab ntau ntxiv), cov ncauj lus kom ntxaws txog kev khiav tsheb khiav thiab kev ua tsis tiav. Tej zaum rau ib tug neeg nws yuav yog ib qho teeb meem tseem ceeb uas tsis muaj kev txhawb nqa rau kev sib tham nplaum (txawm tias ua haujlwm xa ua).

Qhov Ingress

lub vas sab: istio.io/docs/tasks/traffic-management/cov
Daim ntawv tso cai: Apache 2.0

Ib qho kev pabcuam mesh kev daws teeb meem uas tsis yog tsuas yog Ingress controller uas tswj cov tsheb khiav tawm sab nraud, tab sis kuj tswj tag nrho cov tsheb khiav hauv pawg. Nyob rau hauv lub hood, Envoy yog siv raws li ib tug sidecar proxy rau txhua qhov kev pab cuam. Hauv qhov tseeb, qhov no yog qhov sib xyaw ua ke loj uas "ua tau txhua yam", thiab nws lub tswv yim tseem ceeb yog kev tswj hwm ntau tshaj plaws, kev nthuav dav, kev ruaj ntseg thiab pob tshab. Nrog nws, koj tuaj yeem txhim kho txoj kev tsheb khiav, nkag mus rau kev tso cai ntawm cov kev pabcuam, ntsuas, saib xyuas, canary tso tawm, thiab ntau ntxiv. Nyeem ntxiv txog Istio hauv cov kab lus "Rov qab mus rau microservices nrog Istio".

Ambassador

lub vas sab: github.com/datawire/ambassador
Daim ntawv tso cai: Apache 2.0

Lwm qhov kev daws teeb meem raws li Envoy. Nws muaj dawb thiab coj mus muag versions. Nws yog positioned raws li "tag nrho haiv neeg rau Kubernetes", uas coj qhov zoo sib xws (nruj kev koom ua ke nrog cov txheej txheem thiab cov koom haum ntawm K8s pawg).

sib piv rooj

Yog li, qhov kawg ntawm tsab xov xwm yog lub rooj loj loj no:

Txheej txheem cej luam thiab kev sib piv ntawm Ingress controllers rau Kubernetes

Nws yog clickable rau ib tug ze saib, thiab kuj muaj nyob rau hauv cov hom ntawv Google los xij.

Wb sib sau

Lub hom phiaj ntawm tsab xov xwm no yog los muab kev nkag siab ntau dua (txawm li cas los xij, tsis txhais tau tias tag nrho!) ntawm qhov kev xaiv los ua hauv koj qhov xwm txheej tshwj xeeb. Raws li niaj zaus, txhua tus maub los muaj nws qhov zoo thiab qhov tsis zoo…

Classic Ingress los ntawm Kubernetes yog qhov zoo rau nws qhov muaj thiab muaj pov thawj, nplua nuj txaus nta - nyob rau hauv rooj plaub, nws yuav tsum "muaj txaus rau lub qhov muag". Txawm li cas los xij, yog tias muaj kev xav tau ntau ntxiv rau kev ruaj ntseg, qib ntawm cov yam ntxwv thiab kev txhim kho, koj yuav tsum tau them sai sai rau Ingress nrog NGINX Plus thiab them nyiaj rau kev tso npe. Kong muaj cov txheej txheem nplua nuj tshaj plaws ntawm plug-ins (thiab, raws li, cov hauv kev uas lawv muab), thiab hauv cov ntawv them nyiaj muaj ntau dua ntawm lawv. Nws muaj sijhawm txaus los ua haujlwm raws li API Gateway, kev teeb tsa muaj zog raws li CRD cov peev txheej, nrog rau cov kev pabcuam Kubernetes yooj yim.

Nrog rau kev xav tau ntau ntxiv rau kev sib npaug thiab kev tso cai, saib Traefik thiab HAProxy. Cov no yog Open Source tej yaam num, muaj pov thawj nyob rau hauv lub xyoo, ruaj khov thiab nquag tsim. Contour tau tawm ob peb xyoos tam sim no, tab sis nws tseem zoo li hluas dhau lawm thiab tsuas muaj cov yam ntxwv tseem ceeb ntxiv rau saum Envoy. Yog tias muaj qhov yuav tsum tau muaj rau lub xub ntiag / embedding ntawm WAF nyob rau hauv pem hauv ntej ntawm daim ntawv thov, koj yuav tsum xyuam xim rau tib yam Ingress los ntawm Kubernetes los yog HAProxy.

Thiab cov nplua nuj tshaj plaws ntawm cov yam ntxwv yog cov khoom tsim rau saum Envoy, tshwj xeeb tshaj yog Istio. Nws zoo nkaus li yog ib qho kev daws teeb meem uas "ua tau txhua yam", uas, txawm li cas los xij, kuj txhais tau tias muaj kev nkag siab ntau dua rau kev teeb tsa / tso tawm / kev tswj hwm dua li lwm cov kev daws teeb meem.

Peb tau xaiv thiab tseem siv Ingress los ntawm Kubernetes raws li tus qauv tswj hwm, uas suav nrog 80-90% ntawm kev xav tau. Nws yog heev txhim khu kev qha, yooj yim rau configure thiab nthuav. Feem ntau, thaum tsis muaj cov kev cai tshwj xeeb, nws yuav tsum haum rau feem ntau pawg / kev siv. Ntawm tib yam khoom thoob ntiaj teb thiab cov khoom yooj yim, Traefik thiab HAProxy tuaj yeem pom zoo.

PS

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib