Trosolwg a chymhariaeth o reolwyr Ingress ar gyfer Kubernetes

Trosolwg a chymhariaeth o reolwyr Ingress ar gyfer Kubernetes

Wrth lansio clwstwr Kubernetes ar gyfer cymhwysiad penodol, mae angen i chi ddeall beth mae'r cymhwysiad ei hun, y busnes, a'r datblygwyr yn ei beri i'r adnodd hwn. Gyda'r wybodaeth hon, gallwch chi ddechrau gwneud penderfyniad pensaernïol ac, yn benodol, dewis rheolydd Ingress penodol, y mae nifer fawr ohono eisoes heddiw. Er mwyn cael syniad sylfaenol o'r opsiynau sydd ar gael heb orfod mynd trwy lawer o erthyglau / dogfennaeth, ac ati, rydym wedi paratoi'r trosolwg hwn, gan gynnwys y prif reolwyr Ingress (parod i gynhyrchu).

Gobeithiwn y bydd yn helpu cydweithwyr i ddewis datrysiad pensaernïol - o leiaf bydd yn dod yn fan cychwyn ar gyfer cael gwybodaeth fanylach ac arbrofion ymarferol. Yn flaenorol, buom yn astudio deunyddiau tebyg eraill ar y we ac, yn rhyfedd ddigon, ni chanfuwyd un adolygiad mwy neu lai cyflawn, ac yn bwysicaf oll - strwythuredig. Felly gadewch i ni lenwi'r bwlch hwnnw!

Meini Prawf

Mewn egwyddor, er mwyn gwneud cymhariaeth a chael unrhyw ganlyniad defnyddiol, mae angen i chi ddeall nid yn unig y maes pwnc, ond hefyd gael rhestr benodol o feini prawf a fydd yn gosod y fector ymchwil. Heb esgus dadansoddi pob achos posibl o ddefnyddio Ingress / Kubernetes, fe wnaethom geisio tynnu sylw at y gofynion mwyaf cyffredinol ar gyfer rheolwyr - byddwch yn barod beth bynnag y bydd yn rhaid i chi astudio'ch holl fanylion a'ch manylion ar wahân.

Ond fe ddechreuaf gyda'r nodweddion sydd wedi dod mor gyfarwydd fel eu bod yn cael eu gweithredu ym mhob datrysiad ac nad ydynt yn cael eu hystyried:

  • darganfod gwasanaethau yn ddeinamig (darganfod gwasanaethau);
  • terfynu SSL;
  • gweithio gyda gwe-socedi.

Nawr am y pwyntiau cymharu:

Protocolau a gefnogir

Un o'r meini prawf dethol sylfaenol. Efallai na fydd eich meddalwedd yn gweithio ar HTTP safonol, neu efallai y bydd angen gweithio ar brotocolau lluosog ar unwaith. Os yw'ch achos yn ansafonol, gwnewch yn siŵr eich bod yn cymryd y ffactor hwn i ystyriaeth fel na fydd yn rhaid i chi ad-drefnu'r clwstwr yn ddiweddarach. Ar gyfer pob rheolydd, mae'r rhestr o brotocolau a gefnogir yn amrywio.

meddalwedd yn y craidd

Mae yna sawl amrywiad o gymwysiadau y mae'r rheolydd yn seiliedig arnynt. Y rhai poblogaidd yw nginx, traefik, haproxy, cennad. Yn yr achos cyffredinol, efallai na fydd yn cael llawer o effaith ar sut mae traffig yn cael ei dderbyn a'i drosglwyddo, ond mae bob amser yn ddefnyddiol gwybod naws a nodweddion posibl yr hyn sydd "o dan y cwfl".

Llwybro traffig

Ar sail yr hyn y mae'n bosibl gwneud penderfyniad ynghylch cyfeiriad y traffig i wasanaeth penodol? Fel arfer gwesteiwr a llwybr yw'r rhain, ond mae posibiliadau ychwanegol.

Gofod enw o fewn clwstwr

