Ringkesan lan perbandingan saka pengontrol Ingress kanggo Kubernetes

Ringkesan lan perbandingan saka pengontrol Ingress kanggo Kubernetes

Nalika ngluncurake kluster Kubernetes kanggo aplikasi tartamtu, sampeyan kudu ngerti apa aplikasi kasebut dhewe, bisnis, lan pangembang kanggo sumber daya iki. Kanthi informasi iki, sampeyan bisa miwiti nggawe keputusan arsitektur lan, utamane, milih pengontrol Ingress tartamtu, sing saiki wis ana akeh. Kanggo entuk ide dhasar babagan pilihan sing kasedhiya tanpa kudu ngliwati akeh artikel / dokumentasi, lsp, kita wis nyiapake ringkesan iki, kalebu pengontrol Ingress utama (siap produksi).

Muga-muga bisa mbantu rekan kerja milih solusi arsitektur - paling ora bakal dadi titik wiwitan kanggo entuk informasi sing luwih rinci lan eksperimen praktis. Sadurunge, kita sinau bahan liyane sing padha ing net lan, aneh, ora nemokake siji liyane utawa kurang lengkap, lan sing paling penting - kabentuk - review. Dadi ayo ngisi kesenjangan kasebut!

Kritéria

Ing asas, kanggo nggawe perbandingan lan entuk asil sing migunani, sampeyan kudu ngerti ora mung area subyek, nanging uga duwe dhaptar kriteria tartamtu sing bakal nyetel vektor riset. Tanpa pura-pura nganalisa kabeh kasus panggunaan Ingress / Kubernetes, kita nyoba nyorot syarat paling umum kanggo pengontrol - disiapake manawa sampeyan kudu sinau kabeh spesifik lan rincian sampeyan kanthi kapisah.

Nanging aku bakal miwiti karo karakteristik sing wis dadi akrab sing dileksanakake ing kabeh solusi lan ora dianggep:

  • panemuan layanan dinamis (penemuan layanan);
  • mandhek SSL;
  • nggarap websockets.

Saiki kanggo titik perbandingan:

Protokol sing didhukung

Salah sawijining kritéria pilihan dhasar. Piranti lunak sampeyan bisa uga ora bisa digunakake ing HTTP standar, utawa mbutuhake sawetara protokol bebarengan. Yen kasus sampeyan ora standar, priksa manawa sampeyan nganggep faktor iki supaya sampeyan ora kudu ngatur maneh kluster mengko. Kanggo kabeh pengontrol, dhaptar protokol sing didhukung beda-beda.

piranti lunak ing inti

Ana sawetara variasi saka aplikasi sing controller adhedhasar. Sing populer yaiku nginx, traefik, haproxy, utusan. Ing kasus umum, bisa uga ora duwe pengaruh akeh babagan carane lalu lintas ditampa lan ditularake, nanging tansah migunani kanggo ngerti nuansa potensial lan fitur apa "ing hood".

Nuntun lalu lintas

Ing basis saka apa sing bisa nggawe keputusan babagan arah lalu lintas menyang layanan tartamtu? Biasane iki inang lan path, nanging ana kemungkinan tambahan.

Namespace ing kluster

Namespace (namespace) - kemampuan kanggo misahake sumber daya ing Kubernetes (contone, ing panggung, produksi, lsp.). Ana pengontrol Ingress sing kudu diinstal kanthi kapisah ing saben ruang jeneng (banjur bisa ngarahake lalu lintas mung menyang polong papan iki). Lan ana sing (lan mayoritas sing jelas) sing bisa digunakake sacara global kanggo kabeh kluster - lalu lintas kasebut diarahake menyang polong kluster, preduli saka papan jeneng.

Sampel kanggo hulu

Kepiye lalu lintas diarahake menyang kasus aplikasi, layanan sing sehat? Ana pilihan kanthi mriksa aktif lan pasif, nyoba maneh, pemutus sirkuit (Kanggo rincian liyane, waca, contone, artikel babagan Istio), implementasine dhewe pemeriksaan kesehatan (pemeriksaan kesehatan khusus), lsp. Parameter sing penting banget yen sampeyan duwe syarat dhuwur kanggo kasedhiyan lan ngilangi layanan sing gagal saka keseimbangan.

Algoritma imbangan

