Kubernetes üçün Ingress nəzarətçilərinin icmalı və müqayisəsi

Kubernetes üçün Ingress nəzarətçilərinin icmalı və müqayisəsi

Müəyyən bir tətbiq üçün Kubernetes klasterini işə salarkən, proqramın özünün, biznesin və tərtibatçıların bu resurs üçün nə yaratdığını başa düşməlisiniz. Bu məlumatla siz memarlıq qərarı verməyə və xüsusən də bu gün çox sayda olan xüsusi bir Ingress nəzarətçisini seçməyə başlaya bilərsiniz. Bir çox məqalə / sənədləşmə və s. keçmədən mövcud variantlar haqqında əsas fikir əldə etmək üçün əsas (istehsala hazır) Giriş nəzarətçiləri də daxil olmaqla bu icmalı hazırladıq.

Ümid edirik ki, bu, həmkarlarına memarlıq həllini seçməkdə kömək edəcək - ən azı daha ətraflı məlumat və praktik təcrübələr əldə etmək üçün başlanğıc nöqtəsi olacaqdır. Əvvəllər biz şəbəkədə digər oxşar materialları öyrəndik və qəribə də olsa, az və ya çox tam, ən əsası isə strukturlaşdırılmış icmal tapmadıq. Beləliklə, gəlin bu boşluğu dolduraq!

meyarlar

Prinsipcə, müqayisə aparmaq və hər hansı bir faydalı nəticə əldə etmək üçün yalnız mövzu sahəsini deyil, həm də tədqiqat vektorunu təyin edəcək xüsusi meyarlar siyahısına sahib olmalısınız. Ingress / Kubernetes-dən istifadənin bütün mümkün hallarını təhlil etməyə iddia etmədən, nəzarətçilər üçün ən ümumi tələbləri vurğulamağa çalışdıq - hazır olun ki, istənilən halda bütün xüsusiyyətlərinizi və xüsusiyyətlərinizi ayrıca öyrənməli olacaqsınız.

Ancaq mən o qədər tanış olan xüsusiyyətlərdən başlayacağam ki, onlar bütün həllərdə tətbiq olunur və nəzərə alınmır:

  • xidmətlərin dinamik kəşfi (xidmət kəşfi);
  • SSL ləğvi;
  • websockets ilə işləmək.

İndi isə müqayisə üçün:

Dəstəklənən protokollar

Əsas seçim meyarlarından biridir. Proqramınız standart HTTP-də işləməyə bilər və ya birdən çox protokolda işləməyi tələb edə bilər. Əgər işiniz qeyri-standartdırsa, bu amili nəzərə aldığınızdan əmin olun ki, sonradan klasteri yenidən konfiqurasiya etmək məcburiyyətində qalmayasınız. Bütün nəzarətçilər üçün dəstəklənən protokolların siyahısı dəyişir.

əsasda proqram təminatı

Nəzarətçinin əsaslandığı bir neçə tətbiq variantı var. Populyar olanlar nginx, traefik, haproxy, envoydur. Ümumiyyətlə, bu, trafikin necə qəbul edildiyinə və ötürülməsinə çox təsir göstərməyə bilər, lakin "başlıq altında" olanın potensial nüanslarını və xüsusiyyətlərini bilmək həmişə faydalıdır.

Trafik marşrutu

Nəyə əsaslanaraq müəyyən bir xidmətə trafikin istiqaməti barədə qərar vermək olar? Adətən bunlar ev sahibi və yoldur, lakin əlavə imkanlar var.

Klaster daxilində ad sahəsi

Ad sahəsi (ad sahəsi) - Kubernetes-də resursları məntiqi olaraq bölmək imkanı (məsələn, səhnədə, istehsalda və s.). Hər bir ad məkanında ayrıca quraşdırılmalı olan Giriş nəzarətçiləri var (və sonra o, trafiki yönləndirə bilər yalnız bu məkanın podlarına). Bütün klaster üçün qlobal olaraq işləyənlər (və onların aydın əksəriyyəti) var - onlarda trafik ad məkanından asılı olmayaraq klasterin istənilən poduna yönəldilir.