Gofod Enw (gofod enwau) - y gallu i rannu adnoddau'n rhesymegol yn Kubernetes (er enghraifft, ar lwyfan, cynhyrchu, ac ati). Mae yna reolwyr Ingress y mae'n rhaid eu gosod ar wahân ym mhob gofod enw (ac yna gall gyfeirio traffig yn unig i godau y gofod hwn). Ac mae yna rai (a'u mwyafrif clir) sy'n gweithio'n fyd-eang ar gyfer y clwstwr cyfan - ynddynt mae traffig yn cael ei gyfeirio at unrhyw god yn y clwstwr, waeth beth fo'r gofod enw.

Samplau ar gyfer i fyny'r afon

Sut mae traffig yn cael ei gyfeirio at enghreifftiau iach o'r cais, gwasanaethau? Mae yna opsiynau gyda gwiriadau gweithredol a goddefol, reries, torwyr cylched (Am ragor o fanylion, gweler, er enghraifft, erthygl am Istio), gwiriadau iechyd personol, ac ati. Paramedr pwysig iawn os oes gennych ofynion uchel o ran argaeledd a chael gwared yn amserol ar wasanaethau a fethwyd rhag cydbwyso.

Algorithmau cydbwyso

Mae yna lawer o opsiynau: o'r traddodiadol robin goch i'r egsotig rdp-cwci, yn ogystal â nodweddion unigol fel sesiynau gludiog.

Dilysu

Pa gynlluniau awdurdodi y mae'r rheolydd yn eu cefnogi? Sylfaenol, crynhoad, oauth, allanol-awdur - rwy'n meddwl y dylai'r opsiynau hyn fod yn gyfarwydd. Mae hwn yn faen prawf pwysig os oes llawer o ddolenni datblygwr (a/neu breifat yn unig) y ceir mynediad iddynt trwy Ingress.

Dosbarthiad traffig

A yw'r rheolydd yn cefnogi mecanweithiau dosbarthu traffig a ddefnyddir yn gyffredin fel cyflwyno caneri (caneri), profion A / B, adlewyrchu traffig (drych / cysgodi)? Mae hwn yn bwnc hynod ddolurus ar gyfer cymwysiadau sy'n gofyn am reoli traffig cywir a manwl gywir ar gyfer profion cynhyrchiol, dadfygio chwilod cynnyrch oddi ar-lein (neu heb fawr o golled), dadansoddi traffig, ac ati.

Tanysgrifiad taledig

A oes opsiwn taledig i'r rheolwr, gydag ymarferoldeb uwch a / neu gefnogaeth dechnegol?

Rhyngwyneb defnyddiwr graffigol (UI Gwe)

A oes unrhyw GUI i reoli cyfluniad rheolydd? Yn bennaf ar gyfer "handiness" a / neu ar gyfer y rhai sydd angen gwneud rhai newidiadau i'r cyfluniad Ingress'a, ond mae gweithio gyda thempledi "amrwd" yn anghyfleus. Gall fod yn ddefnyddiol os yw datblygwyr eisiau cynnal rhai arbrofion gyda thraffig ar y hedfan.

Dilysiad JWT

Presenoldeb dilysiad mewnol o docynnau gwe JSON ar gyfer awdurdodi a dilysu'r defnyddiwr i'r rhaglen derfynol.

Posibiliadau ar gyfer addasu ffurfweddu

Ehangder templed yn yr ystyr o gael mecanweithiau sy'n eich galluogi i ychwanegu eich cyfarwyddebau, fflagiau, ac ati eich hun at dempledi cyfluniad safonol.

Mecanweithiau amddiffyn DDOS sylfaenol

Algorithmau terfyn cyfradd syml neu opsiynau hidlo traffig mwy cymhleth yn seiliedig ar gyfeiriadau, rhestrau gwyn, gwledydd, ac ati.

Cais am olrhain

Y gallu i fonitro, olrhain a dadfygio ceisiadau gan Ingresses i wasanaethau / codennau penodol, ac yn ddelfrydol rhwng gwasanaethau / codennau hefyd.

WAF

Cymorth wal dân cais.

Rheolwyr

Ffurfiwyd y rhestr o reolwyr yn seiliedig ar dogfennaeth swyddogol Kubernetes и y bwrdd hwn. Fe wnaethom eithrio rhai ohonynt o'r adolygiad oherwydd penodoldeb neu fynychder isel (cam datblygu cynnar). Trafodir y gweddill isod. Gadewch i ni ddechrau gyda disgrifiad cyffredinol o'r atebion a pharhau â thabl cryno.

Mynd i mewn o Kubernetes

Gwefan: github.com/kubernetes/ingress-nginx
Trwydded: Apache 2.0

Dyma'r rheolydd swyddogol ar gyfer Kubernetes ac mae'n cael ei ddatblygu gan y gymuned. Yn amlwg o'r enw, mae'n seiliedig ar nginx ac yn cael ei ategu gan set wahanol o ategion Lua a ddefnyddir i weithredu nodweddion ychwanegol. Oherwydd poblogrwydd nginx ei hun ac ychydig iawn o addasiadau iddo pan gaiff ei ddefnyddio fel rheolydd, efallai mai'r opsiwn hwn yw'r hawsaf a'r hawsaf i'w ffurfweddu ar gyfer y peiriannydd cyffredin (gyda phrofiad gwe).

Mynediad gan NGINX Inc.

Gwefan: github.com/nginxinc/kubernetes-ingress
Trwydded: Apache 2.0

Cynnyrch swyddogol datblygwyr nginx. Mae ganddo fersiwn taledig yn seiliedig ar NGINX Byd Gwaith. Y prif syniad yw lefel uchel o sefydlogrwydd, cydnawsedd cyson yn ôl, absenoldeb unrhyw fodiwlau allanol a'r cyflymder cynyddol datganedig (o'i gymharu â'r rheolwr swyddogol), a gyflawnwyd oherwydd gwrthod Lua.

Mae'r fersiwn am ddim yn cael ei leihau'n sylweddol, gan gynnwys hyd yn oed o'i gymharu â'r rheolwr swyddogol (oherwydd diffyg yr un modiwlau Lua). Ar yr un pryd, mae gan yr un cyflogedig swyddogaeth ychwanegol eithaf eang: metrigau amser real, dilysu JWT, gwiriadau iechyd gweithredol, a mwy. Mantais bwysig dros NGINX Ingress yw cefnogaeth lawn i draffig TCP / CDU (ac yn y fersiwn gymunedol hefyd!). Llai - absenoldeb nodwedd dosbarthu traffig, sydd, fodd bynnag, “sydd â'r flaenoriaeth uchaf i ddatblygwyr,” ond yn cymryd amser i'w gweithredu.

Ymosodiad Kong

Gwefan: github.com/Kong/kubernetes-ingress-controller
Trwydded: Apache 2.0

Cynnyrch a ddatblygwyd gan Kong Inc. mewn dwy fersiwn: masnachol a rhad ac am ddim. Yn seiliedig ar nginx, sydd wedi'i ymestyn gyda nifer fawr o fodiwlau Lua.

I ddechrau, roedd yn canolbwyntio ar brosesu a llwybro ceisiadau API, h.y. fel Porth API, ond ar hyn o bryd mae wedi dod yn rheolwr Ingress llawn. Prif fanteision: llawer o fodiwlau ychwanegol (gan gynnwys rhai gan ddatblygwyr trydydd parti) sy'n hawdd eu gosod a'u ffurfweddu a gyda chymorth ystod eang o nodweddion ychwanegol yn cael eu gweithredu. Fodd bynnag, mae swyddogaethau adeiledig eisoes yn cynnig llawer o bosibiliadau. Mae cyfluniad swydd yn cael ei wneud gan ddefnyddio adnoddau CRD.

Nodwedd bwysig o'r cynnyrch - mae gweithio o fewn yr un gyfuchlin (yn lle croes-enw) yn bwnc dadleuol: i rai bydd yn ymddangos fel anfantais (mae'n rhaid i chi gynhyrchu endidau ar gyfer pob cyfuchlin), ac i rywun mae'n nodwedd ( bоLefel uwch o unigedd, fel os yw un rheolydd wedi'i dorri, yna mae'r broblem yn gyfyngedig i'r gylched yn unig).