Ana akeh pilihan: saka tradisional robin bunder menyang eksotis rdp-cookie, uga fitur individu kaya sesi caket.

Otentikasi

Apa skema wewenang sing didhukung controller? Dasar, digest, oauth, external-auth - Aku pilihan iki kudu menowo. Iki minangka kritéria penting yen ana akeh pangembang (lan/utawa mung pribadi) puteran sing diakses liwat Ingress.

Distribusi lalu lintas

Apa controller ndhukung mekanisme distribusi lalu lintas sing umum digunakake minangka rollout kenari (kanari), testing A / B, mirroring lalu lintas (mirroring / shadowing)? Iki minangka subyek sing lara banget kanggo aplikasi sing mbutuhake manajemen lalu lintas sing akurat lan tepat kanggo tes produktif, debugging bug produk ing off-line (utawa kanthi mundhut minimal), analisis lalu lintas, lan liya-liyane.

Langganan mbayar

Apa ana pilihan mbayar kanggo controller, karo fungsi majeng lan / utawa technical support?

Antarmuka pangguna grafis (UI Web)

Apa ana GUI kanggo ngatur konfigurasi controller? Utamane kanggo "handiness" lan / utawa kanggo wong-wong sing kudu nggawe sawetara owah-owahan ing konfigurasi Ingress'a, nanging nggarap cithakan "mentah" ora trep. Bisa migunani yen pangembang pengin nindakake sawetara eksperimen karo lalu lintas kanthi cepet.

Validasi JWT

Anane validasi dibangun ing token web JSON kanggo wewenang lan validasi pangguna menyang aplikasi pungkasan.

Kamungkinan kanggo pangaturan dhewe config

Extensibility Cithakan ing pangertèn gadhah mekanisme sing ngijini sampeyan kanggo nambah arahan dhewe, gendera, etc.. kanggo Cithakan konfigurasi standar.

Mekanisme pangayoman dhasar DDOS

Algoritma watesan tarif sing prasaja utawa opsi nyaring lalu lintas sing luwih rumit adhedhasar alamat, daftar putih, negara, lsp.

Njaluk tilak

Kemampuan kanggo ngawasi, trek lan debug panjalukan saka Ingresses menyang layanan tartamtu / pods, lan saenipun antarane layanan / pods banget.

WAF

support firewall aplikasi.

Pengontrol

Dhaptar pengontrol dibentuk adhedhasar dokumentasi resmi Kubernetes и meja iki. Kita ngilangi sawetara saka review amarga spesifik utawa prevalensi kurang (tahap awal pangembangan). Liyane rembugan ing ngisor iki. Ayo dadi miwiti karo gambaran umum saka solusi lan terus karo tabel ringkesan.

Ingress saka Kubernetes

situs web: github.com/kubernetes/ingress-nginx
Lisensi: Apache 2.0

Iki minangka pengontrol resmi kanggo Kubernetes lan dikembangake dening komunitas. Temenan saka jeneng kasebut, adhedhasar nginx lan dilengkapi karo macem-macem plugin Lua sing digunakake kanggo ngetrapake fitur tambahan. Amarga popularitas nginx dhewe lan modifikasi minimal nalika digunakake minangka pengontrol, pilihan iki bisa uga paling gampang lan paling gampang dikonfigurasi kanggo insinyur rata-rata (kanthi pengalaman web).

Ingress dening NGINX Inc.

situs web: github.com/nginxinc/kubernetes-ingress
Lisensi: Apache 2.0

Produk resmi pangembang nginx. Nduwe versi mbayar adhedhasar NGINX Plus. Ide utama yaiku tingkat stabilitas sing dhuwur, kompatibilitas mundur sing tetep, ora ana modul ekstra lan kacepetan tambah sing diumumake (dibandhingake karo pengontrol resmi), sing digayuh amarga ditolak Lua.

Versi gratis dikurangi sacara signifikan, kalebu sanajan dibandhingake karo pengontrol resmi (amarga ora ana modul Lua sing padha). Ing wektu sing padha, sing mbayar duwe fungsi tambahan sing cukup wiyar: metrik wektu nyata, validasi JWT, mriksa kesehatan aktif, lan liya-liyane. Kauntungan penting saka NGINX Ingress yaiku dhukungan lengkap kanggo lalu lintas TCP / UDP (lan ing versi komunitas uga!). Minus - kakurangan saka fitur distribusi lalu lintas, kang, Nanging, "duwe prioritas paling dhuwur kanggo pangembang," nanging njupuk wektu kanggo ngleksanakake.

