Барраси ва муқоисаи контроллерҳои Ingress барои Kubernetes

Барраси ва муқоисаи контроллерҳои Ingress барои Kubernetes

Ҳангоми оғоз кардани кластери Kubernetes барои як барномаи мушаххас, шумо бояд фаҳмед, ки худи барнома, тиҷорат ва таҳиягарон ба ин манба чӣ пешниҳод мекунанд. Бо ин маълумот, шумо метавонед қабули қарори меъморӣ ва махсусан интихоби контролери мушаххаси Ingress оғоз кунед, ки имрӯз шумораи онҳо аллакай зиёд аст. Барои ба даст овардани тасаввуроти асосӣ дар бораи имконоти мавҷуда бидуни гузаштан аз мақолаҳои зиёд / ҳуҷҷатҳо ва ғайра, мо ин шарҳро, аз ҷумла контроллерҳои асосии (ба истеҳсол омода) дохил кардаем.

Мо умедворем, ки он ба ҳамкасбон дар интихоби ҳалли меъморӣ кӯмак хоҳад кард - ҳадди аққал он нуқтаи ибтидоӣ барои гирифтани маълумоти муфассал ва таҷрибаҳои амалӣ мегардад. Қаблан, мо дигар маводҳои шабеҳро дар шабака омӯхта будем ва аҷиб он аст, ки ягонтои каму беш мукаммал ва муҳимтар аз ҳама - сохторӣ - баррасиро наёфтем. Пас биёед ин холигоҳро пур кунем!

меъёрњо

Аслан, барои муқоиса кардан ва ба даст овардани ягон натиҷаи муфид, шумо бояд на танҳо мавзӯи мавзӯъро фаҳмед, балки инчунин рӯйхати мушаххаси меъёрҳоеро дошта бошед, ки вектори тадқиқотро муқаррар мекунанд. Бидуни вонамуд кардани таҳлили ҳама ҳолатҳои имконпазири истифодаи Ingress / Kubernetes, мо кӯшиш кардем, ки талаботҳои умумиро барои контроллерҳо қайд кунем - омода бошед, ки дар ҳар сурат шумо бояд тамоми хусусиятҳо ва ҷузъиёти худро алоҳида омӯзед.

Аммо ман бо хусусиятҳое оғоз мекунам, ки ба қадри кофӣ шинос шудаанд, ки онҳо дар ҳама қарорҳо татбиқ карда мешаванд ва ба назар гирифта намешаванд:

  • кашфи динамикии хадамот (кашфи хадамот);
  • қатъи SSL;
  • кор бо websockets.

Акнун барои нуктаҳои муқоиса:

Протоколҳои дастгирӣ

Яке аз меъёрҳои асосии интихоб. Нармафзори шумо метавонад дар HTTP стандартӣ кор накунад, ё он метавонад дар як вақт кор дар якчанд протоколҳоро талаб кунад. Агар парвандаи шумо ғайристандартӣ бошад, боварӣ ҳосил кунед, ки ин омилро ба назар гиред, то ки кластерро дертар аз нав танзим кунед. Барои ҳамаи контроллерҳо, рӯйхати протоколҳои дастгирӣшаванда фарқ мекунад.

нармафзор дар асл

Якчанд вариантҳои барномаҳо мавҷуданд, ки контроллер ба онҳо асос ёфтааст. Маъмултаринҳо nginx, traefik, haproxy, envoy мебошанд. Дар сурати умумӣ, он метавонад ба чӣ гуна қабул ва интиқоли трафик чандон таъсир нарасонад, аммо донистани нозукиҳои эҳтимолӣ ва хусусиятҳои он чизе, ки "дар зери сарпӯш" аст, ҳамеша муфид аст.

Маршрути трафик

Дар асоси чӣ метавон дар бораи самти ҳаракати нақлиёт ба як хидмати мушаххас қарор қабул кард? Одатан, инҳо мизбон ва роҳ мебошанд, аммо имкониятҳои иловагӣ мавҷуданд.

Фазои номҳо дар дохили кластер