Traefik

Gwefan: github.com/containous/traefik
Trwydded: MIT

Procsi a grëwyd yn wreiddiol i weithio gyda llwybro ceisiadau ar gyfer microwasanaethau a'u hamgylchedd deinamig. Felly, mae llawer o nodweddion defnyddiol: diweddaru'r cyfluniad heb ailgychwyn o gwbl, cefnogaeth ar gyfer nifer fawr o ddulliau cydbwyso, rhyngwyneb gwe, anfon metrigau ymlaen, cefnogaeth i wahanol brotocolau, REST API, datganiadau caneri, a llawer mwy. Nodwedd braf arall yw cefnogaeth i dystysgrifau Let's Encrypt allan o'r bocs. Yr anfantais yw, er mwyn trefnu argaeledd uchel (HA), y bydd angen i'r rheolwr osod a chysylltu ei storfa KV ei hun.

HAProxy

Gwefan: github.com/jcmoraisjr/haproxy-ingress
Trwydded: Apache 2.0

Mae HAProxy wedi cael ei adnabod ers amser maith fel dirprwy a chydbwysedd traffig. Fel rhan o glwstwr Kubernetes, mae'n cynnig diweddariad cyfluniad “meddal” (heb golli traffig), darganfod gwasanaeth yn seiliedig ar DNS, cyfluniad deinamig gan ddefnyddio API. Gall fod yn ddeniadol addasu'r templed ffurfweddu yn llwyr trwy ddisodli'r CM, yn ogystal â'r gallu i ddefnyddio swyddogaethau llyfrgell Sprig ynddo. Yn gyffredinol, mae prif bwyslais yr ateb ar gyflymder uchel, ei optimeiddio a'i effeithlonrwydd o ran adnoddau a ddefnyddir. Mantais y rheolydd yw cefnogaeth y nifer uchaf erioed o wahanol ddulliau cydbwyso.