Yuxarı axınlar üçün nümunələr

Trafik tətbiqin, xidmətlərin sağlam nümunələrinə necə yönəldilir? Aktiv və passiv yoxlamalar, təkrar cəhdlər, elektrik açarları olan variantlar var (Ətraflı məlumat üçün, məsələn, baxın, Istio haqqında məqalə), öz sağlamlıq yoxlamalarının həyata keçirilməsi (xüsusi sağlamlıq yoxlamaları) və s. Uğursuz xidmətlərin mövcudluğu və balanslaşdırmadan vaxtında çıxarılması üçün yüksək tələbləriniz varsa, çox vacib bir parametrdir.

Balanslaşdırma alqoritmləri

Bir çox variant var: ənənəvidən yuvarlaq robin ekzotikaya rdp-cookiekimi fərdi xüsusiyyətlər kimi yapışqan seanslar.

İdentifikasiyası

Nəzarətçi hansı icazə sxemlərini dəstəkləyir? Basic, digest, oauth, external-auth - məncə bu variantlar tanış olmalıdır. Ingress vasitəsilə əldə edilən çoxlu inkişaf etdirici (və/və ya sadəcə şəxsi) döngələr varsa, bu vacib meyardır.

Trafik paylanması

Nəzarətçi kanareykalar (kanareykalar), A/B sınağı, trafikin güzgülənməsi (yansıtma/kölgələmə) kimi çox istifadə olunan trafik paylama mexanizmlərini dəstəkləyirmi? Bu, məhsuldar sınaq üçün dəqiq və dəqiq trafik idarəçiliyi, məhsul xətalarını off-line (və ya minimal itki ilə) aradan qaldırmaq, trafik təhlili və s. tələb edən tətbiqlər üçün həqiqətən ağrılı mövzudur.

Ödənişli abunə

Nəzarətçi üçün qabaqcıl funksionallıq və/və ya texniki dəstək olan pullu seçim varmı?

Qrafik istifadəçi interfeysi (Veb UI)

Nəzarətçinin konfiqurasiyasını idarə etmək üçün hər hansı GUI varmı? Əsasən "əllik" və / və ya Ingress'a konfiqurasiyada bəzi dəyişikliklər etməli olanlar üçün, lakin "xam" şablonlarla işləmək əlverişsizdir. Tərtibatçılar sürətlə trafiklə bəzi təcrübələr keçirmək istəsələr faydalı ola bilər.

JWT təsdiqi

İstifadəçinin son tətbiqə qədər avtorizasiyası və doğrulanması üçün JSON veb tokenlərinin daxili təsdiqinin olması.

Konfiqurasiyanın fərdiləşdirilməsi imkanları

Standart konfiqurasiya şablonlarına öz direktivlərinizi, bayraqlarınızı və s. əlavə etməyə imkan verən mexanizmlərə malik olmaq mənasında şablon genişlənməsi.

Əsas DDOS mühafizə mexanizmləri

Ünvanlara, ağ siyahılara, ölkələrə və s. əsaslanan sadə tarif limiti alqoritmləri və ya daha mürəkkəb trafik filtrləmə seçimləri.

İz tələb edin

Xüsusi xidmətlərə/podlara və ideal olaraq xidmətlər/podlar arasında daxil olan sorğuları izləmək, izləmək və sazlamaq imkanı.

SYF

Dəstək proqram firewall.

Nəzarətçilər

Nəzarətçilərin siyahısı əsasında formalaşdırılıb rəsmi Kubernetes sənədləri и bu cədvəl. Onların bəzilərini spesifiklik və ya aşağı yayılma (inkişafın ilkin mərhələsi) səbəbindən nəzərdən keçirmədik. Qalanları aşağıda müzakirə olunur. Həlllərin ümumi təsviri ilə başlayaq və xülasə cədvəli ilə davam edək.