Фазои ном (фазои ном) - қобилияти ба таври мантиқӣ тақсим кардани захираҳо дар Кубернетес (масалан, дар саҳна, истеҳсол ва ғайра). Контроллерҳои Ingress мавҷуданд, ки бояд дар ҳар як фазои ном алоҳида насб карда шаванд (ва он гоҳ он метавонад трафикро равона кунад танҳо ба пояхои ин фазо). Ва онҳо (ва аксарияти возеҳи онҳо) ҳастанд, ки дар саросари ҷаҳон барои тамоми кластер кор мекунанд - дар онҳо трафик ба ҳама гуна қуттии кластер, новобаста аз фазои ном равона карда мешавад.

Намунаҳо барои болооб

Чӣ тавр трафик ба мисолҳои солими барнома, хидматҳо равона карда мешавад? Вариантҳо бо санҷишҳои фаъол ва ғайрифаъол, такрорӣ, сӯзандоруҳо мавҷуданд (Барои тафсилоти бештар нигаред, масалан, мақола дар бораи Истио), татбиқи худии санҷишҳои саломатӣ (санҷиши саломатии фармоишӣ) ва ғайра. Параметри хеле муҳим, агар шумо барои дастрасӣ ва сари вақт бартараф кардани хидматҳои ноком аз мувозинат талаботи баланд дошта бошед.

Алгоритмҳои мувозинат

Вариантҳои зиёде мавҷуданд: аз анъанавӣ робин ба экзотикӣ rdp-куки, инчунин хусусиятҳои инфиродӣ монанди сессияҳои часпак.

Сертификатсия

Кадом схемаҳои авторизатсияро контроллер дастгирӣ мекунад? Basic, digest, oauth, external-auth - Ман фикр мекунам, ки ин вариантҳо бояд шинос бошанд. Ин як меъёри муҳим аст, агар бисёр ҳалқаҳои таҳиякунанда (ва/ё танҳо хусусӣ) вуҷуд дошта бошанд, ки тавассути Ingress дастрас карда мешаванд.

Тақсимоти трафик

Оё контроллер чунин механизмҳои маъмулан истифодашавандаи тақсимоти трафикро дастгирӣ мекунад, аз қабили гардиши канарӣ (канария), санҷиши A / B, оинаи трафик (оинакунӣ / соя)? Ин як мавзӯи воқеан дарднок барои барномаҳое мебошад, ки идоракунии дақиқ ва дақиқи трафикро барои санҷиши самаранок, ислоҳи хатогиҳои маҳсулот дар офлайн (ё бо талафоти ҳадди ақал), таҳлили трафик ва ғайра талаб мекунанд.

Обунаи пулакӣ

Оё имкони пулакӣ барои контроллер бо функсияҳои пешрафта ва / ё дастгирии техникӣ вуҷуд дорад?

Интерфейси графикии корбар (Web UI)

Оё ягон GUI барои идора кардани конфигуратсияи контроллер вуҷуд дорад? Асосан барои "дастӣ" ва / ё барои онҳое, ки бояд ба конфигуратсияи Ingress'a баъзе тағирот ворид кунанд, аммо кор бо қолабҳои "хом" нороҳат аст. Ин метавонад муфид бошад, агар таҳиягарон мехоҳанд, ки бо трафик дар парвоз чанд таҷриба гузаронанд.

Санҷиши JWT

Мавҷудияти тасдиқи дарунсохташудаи веб-токенҳои JSON барои авторизатсия ва тасдиқи корбар то барномаи ниҳоӣ.

Имкониятҳо барои мутобиқсозии конфигуратсия

Васеъшавии шаблон ба маънои доштани механизмҳое, ки ба шумо имкон медиҳанд, ки дастурҳои худ, парчамҳо ва ғайраро ба қолибҳои конфигуратсияи стандартӣ илова кунед.

Механизмҳои асосии муҳофизати DDOS

Алгоритмҳои оддии маҳдудияти суръат ё имконоти мураккабтари филтркунии трафик дар асоси суроғаҳо, рӯйхати сафедҳо, кишварҳо ва ғайра.

Дархости пайгирӣ

Имконияти назорат, пайгирӣ ва ислоҳи дархостҳо аз Ingresses ба хидматҳо/подҳо ва идеалӣ байни хидматҳо/подҳо низ.

ваф

таъмин девори барнома.

Назоратчиён