Voyager

Gwefan: github.com/appscode/voyager
Trwydded: Apache 2.0

Yn seiliedig ar reolwr HAproxy, sydd wedi'i leoli fel datrysiad cyffredinol sy'n cefnogi ystod eang o nodweddion ar nifer fawr o ddarparwyr. Cynigir cyfle i gydbwyso traffig ar L7 ac L4, a gellir galw cydbwyso traffig TCP L4 yn ei gyfanrwydd yn un o nodweddion allweddol yr ateb.

Cyfuchlin

Gwefan: github.com/heptio/cyfuchlin
Trwydded: Apache 2.0

Mae'r ateb hwn nid yn unig yn seiliedig ar Envoy: fe'i datblygwyd gan ar y cyd gydag awduron y dirprwy poblogaidd hwn. Nodwedd bwysig yw'r gallu i wahanu rheolaeth adnoddau Ingress gan ddefnyddio adnoddau CRD IngressRoute. Ar gyfer sefydliadau sydd â llawer o dimau datblygu sy'n defnyddio'r un clwstwr, mae hyn yn helpu i wneud y mwyaf o ddiogelwch gweithio gyda thraffig mewn dolenni cyfagos a'u hamddiffyn rhag gwallau wrth newid adnoddau Ingress.

Mae hefyd yn cynnig set estynedig o ddulliau cydbwyso (mae yna adlewyrchu ceisiadau, ailadrodd yn awtomatig, cyfyngu ar gyfraddau ceisiadau, a llawer mwy), monitro llif traffig a methiannau'n fanwl. Efallai i rywun y bydd yn anfantais sylweddol y diffyg cefnogaeth ar gyfer sesiynau gludiog (er bod y gwaith eisoes ar y gweill).

Istio Ingress

Gwefan: istio.io/docs/tasks/traffic-management/ingress
Trwydded: Apache 2.0

Datrysiad rhwyll gwasanaeth cynhwysfawr sydd nid yn unig yn rheolydd Ingress sy'n rheoli traffig sy'n dod i mewn o'r tu allan, ond sydd hefyd yn rheoli'r holl draffig o fewn y clwstwr. O dan y cwfl, defnyddir Envoy fel dirprwy car ochr ar gyfer pob gwasanaeth. Yn ei hanfod, mae hwn yn gyfuniad mawr sy'n “gallu gwneud unrhyw beth”, a'i brif syniad yw hydrinedd, estynadwyedd, diogelwch a thryloywder mwyaf posibl. Ag ef, gallwch chi fireinio llwybrau traffig, cael mynediad at awdurdodiad rhwng gwasanaethau, cydbwyso, monitro, rhyddhau caneri, a llawer mwy. Darllenwch fwy am Istio yn y gyfres o erthyglau "Yn ôl i microservices gydag Istio'.