Kubernetesdən giriş

Veb səhifə: github.com/kubernetes/ingress-nginx
Lisenziya: Apache 2.0

Bu, Kubernetes üçün rəsmi nəzarətçidir və cəmiyyət tərəfindən hazırlanır. Adından aydındır ki, o, nginx-ə əsaslanır və əlavə funksiyaları həyata keçirmək üçün istifadə edilən fərqli Lua plaginləri dəsti ilə tamamlanır. Nginx-in populyarlığına və nəzarətçi kimi istifadə edildikdə ona minimal dəyişikliklərə görə, bu seçim orta mühəndis (veb təcrübəsi ilə) üçün konfiqurasiya etmək üçün ən asan və asan ola bilər.

Giriş NGINX Inc.

Veb səhifə: github.com/nginxinc/kubernetes-ingress
Lisenziya: Apache 2.0

Nginx tərtibatçılarının rəsmi məhsulu. əsasında ödənişli versiyası var NGINX Plus. Əsas ideya yüksək sabitlik səviyyəsi, daimi geriyə uyğunluq, heç bir kənar modulların olmaması və Luanın rədd edilməsi səbəbindən əldə edilən elan edilmiş sürətin artmasıdır (rəsmi nəzarətçi ilə müqayisədə).

Pulsuz versiya, o cümlədən rəsmi nəzarətçi ilə müqayisədə (eyni Lua modullarının olmaması səbəbindən) əhəmiyyətli dərəcədə azaldılır. Eyni zamanda, pullu olan kifayət qədər geniş əlavə funksionallığa malikdir: real vaxt göstəriciləri, JWT yoxlaması, aktiv sağlamlıq yoxlamaları və s. NGINX Ingress üzərində mühüm üstünlük TCP / UDP trafikinə tam dəstəkdir (və icma versiyasında da!). Mənfi - yoxluq trafikin paylanması xüsusiyyəti, bununla belə, "inkişafçılar üçün ən yüksək prioritetə ​​malikdir", lakin həyata keçirilməsi üçün vaxt lazımdır.

Konq girişi

Veb səhifə: github.com/Kong/kubernetes-ingress-controller
Lisenziya: Apache 2.0

Kong Inc tərəfindən hazırlanmış məhsul. iki versiyada: kommersiya və pulsuz. Çox sayda Lua modulu ilə genişləndirilmiş nginx-ə əsaslanır.

Başlanğıcda, o, API sorğularının işlənməsi və yönləndirilməsinə yönəldilmişdir, yəni. API Gateway kimi, lakin hazırda tam hüquqlu Giriş nəzarətçisinə çevrilmişdir. Əsas üstünlüklər: quraşdırmaq və konfiqurasiya etmək asan olan və geniş çeşidli əlavə funksiyaların həyata keçirildiyi bir çox əlavə modullar (üçüncü tərəf tərtibatçıları da daxil olmaqla). Bununla belə, daxili funksiyalar artıq bir çox imkanlar təklif edir. İşin konfiqurasiyası CRD resurslarından istifadə etməklə həyata keçirilir.

Məhsulun mühüm xüsusiyyəti - eyni kontur daxilində işləmək (çarpaz adlar yerinə) mübahisəli mövzudur: bəziləri üçün bu, çatışmazlıq kimi görünəcək (hər kontur üçün obyektlər istehsal etməlisiniz), kimsə üçün isə bir xüsusiyyətdir ( bоDaha yüksək səviyyəli izolyasiya, kimi bir nəzarətçi pozulubsa, problem yalnız dövrə ilə məhdudlaşır).

Trafik

Veb səhifə: github.com/containous/traefik
Lisenziya: MIT