Kong Ingress

situs web: github.com/Kong/kubernetes-ingress-controller
Lisensi: Apache 2.0

Product dikembangaké dening Kong Inc. ing rong versi: komersial lan gratis. Adhedhasar nginx, sing wis ditambah karo akeh modul Lua.

Kaping pisanan, iki fokus ing pangolahan lan nuntun panjalukan API, i.e. minangka API Gateway, nanging ing wayahe wis dadi kontrol Ingress lengkap. Kauntungan utama: akeh modul tambahan (kalebu saka pangembang pihak katelu) sing gampang diinstal lan dikonfigurasi lan kanthi bantuan macem-macem fitur tambahan sing dileksanakake. Nanging, fungsi sing dibangun wis nawakake akeh kemungkinan. Konfigurasi proyek rampung nggunakake sumber daya CRD.

Fitur penting saka produk - makarya ing kontur sing padha (tinimbang cross-namespaced) minangka topik sing kontroversial: kanggo sawetara bakal katon kaya kerugian (sampeyan kudu ngasilake entitas kanggo saben kontur), lan kanggo wong iku fitur ( bоtingkat luwih saka isolasi, minangka yen siji controller rusak, banjur masalah diwatesi mung sirkuit).

Traefik

situs web: github.com/containous/traefik
Lisensi: MIT

Proksi sing wiwitane digawe kanggo nggarap rute panjalukan kanggo layanan mikro lan lingkungan dinamis. Mula, akeh fitur sing migunani: nganyari konfigurasi tanpa reboot babar pisan, dhukungan kanggo akeh metode balancing, antarmuka web, penerusan metrik, dhukungan kanggo macem-macem protokol, REST API, rilis kenari, lan liya-liyane. Fitur liyane sing apik yaiku dhukungan kanggo sertifikat Ayo Encrypt metu saka kothak. Kerugian yaiku supaya bisa ngatur kasedhiyan dhuwur (HA), pengontrol kudu nginstal lan nyambungake panyimpenan KV dhewe.

HAProxy

situs web: github.com/jcmoraisjr/haproxy-ingress
Lisensi: Apache 2.0

HAProxy wis suwe dikenal minangka proxy lan penyeimbang lalu lintas. Minangka bagéan saka kluster Kubernetes, nawakake nganyari konfigurasi "alus" (tanpa mundhut lalu lintas), panemuan layanan adhedhasar DNS, konfigurasi dinamis nggunakake API. Bisa dadi atraktif kanggo rampung ngatur cithakan config dening ngganti CM, uga kemampuan kanggo nggunakake fungsi perpustakaan Sprig ing. Umumé, penekanan utama solusi kasebut yaiku kacepetan dhuwur, optimasi lan efisiensi sumber daya sing dikonsumsi. Kauntungan saka pengontrol yaiku dhukungan saka sawetara cara imbangan sing beda.

travel

situs web: github.com/appscode/voyager
Lisensi: Apache 2.0

Adhedhasar HAproxy controller, kang dipanggonke minangka solusi universal sing ndhukung sawetara saka sudhut fitur ing nomer akeh panyedhiya. Kesempatan ditawakake kanggo ngimbangi lalu lintas ing L7 lan L4, lan ngimbangi lalu lintas TCP L4 kanthi sakabehe bisa diarani minangka salah sawijining fitur utama solusi kasebut.

Contour

situs web: github.com/heptio/contour
Lisensi: Apache 2.0

Solusi iki ora mung adhedhasar Utusan: dikembangake dening bebarengan karo penulis proxy populer iki. Fitur penting yaiku kemampuan kanggo misahake kontrol sumber daya Ingress nggunakake sumber daya IngressRoute CRD. Kanggo organisasi kanthi akeh tim pangembangan sing nggunakake kluster sing padha, iki mbantu ngoptimalake keamanan kerja karo lalu lintas ing puteran tetanggan lan nglindhungi saka kesalahan nalika ngganti sumber daya Ingress.