Llysgennad

Gwefan: github.com/datawire/ambassador
Trwydded: Apache 2.0

Ateb arall yn seiliedig ar Envoy. Mae ganddo fersiynau rhad ac am ddim a masnachol. Mae wedi'i leoli fel "hollol frodorol i Kubernetes", sy'n dod â'r manteision cyfatebol (integreiddio tynn â dulliau ac endidau clwstwr K8s).

Tabl cymharu

Felly, penllanw'r erthygl yw'r tabl enfawr hwn:

Trosolwg a chymhariaeth o reolwyr Ingress ar gyfer Kubernetes

Gellir ei glicio i gael golwg agosach, ac mae hefyd ar gael yn y fformat Taflenni Google.

Gadewch i ni grynhoi

Pwrpas yr erthygl hon yw darparu dealltwriaeth fwy cyflawn (fodd bynnag, nid yw'n gynhwysfawr o bell ffordd!) o ba ddewis i'w wneud yn eich achos penodol chi. Yn ôl yr arfer, mae gan bob rheolwr ei fanteision a'i anfanteision ei hun ...

Mae'r Ingress clasurol o Kubernetes yn dda am ei argaeledd a'i darddiad, nodweddion digon cyfoethog - yn yr achos cyffredinol, dylai fod yn "ddigon i'r llygaid". Fodd bynnag, os oes gofynion cynyddol ar gyfer sefydlogrwydd, lefel y nodweddion a datblygiad, dylech roi sylw i Ingress gyda NGINX Plus a thanysgrifiad taledig. Mae gan Kong y set gyfoethocaf o ategion (ac, yn unol â hynny, y cyfleoedd y maent yn eu darparu), ac yn y fersiwn taledig mae hyd yn oed mwy ohonynt. Mae ganddo ddigon o gyfleoedd i weithio fel Porth API, cyfluniad deinamig yn seiliedig ar adnoddau CRD, yn ogystal â gwasanaethau Kubernetes sylfaenol.

Gyda gofynion cynyddol ar gyfer dulliau cydbwyso ac awdurdodi, edrychwch ar Traefik a HAProxy. Mae'r rhain yn brosiectau Ffynhonnell Agored, wedi'u profi dros y blynyddoedd, yn sefydlog iawn ac yn datblygu'n weithredol. Mae Contour wedi bod allan ers cwpl o flynyddoedd bellach, ond mae'n dal i edrych yn rhy ifanc a dim ond nodweddion sylfaenol sydd wedi'u hychwanegu ar ben Envoy. Os oes gofynion ar gyfer presenoldeb / gwreiddio WAF o flaen y cais, dylech roi sylw i'r un Ingress gan Kubernetes neu HAProxy.

A'r cyfoethocaf o ran nodweddion yw cynhyrchion a adeiladwyd ar ben Envoy, yn enwedig Istio. Mae'n ymddangos ei fod yn ateb cynhwysfawr sy'n "gallu gwneud unrhyw beth", sydd, fodd bynnag, hefyd yn golygu trothwy mynediad sylweddol uwch ar gyfer cyfluniad / lansio / gweinyddu nag atebion eraill.

Rydym wedi dewis ac yn dal i ddefnyddio Ingress o Kubernetes fel rheolydd safonol, sy'n cwmpasu 80-90% o anghenion. Mae'n eithaf dibynadwy, yn hawdd ei ffurfweddu a'i ehangu. Yn gyffredinol, yn absenoldeb gofynion penodol, dylai fod yn addas ar gyfer y rhan fwyaf o glystyrau / ceisiadau. O'r un cynhyrchion cyffredinol a chymharol syml, gellir argymell Traefik a HAProxy.

PS

Darllenwch hefyd ar ein blog:

Ffynhonnell: hab.com

Ychwanegu sylw