Tinjauan sareng ngabandingkeun pangendali Ingress pikeun Kubernetes

Tinjauan sareng ngabandingkeun pangendali Ingress pikeun Kubernetes

Nalika ngaluncurkeun kluster Kubernetes pikeun aplikasi anu khusus, anjeun kedah ngartos naon aplikasi éta sorangan, bisnis, sareng pamekar pose kana sumberdaya ieu. Kalayan inpormasi ieu, anjeun tiasa ngamimitian nyandak kaputusan arsitéktur sareng, khususna, milih pangontrol Ingress khusus, anu parantos aya sajumlah ageung ayeuna. Pikeun kéngingkeun ide dasar tina pilihan anu sayogi tanpa kedah ngaliwat seueur tulisan / dokuméntasi, sareng sajabana, kami parantos nyiapkeun tinjauan ieu, kalebet pangendali Ingress utama (siap produksi).

Kami ngarepkeun éta bakal ngabantosan kolega dina milih solusi arsitéktur - sahenteuna bakal janten titik awal pikeun kéngingkeun inpormasi anu langkung rinci sareng percobaan praktis. Saméméhna, urang diajar bahan sarupa séjénna dina net na, cukup Oddly, teu manggihan hiji leuwih atawa kirang lengkep, sarta paling importantly - terstruktur - review. Ku kituna hayu urang ngeusian jurang éta!

Kritéria

Sacara prinsip, dina raraga nyieun babandingan jeung meunang sagala hasil mangpaat, anjeun kudu ngarti teu ngan wewengkon subjek, tapi ogé boga daptar husus kriteria nu bakal nangtukeun vektor panalungtikan. Tanpa pura-pura nganalisa sadaya kasus anu mungkin pikeun ngagunakeun Ingress / Kubernetes, kami nyobian nyorot sarat anu paling umum pikeun pangendali - siap-siap yén dina sagala hal anjeun kedah diajar sadayana spésifik sareng detail anjeun nyalira.

Tapi kuring bakal ngamimitian ku ciri-ciri anu parantos akrab anu dilaksanakeun dina sadaya solusi sareng henteu dianggap:

  • papanggihan dinamis jasa (jasa kapanggihna);
  • terminasi SSL;
  • gawé bareng websockets.

Ayeuna pikeun titik ngabandingkeun:

protokol dirojong

Salah sahiji kriteria pilihan dasar. Parangkat lunak anjeun tiasa waé henteu tiasa dianggo dina HTTP standar, atanapi peryogi damel dina sababaraha protokol sakaligus. Upami pasualan anjeun henteu standar, pastikeun pikeun tumut kana faktor ieu supados anjeun henteu kedah ngonpigurasi deui klaster engké. Pikeun sadaya pangendali, daptar protokol anu dirojong béda-béda.

software dina inti

Aya sababaraha variasi aplikasi nu controller dumasar kana. Anu populer nyaéta nginx, traefik, haproxy, utusan. Dina kasus umum, éta bisa jadi teu boga loba pangaruh kana kumaha lalulintas ditampi tur dikirimkeun, tapi salawasna mangpaat uninga potensi nuances sarta fitur naon "dina tiung".

Lalulintas routing

Dina dasar naon kasebut nyaéta dimungkinkeun pikeun nyieun kaputusan ngeunaan arah lalulintas ka layanan nu tangtu? Biasana ieu host sareng jalur, tapi aya kamungkinan tambahan.

Namespace dina klaster

Namespace (spasi ngaran) - kamampuan pikeun ngabagi sumber daya sacara logis dina Kubernetes (contona, di panggung, produksi, jsb.). Aya pangendali Ingress anu kedah dipasang sacara misah dina unggal rohangan ngaran (teras tiasa ngarahkeun lalu lintas ngan kana polong rohangan ieu). Sareng aya anu (sareng seuseueurna anu jelas) anu tiasa dianggo sacara global pikeun sakumna kluster - di aranjeunna lalu lintas diarahkeun ka mana-mana pod kluster, henteu paduli ruang ngaran.

Sampel pikeun hulu

Kumaha lalulintas diarahkeun ka instansi sehat tina aplikasi, jasa? Aya pilihan sareng cék aktif sareng pasip, percobaan deui, pemutus sirkuit (Pikeun leuwih rinci, tingali, contona, artikel ngeunaan Istio), palaksanaan sorangan tina cék kaséhatan (custom kaséhatan cék), jsb. Parameter anu penting pisan upami anjeun gaduh syarat anu luhur pikeun kasadiaan sareng panyabutan tepat waktu tina jasa anu gagal tina kasaimbangan.