Mikroservislər və onların dinamik mühiti üçün sorğu yönləndirməsi ilə işləmək üçün yaradılmış proksi. Beləliklə, bir çox faydalı xüsusiyyətlər: ümumiyyətlə yenidən başlamadan konfiqurasiyanın yenilənməsi, çox sayda balanslaşdırma metodlarına dəstək, veb interfeysi, ölçülərin yönləndirilməsi, müxtəlif protokollara dəstək, REST API, kanareyka buraxılışları və daha çox. Başqa bir gözəl xüsusiyyət, qutudan çıxarılan sertifikatları Şifrələyək dəstəyidir. Dezavantaj odur ki, yüksək əlçatanlığı (HA) təşkil etmək üçün nəzarətçi öz KV anbarını quraşdırmalı və birləşdirməlidir.

HAProxy

Veb səhifə: github.com/jcmoraisjr/haproxy-ingress
Lisenziya: Apache 2.0

HAProxy çoxdan proxy və trafik balanslaşdırıcısı kimi tanınır. Kubernetes klasterinin bir hissəsi kimi o, “yumşaq” konfiqurasiya yeniləməsini (trafik itkisi olmadan), DNS-ə əsaslanan xidmət kəşfini, API istifadə edərək dinamik konfiqurasiyanı təklif edir. CM-ni əvəz etməklə konfiqurasiya şablonunu tamamilə fərdiləşdirmək cəlbedici ola bilər, həmçinin Sprig kitabxana funksiyalarından istifadə etmək imkanı. Ümumiyyətlə, həllin əsas vurğusu yüksək sürətə, onun optimallaşdırılmasına və istehlak olunan resurslarda səmərəliliyə malikdir. Nəzarətçinin üstünlüyü rekord sayda müxtəlif balanslaşdırma üsullarının dəstəklənməsidir.

Voyager

Veb səhifə: github.com/appscode/voyager
Lisenziya: Apache 2.0

Çox sayda provayderdə geniş funksiyaları dəstəkləyən universal həll kimi yerləşdirilmiş HAproxy nəzarətçisinə əsaslanır. L7 və L4-də trafikin balanslaşdırılması imkanı təklif olunur və bütövlükdə TCP L4 trafikinin balanslaşdırılması həllin əsas xüsusiyyətlərindən biri adlandırıla bilər.

Kontur

Veb səhifə: github.com/heptio/contour
Lisenziya: Apache 2.0

Bu həll yalnız Elçiyə əsaslanmır: tərəfindən hazırlanmışdır birgə olaraq bu məşhur proxy müəllifləri ilə. Mühüm xüsusiyyət IngressRoute CRD resurslarından istifadə edərək Ingress resurslarına nəzarəti ayırmaq imkanıdır. Eyni klasterdən istifadə edən çoxlu inkişaf komandaları olan təşkilatlar üçün bu, qonşu döngələrdə trafiklə işləmək təhlükəsizliyini maksimum dərəcədə artırmağa və Giriş resurslarını dəyişdirərkən onları səhvlərdən qorumağa kömək edir.

O, həmçinin balanslaşdırma metodlarının geniş dəstini təklif edir (sorğuların əks olunması, avtomatik təkrarlama, sorğuların sürətinin məhdudlaşdırılması və daha çox şey), trafik axınının və nasazlıqların ətraflı monitorinqi. Bəlkə də kimsə üçün bu, yapışqan seanslar üçün dəstəyin olmaması əhəmiyyətli bir çatışmazlıq olacaq (baxmayaraq ki, iş artıq davam edir).

Istio Ingress

Veb səhifə: istio.io/docs/tasks/traffic-management/ingress
Lisenziya: Apache 2.0

Yalnız xaricdən gələn trafiki idarə edən Ingress nəzarətçisi deyil, həm də klaster daxilində bütün trafikə nəzarət edən hərtərəfli xidmət şəbəkəsi həlli. Başlıq altında, Elçi hər bir xidmət üçün yan avtomobil proxy kimi istifadə olunur. Əslində, bu, "hər şeyi edə bilən" böyük bir kombindir və onun əsas ideyası maksimum idarəolunma, genişlənmə, təhlükəsizlik və şəffaflıqdır. Bununla siz trafikin marşrutunu dəqiq tənzimləyə, xidmətlər arasında avtorizasiyaya giriş, balanslaşdırma, monitorinq, kanareyka buraxılışları və daha çox şey edə bilərsiniz. Istio haqqında daha çox məqalələr silsiləsində oxuyun "Istio ilə mikroservislərə qayıdın.