Iki uga nawakake macem-macem cara imbangan (ana pangilon saka panjaluk, baleni otomatis, matesi tingkat panjaluk, lan liya-liyane), ngawasi rinci babagan aliran lalu lintas lan gagal. Mbok menawa wong liya bakal dadi kekurangan sing signifikan amarga kekurangan dhukungan kanggo sesi lengket (sanajan karya wis ditindakake).

Istio Ingress

situs web: istio.io/docs/tasks/traffic-management/ingress
Lisensi: Apache 2.0

Solusi bolong layanan lengkap sing ora mung pengontrol Ingress sing ngatur lalu lintas mlebu saka njaba, nanging uga ngontrol kabeh lalu lintas ing kluster. Ing hood, Utusan digunakake minangka proksi sidecar kanggo saben layanan. Intine, iki minangka gabungan gedhe sing "bisa nindakake apa wae", lan ide utamane yaiku manajemen maksimal, ekstensibilitas, keamanan lan transparansi. Kanthi iku, sampeyan bisa nyetel rute lalu lintas, akses wewenang antarane layanan, balancing, ngawasi, rilis kenari, lan liya-liyane. Waca liyane babagan Istio ing seri artikel "Bali menyang microservices karo Istio".

Ambassador

situs web: github.com/datawire/ambassador
Lisensi: Apache 2.0

Solusi liyane adhedhasar Utusan. Wis versi gratis lan komersial. Iki dipanggonke minangka "asli saka Kubernetes", sing nggawa kaluwihan sing cocog (integrasi sing ketat karo metode lan entitas kluster K8s).

Tabel bandhingan

Dadi, puncak artikel kasebut yaiku tabel gedhe:

Ringkesan lan perbandingan saka pengontrol Ingress kanggo Kubernetes

Bisa diklik kanggo tampilan sing luwih cedhak, lan uga kasedhiya ing format kasebut Google Sheets.

Ayo sum wang

Tujuan artikel iki yaiku kanggo menehi pangerten sing luwih lengkap (nanging, ora lengkap!) babagan pilihan sing kudu ditindakake ing kasus tartamtu. Kaya biasane, saben pengontrol duwe kaluwihan lan kekurangan dhewe ...

Ingress klasik saka Kubernetes apik kanggo kasedhiyan lan bukti, fitur sing cukup sugih - ing kasus umum, mesthine "cukup kanggo mripat". Nanging, yen ana syarat tambah kanggo stabilitas, tingkat fitur lan pembangunan, sampeyan kudu mbayar manungsa waé kanggo Ingress karo NGINX Plus lan langganan mbayar. Kong duwe plug-in paling sugih (lan, kanthi mangkono, kesempatan sing disedhiyakake), lan ing versi mbayar, ana luwih akeh. Nduwe kesempatan sing cukup kanggo bisa dadi API Gateway, konfigurasi dinamis adhedhasar sumber daya CRD, uga layanan Kubernetes dhasar.

Kanthi syarat tambah kanggo cara imbangan lan wewenang, deleng Traefik lan HAProxy. Iki minangka proyek Open Source, kabukten ing pirang-pirang taun, stabil banget lan aktif berkembang. Kontur wis sawetara taun saiki, nanging isih katon enom banget lan mung duwe fitur dhasar sing ditambahake ing ndhuwur Utusan. Yen ana syarat kanggo ngarsane / embedding WAF ing ngarep aplikasi, sampeyan kudu menehi perhatian marang Ingress sing padha saka Kubernetes utawa HAProxy.

Lan sing paling sugih babagan fitur yaiku produk sing dibangun ing ndhuwur Utusan, utamane Istio. Iku misale jek dadi solusi komprehensif sing "bisa nindakake apa wae", nanging uga tegese ambang entri sing luwih dhuwur kanggo konfigurasi / peluncuran / administrasi tinimbang solusi liyane.

Kita wis milih lan isih nggunakake Ingress saka Kubernetes minangka controller standar, kang isine 80-90% saka kabutuhan. Iku cukup dipercaya, gampang kanggo ngatur lan nggedhekake. Umumé, yen ora ana syarat khusus, mesthine cocog karo umume klompok / aplikasi. Saka produk universal lan prasaja sing padha, Traefik lan HAProxy bisa disaranake.

PS

Waca uga ing blog kita:

Source: www.habr.com

Add a comment