Algoritma kasaimbangan

Aya seueur pilihan: ti tradisional buleud-robin ka nu aheng rdp-cookie, kitu ogé fitur individu kawas sési caket.

Konfirmasi

Naon skéma otorisasi anu dirojong ku controller? Dasar, digest, oauth, external-auth - Jigana pilihan ieu kedah akrab. Ieu kriteria penting lamun aya loba pamekar (jeung/atawa ngan swasta) loop anu diakses ngaliwatan Ingress.

Distribusi lalulintas

Naha controller ngadukung mékanisme distribusi lalu lintas anu biasa dianggo sapertos rollout kanaria (kanari), uji A / B, mirroring lalu lintas (mirroring / shadowing)? Ieu mangrupikeun subyek anu leres-leres nyeri pikeun aplikasi anu peryogi manajemén lalu lintas anu akurat sareng tepat pikeun uji produktif, debugging bug produk di luar jalur (atanapi kalayan rugi minimal), analisa lalu lintas, sareng sajabana.

Langganan mayar

Naha aya pilihan anu mayar kanggo controller, kalayan fungsionalitas canggih sareng / atanapi dukungan téknis?

Antarbeungeut pamaké grafis (Web UI)

Aya GUI pikeun ngatur konfigurasi controller? Utamana pikeun "handiness" jeung / atawa pikeun maranéhanana anu kudu nyieun sababaraha parobahan dina konfigurasi Ingress'a, tapi gawé bareng template "atah" teu merenah. Bisa jadi mangpaat lamun pamekar rék ngalakukeun sababaraha percobaan kalawan lalulintas on laleur.

validasi JWT

Ayana validasi diwangun tina token wéb JSON pikeun otorisasi sareng validasi pangguna kana aplikasi tungtung.

Kamungkinan pikeun kustomisasi config

Extensibility template dina harti ngabogaan mékanisme nu ngidinan Anjeun pikeun nambahkeun directives sorangan, bandéra, jeung sajabana kana témplat konfigurasi baku.

Mékanisme panyalindungan DDOS dasar

Algoritma wates laju saderhana atanapi pilihan panyaring lalu lintas anu langkung kompleks dumasar kana alamat, daptar bodas, nagara, jsb.

Nyuhunkeun jejak

Kamampuhan pikeun ngawas, ngalacak sareng debug pamundut ti Ingresses ka jasa / pods khusus, sareng idéal antara jasa / pods ogé.

WAF

sokongan firewall aplikasi.

Controllers

Daptar Controllers dibentuk dumasar kana dokuméntasi resmi Kubernetes и méja ieu. Kami ngaluarkeun sababaraha di antarana tina ulasan kusabab spésifisitas atanapi Prévalénsi rendah (tahap awal pangwangunan). Sésana dibahas di handap. Hayu urang mimitian ku katerangan umum ngeunaan solusi sareng teraskeun ku méja kasimpulan.

Ingress ti Kubernetes

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

Ieu mangrupikeun pengontrol resmi pikeun Kubernetes sareng dikembangkeun ku komunitas. Jelas tina nami, éta dumasar kana nginx sareng dilengkepan ku set anu béda tina plugins Lua anu dianggo pikeun nerapkeun fitur tambahan. Kusabab popularitas nginx sorangan sareng modifikasi minimal nalika dianggo salaku pengontrol, pilihan ieu tiasa paling gampang sareng paling gampang dikonpigurasikeun pikeun insinyur rata-rata (kalayan pangalaman wéb).

Ingress ku NGINX Inc.

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

Produk resmi pamekar nginx. Boga versi mayar dumasar kana NGINX Plus. Gagasan utama nyaéta tingkat stabilitas anu luhur, kompatibilitas mundur konstan, henteuna modul extraneous sareng kagancangan anu dinyatakeun (dibandingkeun sareng controller resmi), kahontal kusabab panolakan Lua.