Səfir

Veb səhifə: github.com/datawire/ambassador
Lisenziya: Apache 2.0

Elçiyə əsaslanan başqa bir həll. Onun pulsuz və kommersiya versiyaları var. Müvafiq üstünlükləri (K8s klasterinin metodları və obyektləri ilə sıx inteqrasiya) gətirən "Tamamilə Kubernetes üçün doğma" kimi yerləşdirilmişdir.

Müqayisə cədvəli

Beləliklə, məqalənin kulminasiyası bu nəhəng cədvəldir:

Kubernetes üçün Ingress nəzarətçilərinin icmalı və müqayisəsi

Daha yaxından baxmaq üçün tıklanabilir və formatda da mövcuddur Google Sehife.

ümumiləşdirmək üçün

Bu məqalənin məqsədi sizin xüsusi işinizdə hansı seçimin ediləcəyini daha tam başa düşməkdir (lakin heç bir halda tam deyil!). Həmişə olduğu kimi, hər bir nəzarətçinin öz üstünlükləri və mənfi cəhətləri var ...

Kubernetes-dən klassik Ingress, mövcudluğu və sübutu, kifayət qədər zəngin xüsusiyyətləri ilə yaxşıdır - ümumi halda, "gözlər üçün kifayət qədər" olmalıdır. Bununla belə, sabitlik, xüsusiyyətlər və inkişaf səviyyəsi üçün artan tələblər varsa, NGINX Plus və ödənişli abunə ilə Ingress-ə diqqət yetirməlisiniz. Konqda ən zəngin plaginlər dəsti (və müvafiq olaraq onların təqdim etdiyi imkanlar) var və pullu versiyada onlardan daha çoxu var. O, API Gateway, CRD resurslarına əsaslanan dinamik konfiqurasiya, eləcə də əsas Kubernetes xidmətləri kimi işləmək üçün geniş imkanlara malikdir.

Balanslaşdırma və avtorizasiya metodlarına artan tələblərlə Traefik və HAProxy-ə nəzər salın. Bunlar illər ərzində sübut edilmiş, çox sabit və aktiv şəkildə inkişaf edən Açıq Mənbəli layihələrdir. Contour artıq bir neçə ildir ki, çıxıb, lakin hələ də çox gənc görünür və Envoy-un üzərinə yalnız əsas funksiyalar əlavə edilib. Tətbiq qarşısında WAF-ın olması / yerləşdirilməsi üçün tələblər varsa, Kubernetes və ya HAProxy-dən eyni Girişə diqqət yetirməlisiniz.

Xüsusiyyətlər baxımından ən zəngin olanlar, Envoy-un, xüsusən də Istio-nun üzərində qurulmuş məhsullardır. Bu, "hər şeyi edə bilən" hərtərəfli bir həll kimi görünür, bununla belə, digər həllər ilə müqayisədə konfiqurasiya / işə salma / idarəetmə üçün əhəmiyyətli dərəcədə yüksək giriş həddi deməkdir.

Biz ehtiyacların 80-90%-ni əhatə edən standart nəzarətçi kimi Kubernetes-dən Ingress-i seçmişik və hələ də istifadə edirik. Kifayət qədər etibarlıdır, konfiqurasiya etmək və genişləndirmək asandır. Ümumiyyətlə, xüsusi tələblər olmadıqda, əksər qruplara / proqramlara uyğun olmalıdır. Eyni universal və nisbətən sadə məhsullardan Traefik və HAProxy tövsiyə oluna bilər.

PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

Добавить комментарий