Рӯйхати назоратчиён дар асоси он тартиб дода шуд ҳуҷҷатҳои расмии Kubernetes и ин ҷадвал. Мо баъзеи онҳоро бо сабаби хосият ё паҳншавии паст (марҳилаи аввали рушд) аз баррасии хориҷ кардем. Боқимондаҳо дар поён муҳокима карда мешаванд. Биёед бо тавсифи умумии ҳалли мушкилот оғоз кунем ва бо ҷадвали ҷамъбастӣ идома диҳем.

Воридшавӣ аз Кубернетес

сомона: github.com/kubernetes/ingress-nginx
Литсензия: Apache 2.0

Ин нозири расмии Kubernetes аст ва аз ҷониби ҷомеа таҳия карда мешавад. Аён аст, ки аз ном он ба nginx асос ёфтааст ва бо маҷмӯи гуногуни плагинҳои Lua, ки барои татбиқи хусусиятҳои иловагӣ истифода мешаванд, пурра карда шудааст. Аз сабаби маъруфияти худи nginx ва тағироти ҳадди ақали он ҳангоми истифода ба сифати контроллер, ин интихоб метавонад осонтарин ва осонтарин барои муҳандиси миёна (бо таҷрибаи веб) танзим карда шавад.

Воридшавӣ аз ҷониби NGINX Inc.

сомона: github.com/nginxinc/kubernetes-ingress
Литсензия: Apache 2.0

Маҳсулоти расмии таҳиягарони nginx. Дар асоси версияи пулакӣ дорад NGINX Plus. Идеяи асосӣ ин сатҳи баланди субот, мутобиқати доимии ақибмонда, мавҷуд набудани модулҳои бегона ва суръати афзоиши эълоншуда (нисбат ба контролери расмӣ) мебошад, ки бо сабаби рад кардани Луа ба даст омадааст.

Версияи ройгон ба таври назаррас коҳиш ёфтааст, аз ҷумла дар муқоиса бо контролери расмӣ (аз сабаби набудани ҳамон модулҳои Lua). Ҳамзамон, пулакӣ дорои функсияҳои хеле васеи иловагӣ мебошад: метрикаи вақти воқеӣ, тасдиқи JWT, санҷишҳои фаъоли саломатӣ ва ғайра. Бартарии муҳим нисбат ба NGINX Ingress дастгирии пурраи трафики TCP / UDP мебошад (ва дар версияи ҷомеа низ!). Минус - набудани хусусияти тақсимоти трафик, ки "барои таҳиягарон афзалияти баландтарин дорад", аммо барои татбиқи он вақт лозим аст.

Конгресс

сомона: github.com/Kong/kubernetes-ingress-controller
Литсензия: Apache 2.0

Маҳсулоте, ки аз ҷониби Kong Inc таҳия шудааст. дар ду версия: тиҷоратӣ ва ройгон. Дар асоси nginx, ки бо шумораи зиёди модулҳои Lua васеъ карда шудааст.

Дар ибтидо, он ба коркард ва масири дархостҳои API нигаронида шуда буд, яъне. ҳамчун API Gateway, аммо дар айни замон он як контролери мукаммали Ingress шудааст. Афзалиятҳои асосӣ: бисёр модулҳои иловагӣ (аз ҷумла модулҳои таҳиягарони тарафи сеюм), ки насб кардан ва танзим кардан осонанд ва бо ёрии онҳо доираи васеи хусусиятҳои иловагӣ амалӣ карда мешаванд. Аммо, функсияҳои дарунсохт аллакай имкониятҳои зиёдеро пешниҳод мекунанд. Конфигуратсияи кор бо истифода аз захираҳои CRD анҷом дода мешавад.

Хусусияти муҳими маҳсулот - кор дар як контур (ба ҷои фосилаи байни номҳо) як мавзӯи баҳсбарангез аст: барои баъзеҳо он як камбудӣ ба назар мерасад (шумо бояд барои ҳар як контур объектҳо истеҳсол кунед) ва барои касе ин хусусият аст ( боСатҳи бештари изолятсия, ҳамчун агар як контроллер вайрон шавад, пас мушкилот танҳо бо схема маҳдуд аст).

Трефик

сомона: github.com/containous/traefik
Иҷозатнома: MIT