Vérsi bébas nyata ngurangan, kaasup malah lamun dibandingkeun jeung controller resmi (kusabab kurangna modul Lua sarua). Dina waktos anu sami, anu mayar ngagaduhan fungsionalitas tambahan anu lumayan: métrik waktos nyata, validasi JWT, cek kaséhatan aktip, sareng seueur deui. Kauntungan penting pikeun NGINX Ingress nyaéta dukungan pinuh pikeun lalu lintas TCP / UDP (sareng dina versi komunitas ogé!). Minus- henteuna fitur distribution lalulintas, nu kitu, "boga prioritas pangluhurna pikeun pamekar," tapi butuh waktu pikeun nerapkeun.

Kong Ingress

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

Produk dikembangkeun ku Kong Inc. dina dua vérsi: komérsial sareng gratis. Dumasar nginx, anu parantos diperpanjang kalayan sajumlah ageung modul Lua.

Mimitina, ieu fokus kana ngolah jeung routing requests API, i.e. salaku gateway API, tapi di momen eta geus jadi full-fledged Ingress controller. Kauntungan utama: seueur modul tambahan (kalebet ti pamekar pihak katilu) anu gampang dipasang sareng dikonpigurasikeun sareng kalayan bantosan seueur fitur tambahan anu dilaksanakeun. Sanajan kitu, diwangun-di fungsi geus nawarkeun loba kemungkinan. Konfigurasi pakasaban dipigawé ngagunakeun sumberdaya CRD.

Fitur penting produk - damel dina kontur anu sami (tinimbang cross-namespaced) mangrupikeun topik anu kontroversial: pikeun sawaréh éta sigana janten kakurangan (anjeun kedah ngahasilkeun éntitas pikeun tiap kontur), sareng pikeun batur éta fitur ( bоtingkat gede isolasi, siga lamun hiji controller rusak, lajeng masalahna dugi ka sirkuit nyalira).

Traefik

website: github.com/containous/traefik
Lisensi: MIT

Proksi anu mimitina diciptakeun pikeun dianggo sareng rute pamundut pikeun microservices sareng lingkungan dinamisna. Lantaran kitu, seueur fitur anu mangpaat: ngamutahirkeun konfigurasi tanpa rebooting pisan, ngadukung sajumlah metode kasaimbangan, antarmuka wéb, metrics diteruskeun, dukungan pikeun sababaraha protokol, REST API, pelepasan kanari, sareng seueur deui. Fitur anu saé sanésna nyaéta dukungan pikeun sertipikat Let's Encrypt out of the box. Karugianna nyaéta pikeun ngatur kasadiaan anu luhur (HA), pangontrol kedah masang sareng nyambungkeun panyimpenan KV sorangan.

HAProxy

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

HAProxy geus lila dipikawanoh salaku proxy na balancer lalulintas. Salaku bagian tina klaster Kubernetes, nawarkeun update konfigurasi "lemes" (tanpa leungitna lalulintas), kapanggihna jasa dumasar kana DNS, konfigurasi dinamis maké API. Bisa jadi pikaresepeun pikeun sakabéhna ngaropéa template config ku ngaganti CM, kitu ogé kamampuhan pikeun ngagunakeun fungsi perpustakaan Sprig di dinya. Sacara umum, tekenan utama solusi nyaéta dina kecepatan luhur, optimasi sareng efisiensi dina sumber daya anu dikonsumsi. Kauntungannana controller mangrupa rojongan ti jumlah catetan métode balancing béda.

Voyager

website: github.com/appscode/voyager
Lisensi: Apache 2.0

Dumasar HAproxy controller, nu diposisikan salaku solusi universal nu ngarojong rupa-rupa fitur dina angka nu gede ngarupakeun panyadia. Hiji kasempetan ditawarkeun pikeun balancing lalulintas on L7 na L4, sarta balancing lalulintas TCP L4 sakabéhna bisa disebut salah sahiji fitur konci solusi.

Kontur

website: github.com/heptio/contour
Lisensi: Apache 2.0

Solusi ieu henteu ngan ukur dumasar kana Utusan: éta dikembangkeun ku babarengan jeung pangarang proxy populér ieu. Hiji fitur penting nyaéta kamampuhan pikeun misahkeun kontrol sumberdaya Ingress ngagunakeun sumberdaya IngressRoute CRD. Pikeun organisasi sareng seueur tim pamekaran anu nganggo klaster anu sami, ieu ngabantosan ngamaksimalkeun kaamanan damel sareng lalu lintas di loop tatangga sareng ngajagi aranjeunna tina kasalahan nalika ngarobih sumberdaya Ingress.