Прокси, ки аслан барои кор бо масири дархост барои хидматрасониҳои хурд ва муҳити динамикии онҳо сохта шудааст. Аз ин рӯ, бисёр хусусиятҳои муфид: навсозии конфигуратсия бидуни аз нав оғоз кардан, дастгирии шумораи зиёди усулҳои мувозинат, интерфейси веб, интиқоли ченакҳо, дастгирии протоколҳои гуногун, REST API, релизҳои канарӣ ва ғайра. Хусусияти дигари хуб ин дастгирии сертификатҳои Let's Encrypt аз қуттӣ мебошад. Камбудӣ дар он аст, ки барои ташкили дастрасии баланд (HA), контроллер бояд анбори КВ-и худро насб ва пайваст кунад.

HAProxy

сомона: github.com/jcmoraisjr/haproxy-ingress
Литсензия: Apache 2.0

HAProxy дер боз ҳамчун прокси ва мувозинати трафик маълум аст. Ҳамчун як ҷузъи кластери Kubernetes, он навсозии конфигуратсияи "нарм" (бе талафоти трафик), кашфи хидмат дар асоси DNS, конфигуратсияи динамикӣ бо истифода аз API пешниҳод мекунад. Он метавонад ҷолиб бошад, ки қолаби конфигуратсияро тавассути иваз кардани CM, инчунин қобилияти истифода бурдани функсияҳои китобхонаи Sprig дар он. Дар маҷмӯъ, диққати асосии ҳалли он ба суръати баланд, оптимизатсияи он ва самаранокии захираҳои истеъмолшуда мебошад. Бартарии контроллер дастгирии шумораи рекордии усулҳои гуногуни мувозинат мебошад.

Voyager

сомона: github.com/appscode/voyager
Литсензия: Apache 2.0

Дар асоси контроллери HAproxy, ки ҳамчун як ҳалли универсалӣ ҷойгир шудааст, ки доираи васеи хусусиятҳоро дар шумораи зиёди провайдерҳо дастгирӣ мекунад. Имконият барои мувозинати трафик дар L7 ва L4 пешниҳод карда мешавад ва мувозинати трафики TCP L4 дар маҷмӯъ яке аз хусусиятҳои асосии ҳалли масъала номида мешавад.

Контур

сомона: github.com/heptio/contour
Литсензия: Apache 2.0

Ин ҳалли на танҳо ба Envoy асос ёфтааст: онро таҳия кардааст якҷоя бо муаллифони ин прокси маъмул. Хусусияти муҳим ин қобилияти ҷудо кардани назорати захираҳои Ingress бо истифода аз захираҳои IngressRoute CRD мебошад. Барои созмонҳое, ки гурӯҳҳои зиёди таҳиякунанда аз як кластер истифода мебаранд, ин ба ҳадди аксар расонидани амнияти кор бо трафик дар ҳалқаҳои ҳамсоя ва муҳофизати онҳо аз хатогиҳо ҳангоми тағир додани захираҳои Ingress кӯмак мекунад.

Он инчунин маҷмӯи васеи усулҳои мувозинатро пешниҳод мекунад (ойинаи дархостҳо, такрори худкор, маҳдуд кардани суръати дархостҳо ва ғайра), мониторинги муфассали ҷараёни трафик ва нокомиҳо. Эҳтимол, барои касе ин як камбудии назаррас хоҳад буд, набудани дастгирии ҷаласаҳои часпанда (ҳарчанд кор аллакай давом дорад).

Истио Ингресс

сомона: istio.io/docs/tasks/traffic-management/ingress
Литсензия: Apache 2.0

Як ҳалли ҳамаҷонибаи шабакаи хидматрасонӣ, ки на танҳо як контролери Ingress мебошад, ки трафики даромадро аз берун идора мекунад, балки инчунин тамоми трафикро дар дохили кластер назорат мекунад. Дар зери сарпӯш, Envoy ҳамчун прокси ароба барои ҳар як хидмат истифода мешавад. Аслан, ин комбайни калонест, ки «ҳар корро карда метавонад» ва идеяи асосии он ҳадди аксар идоракунӣ, васеъшавӣ, бехатарӣ ва шаффофият мебошад. Бо он, шумо метавонед масири трафикро дуруст танзим кунед, иҷозати дастрасӣ байни хидматҳо, мувозинат, мониторинг, релизҳои канарӣ ва ғайраро танзим кунед. Муфассалтар дар бораи Истио дар силсилаи мақолаҳо »Бозгашт ба microservices бо Istio".

Сафир

сомона: github.com/datawire/ambassador
Литсензия: Apache 2.0

Як ҳалли дигар дар асоси Envoy. Он версияҳои ройгон ва тиҷоратӣ дорад. Он ҳамчун "комилан барои Kubernetes" ҷойгир шудааст, ки бартариҳои мувофиқро меорад (ҳамгироии зич бо усулҳо ва объектҳои кластери K8s).

Ҷадвали ҷадвалӣ

Ҳамин тавр, авҷи мақола ин ҷадвали бузург аст:

Барраси ва муқоисаи контроллерҳои Ingress барои Kubernetes

Он барои дидани наздиктар клик кардан мумкин аст ва инчунин дар формат дастрас аст Google Саҳифаҳо.

Биёед ҷамъ меоем

Мақсади ин мақола таъмин намудани фаҳмиши пурратар аст (аммо, ба ҳеҷ ваҷҳ мукаммал нест!) Дар мавриди интихоби шумо чӣ интихоб кардан лозим аст. Чун маъмулӣ, ҳар як контроллер афзалиятҳо ва нуқсонҳои худро дорад ...

Ingress классикии Kubernetes барои мавҷудият ва исботи он, хусусиятҳои кофӣ бой аст - дар сурати умумӣ, он бояд "барои чашмҳо кофӣ" бошад. Аммо, агар талабот ба субот, сатҳи хусусиятҳо ва рушд зиёд бошад, шумо бояд ба Ingress бо NGINX Plus ва обунаи пулакӣ диққат диҳед. Конг дорои бойтарин маҷмӯи плагинҳо (ва, мувофиқан, имкониятҳое, ки онҳо пешниҳод мекунанд) дорад ва дар версияи пулакӣ ҳатто бештари онҳо мавҷуданд. Он дорои имкониятҳои васеъ барои кор ҳамчун Gateway API, конфигуратсияи динамикӣ дар асоси захираҳои CRD ва инчунин хидматҳои асосии Kubernetes.

Бо талаботи зиёд ба усулҳои мувозинат ва иҷозат, ба Traefik ва HAProxy нигаред. Инҳо лоиҳаҳои кушодаасос мебошанд, ки дар тӯли солҳо собит шудаанд, хеле устувор ва фаъолона инкишоф меёбанд. Контур чанд сол боз берун шудааст, аммо он то ҳол хеле ҷавон ба назар мерасад ва танҳо хусусиятҳои асосиро дар болои Envoy илова кардааст. Агар дар назди барнома талабот оид ба мавҷудият / ҷойгиркунии WAF мавҷуд бошад, шумо бояд ба ҳамон Ingress аз Kubernetes ё HAProxy диққат диҳед.

Ва бойтарин аз ҷиҳати хусусиятҳо маҳсулоте мебошанд, ки дар болои Envoy сохта шудаанд, махсусан Истио. Чунин ба назар мерасад, ки ин як ҳалли ҳамаҷониба аст, ки "ҳама чизро карда метавонад", аммо ин маънои онро дорад, ки ҳадди ниҳоии воридшавӣ барои конфигуратсия / оғоз / маъмурият нисбат ба дигар қарорҳо хеле баланд аст.

Мо Ingress аз Kubernetes-ро ҳамчун контролери стандартӣ интихоб кардем ва ҳоло ҳам истифода мебарем, ки 80-90% эҳтиёҷотро фаро мегирад. Ин хеле боэътимод аст, конфигуратсия кардан ва васеъ кардан осон аст. Умуман, дар сурати мавҷуд набудани талаботи мушаххас, он бояд ба аксари кластерҳо / барномаҳо мувофиқат кунад. Аз ҳамон маҳсулоти универсалӣ ва нисбатан содда, Traefik ва HAProxy тавсия дода мешавад.

PS

Инчунин дар блоги мо хонед:

Манбаъ: will.com

Илова Эзоҳ