Éta ogé nawiskeun set metode balancing anu diperpanjang (aya mirroring of requests, auto-repeat, ngawatesan laju requests, sareng seueur deui), ngawaskeun detil aliran lalu lintas sareng kagagalan. Panginten pikeun batur éta bakal janten aral anu signifikan kurangna dukungan pikeun sési caket (sanaos padamelan geus lumangsung).

Istio Ingress

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

Solusi bolong jasa komprehensif anu henteu ngan ukur pangontrol Ingress anu ngatur lalu lintas asup ti luar, tapi ogé ngatur sadaya lalu lintas dina kluster. Di handapeun tiung, Utusan dianggo salaku proksi sidecar pikeun unggal jasa. Intina, ieu mangrupakeun gabungan badag nu "bisa ngalakukeun nanaon", jeung gagasan utama na nyaeta manageability maksimum, extensibility, kaamanan jeung transparansi. Kalayan éta, anjeun tiasa nyéépkeun rute lalu lintas, aksés otorisasi antara jasa, balancing, ngawaskeun, sékrési kanari, sareng seueur deui. Baca langkung seueur ngeunaan Istio dina séri tulisan "Deui ka microservices kalawan Istio".

duta ageng

website: github.com/datawire/ambassador
Lisensi: Apache 2.0

Solusi séjén dumasar kana Utusan. Éta ngagaduhan versi gratis sareng komérsial. Hal ieu diposisikan salaku "pinuhna pituin Kubernetes", nu brings kaunggulan saluyu (integrasi ketat jeung métode jeung éntitas K8s klaster).

Tabél ngabandingkeun

Janten, puncak tulisan nyaéta tabel ageung ieu:

Tinjauan sareng ngabandingkeun pangendali Ingress pikeun Kubernetes

Éta tiasa diklik pikeun tampilan anu langkung caket, sareng ogé sayogi dina formatna Google cadar.

Hayu urang jumlahna

Tujuan tina artikel ieu nyaéta pikeun masihan pamahaman anu langkung lengkep (tapi, henteu lengkep!) ngeunaan pilihan anu kedah dilakukeun dina kasus khusus anjeun. Sakumaha biasa, unggal controller gaduh kaunggulan sareng kalemahan sorangan…

Ingress klasik ti Kubernetes saé pikeun kasadiaan sareng kabuktian, fitur anu cukup beunghar - dina kasus umum, éta kedah "cukup pikeun panon". Nanging, upami aya syarat ningkat pikeun stabilitas, tingkat fitur sareng pamekaran, anjeun kedah nengetan Ingress sareng NGINX Plus sareng langganan anu mayar. Kong boga set richest of plug-in (jeung, sasuai, kasempetan aranjeunna nyadiakeun), sarta dina versi mayar malah leuwih ti aranjeunna. Éta ngagaduhan kasempetan anu ageung pikeun dianggo salaku Gateway API, konfigurasi dinamis dumasar kana sumber daya CRD, sareng jasa Kubernetes dasar.

Kalawan ngaronjat sarat pikeun balancing jeung métode otorisasina, tingali Traefik na HAProxy. Ieu mangrupikeun proyék Open Source, kabuktian salami mangtaun-taun, stabil pisan sareng aktip berkembang. Kontur parantos kaluar sababaraha taun ayeuna, tapi masih katingalina ngora teuing sareng ngan ukur fitur dasar anu ditambahan di luhur Envoy. Upami aya sarat pikeun ayana / embedding WAF di payuneun aplikasi, anjeun kedah nengetan Ingress anu sami ti Kubernetes atanapi HAProxy.

Jeung richest tina segi fitur anu produk diwangun dina luhureun Utusan, utamana Istio. Éta sigana solusi komprehensif anu "tiasa ngalakukeun nanaon", anu ogé hartosna ambang éntri anu langkung luhur pikeun konfigurasi / peluncuran / administrasi tibatan solusi anu sanés.

Kami parantos milih sareng masih nganggo Ingress ti Kubernetes salaku controller standar, anu nyertakeun 80-90% kabutuhan. Éta cukup dipercaya, gampang pikeun ngonpigurasikeun sareng dilegakeun. Sacara umum, upami henteuna sarat khusus, éta kedah cocog sareng kalolobaan klaster / aplikasi. Tina produk anu universal sareng saderhana anu sami, Traefik sareng HAProxy tiasa disarankeun.

PS

Baca ogé dina blog urang:

sumber: www.habr.com

Tambahkeun komentar