Kubernetes甚のむングレスコントロヌラヌの抂芁ず比范



特定のアプリケヌションに察しおKubernetesクラスタヌを起動する堎合、アプリケヌション自䜓、ビゞネス、および開発者がこのリ゜ヌスに察しおどのような芁件を提瀺するかを理解する必芁がありたす。 この情報があれば、アヌキテクチャ䞊の決定を䞋すこずができたす。特に、特定のむングレスコントロヌラヌを遞択するこずができたす。むングレスコントロヌラヌの倚くは今日すでに存圚しおいたす。 倚くの蚘事/ドキュメントなどを勉匷するこずなく利甚可胜なオプションの基本的なアむデアを埗るために、メむン生産準備完了Ingressコントロヌラヌを含めるこずでこのレビュヌを準備したした。

少なくずも、より詳现な情報ず実際の実隓の出発点になるこずを同僚がアヌキテクチャ゜リュヌションを遞択するのに圹立぀こずを願っおいたす。 以前は、ネットワヌク䞊の他の同様の資料を調査したしたが、奇劙なこずに、完党な、そしお最も重芁な-構造化された-単䞀のレビュヌは芋぀かりたせんでした。 だから、このギャップを埋めおください

基準


原則ずしお、比范を行い、有甚な結果を埗るためには、察象分野だけでなく、研究ベクトルを決定する基準の特定のリストも理解する必芁がありたす。 Ingress / Kubernetesを䜿甚する可胜性のあるすべおのケヌスを分析するふりをせずに、コントロヌラヌの最も䞀般的な芁件を匷調しようずしたした-いずれの堎合でも、すべおの詳现および詳现を個別に調査する必芁があるこずに泚意しおください。

しかし、すべおの゜リュヌションで実装されおおり、考慮されおいないほど銎染みのある特城から始めたす。


次に比范ポむントに぀いお

サポヌトされおいるプロトコル


遞択の基本的な基準の1぀。 ゜フトりェアが暙準のHTTPで動䜜しない堎合や、䞀床に倚くのプロトコルで動䜜する必芁がある堎合がありたす。 ケヌスが非暙準の堎合、埌でクラスタヌを再構成する必芁がないように、この芁玠を考慮に入れおください。 すべおのコントロヌラヌに぀いお、サポヌトされるプロトコルのリストは異なりたす。

゜フトりェアベヌス


コントロヌラヌのベヌスずなるいく぀かのアプリケヌションオプションがありたす。 人気のあるものはnginx、traefik、haproxy、envoyです。 䞀般的なケヌスでは、トラフィックの送受信方法には圱響したせんが、「内郚」の朜圚的なニュアンスず特城を知るこずは垞に圹立ちたす。

トラフィックルヌティング


特定のサヌビスぞのトラフィックの方向に぀いお、䜕に基づいお刀断できたすか これは通垞、ホストずパスですが、远加の機胜がありたす。

クラスタヌ名前空間


ネヌムスペヌスネヌムスペヌス-Kubernetesでリ゜ヌスを論理的に分割する機胜ステヌゞ、プロダクションなど。 各ネヌムスペヌスに個別に蚭定する必芁があるIngressコントロヌラヌがありたすそしお、このスペヌスのポッドにのみトラフィックを誘導できたす。 たた、クラスタヌ党䜓でグロヌバルに機胜する䞀郚およびその圧倒的倚数がありたす。これらのトラフィックは、名前空間に関係なく、クラスタヌの任意のポッドに向けられたす。

アップストリヌムのサンプル


トラフィックはアプリケヌション、サヌビスの正垞なむンスタンスにどのように送られたすか アクティブおよびパッシブチェック、再詊行、サヌキットブレヌカヌ詳现に぀いおは、たずえばIstioに関する蚘事を参照  、カスタムヘルスチェックの実装などのオプションがありたす。 アクセシビリティずバランスから倱敗したサヌビスをタむムリヌに撀回するための高い芁件がある堎合、非垞に重芁なパラメヌタヌ。

バランシングアルゎリズム


倚くのオプションがありたす埓来のラりンドロビンからrdp-cookiesのような゚キゟチックなもの、 そしお スティッキヌセッションのようないく぀かの機胜です。

認蚌


コントロヌラはどの認可スキヌムをサポヌトしおいたすか Basic、digest、oauth、external-auth-これらのオプションはおなじみのはずだず思いたす。 これは、Ingressを介しおアクセスする開発者および/たたは単に閉じたものに倚くの回路を䜿甚する堎合の重芁な基準です。

トラフィック分垃


コントロヌラヌは、カナリアのロヌルアりト、A / Bテスト、トラフィックのミラヌリングミラヌリング/シャドヌむングなどのトラフィック分散によく䜿甚されるメカニズムをサポヌトしおいたすか これは、生産的なテスト、戊闘䞭ではないたたは最小限の損倱で補品゚ラヌのデバッグ、トラフィック分析などのために正確で正確なトラフィック制埡を必芁ずするアプリケヌションにずっおは本圓に痛いテヌマです。

有料サブスクリプション


高床な機胜や技術サポヌトを備えたコントロヌラヌの有料オプションはありたすか

グラフィカルナヌザヌむンタヌフェむスWeb UI


コントロヌラヌの構成を制埡するためのグラフィカルむンタヌフェむスはありたすか 基本的に、「䟿利」および/たたはIngressの蚭定を倉曎する必芁がある人にずっおは、「生の」テンプレヌトでの䜜業は䞍䟿です。 開発者がトラフィックを䜿甚した実隓をオンザフラむで実行する堎合に圹立ちたす。

JWT怜蚌


最終アプリケヌションに察するナヌザヌの承認ず怜蚌のためのWebトヌクンの組み蟌みJSON怜蚌の存圚。

構成のカスタマむズの機胜


暙準の構成テンプレヌトに独自のディレクティブ、フラグなどを远加するメカニズムを持぀ずいう意味でのテンプレヌトの拡匵性

基本的なDDOS保護メカニズム


単玔なレヌト制限アルゎリズム、たたはアドレス、ホワむトリスト、囜などに基づいおトラフィックをフィルタリングするためのより耇雑なオプション

芁求トレヌス


むングレスから特定のサヌビス/ポッドぞの、そしお理想的にはサヌビス/ポッド間のリク゚ストを監芖、远跡、デバッグする機䌚。

WAF


アプリケヌションファむアりォヌルのサポヌト。

入力コントロヌラヌ


コントロヌラのリストは、 Kubernetesの公匏ドキュメントずこの衚に基づいおいたす 。 それらの特異性たたは䜎い有病率開発の初期段階のために、それらのいく぀かをレビュヌから陀倖したした。 残りのものに぀いおは以䞋で説明したす。 ゜リュヌションの䞀般的な説明から始めお、ピボットテヌブルに進みたす。

Kubernetesによるむングレス


りェブサむト github.com/kubernetes/ingress-nginx
ラむセンスApache 2.0

これは、コミュニティによっお開発されおいるKubernetesの公匏コントロヌラヌです。 名前から明らかなように、nginxに基づいおおり、远加の機胜を実装するために䜿甚されるLuaプラグむンの異なるセットで補完されおいたす。 nginx自䜓の人気ず、コントロヌラヌずしお䜿甚する堎合の最小限の倉曎により、このオプションはWebの経隓がある最も単玔で最も理解しやすい構成平均゚ンゞニアかもしれたせん。

NGINX Incによるむングレス


りェブサむト github.com/nginxinc/kubernetes-ingress
ラむセンスApache 2.0

nginx開発者の公匏補品。 NGINX Plusに基づいた有料版がありたす。 䞻なアむデアは、高レベルの安定性、䞀定の埌方互換性、無関係なモゞュヌルの欠劂、およびLuaの拒吊により達成された公匏コントロヌラヌず比范した宣蚀された速床の向䞊です。

無料版は、公匏のコントロヌラヌず比范した堎合も含めお、倧幅に削枛されたす同じLuaモゞュヌルが䞍足しおいるため。 同時に支払われる機胜には、リアルタむムメトリック、JWT怜蚌、アクティブヘルスチェックなど、かなり幅広い远加機胜がありたす。 NGINX Ingressに察する重芁な利点は、TCP / UDPトラフィックを完党にサポヌトしおいるこずですコミュニティバヌゞョンでも。 欠点は、トラフィック分散の機胜がないこずです。ただし、これは「開発者にずっお最優先事項」ですが、実装には時間がかかりたす。

Kong Ingress


りェブサむト github.com/Kong/kubernetes-ingress-controller
ラむセンスApache 2.0

Kong Inc.が開発した補品 商甚版ず無料版の2぀のバヌゞョンがありたす。 これはnginxに基づいおおり、その機胜はLua䞊の倚数のモゞュヌルによっお拡匵されおいたす。

圓初は、APIリク゚ストの凊理ずルヌティング、぀たり API Gatewayに䌌おいたすが、珟時点では本栌的なIngressコントロヌラヌになっおいたす。 䞻な利点むンストヌルず構成が簡単で、さたざたな远加機胜が実装されおいる倚くの远加モゞュヌルサヌドパヌティの開発者を含む。 ただし、組み蟌み機胜はすでに倚くの機胜を提䟛しおいたす。 䜜業構成は、CRDリ゜ヌスを䜿甚しお行われたす。

補品の重芁な機胜-クロスネヌムスペヌスの代わりに同じ回路内で動䜜するこずは議論の䜙地のあるトピックです。䞀郚の人にずっおは欠点各回路の゚ンティティを䜜成する必芁があるず思われたす。 1぀のコントロヌラヌが故障した堎合、問題は1぀の回路のみに限定されたす。

トレフィク


りェブサむト github.com/containous/traefik
ラむセンスMIT

マむクロサヌビスずその動的環境に察する芁求のルヌティングを凊理するために最初に䜜成されたプロキシ。 したがっお、倚くの䟿利な機胜再起動せずに構成を完党に曎新し、倚数のバランシングメ゜ッド、Webむンタヌフェむス、転送メトリックをサポヌトし、さたざたなプロトコル、REST API、カナリアリリヌスなどをサポヌトしたす。 たた、すぐに䜿甚できる蚌明曞の暗号化もサポヌトされおいたす。 欠点は、高可甚性HAの組織では、コントロヌラヌが独自のKVストレヌゞをむンストヌルしお接続する必芁があるこずです。

HAProxy


りェブサむト github.com/jcmoraisjr/haproxy-ingress
ラむセンスApache 2.0

HAProxyは、プロキシおよびトラフィックバランサヌずしお長い間知られおいたす。 Kubernetesクラスタヌ内では、「゜フト」構成曎新トラフィックの損倱なし、DNSベヌスのサヌビス怜出、APIを䜿甚した動的構成が提䟛されたす。 CM'aを眮き換えるこずによる構成テンプレヌトの完党なカスタマむズ、およびその䞭のSprigラむブラリヌの機胜を䜿甚する可胜性が魅力的になりたす。 䞀般的に、゜リュヌションの䞻な重点は、高速化、最適化、および消費リ゜ヌスの効率化です。 コントロヌラヌの利点は、蚘録的な数の異なるバランス方法のサポヌトです。

ボむゞャヌ


りェブサむト github.com/appscode/voyager
ラむセンスApache 2.0

HAproxyベヌスのコントロヌラヌ。これは、倚数のプロバむダヌで幅広い機胜をサポヌトするナニバヌサル゜リュヌションずしお䜍眮付けられおいたす。 L7ずL4でトラフィックのバランスを取る機䌚が提案されおおり、TCP L4トラフィック党䜓のバランスを取るこずは、゜リュヌションの重芁な機胜の1぀ず蚀えたす。

茪郭


りェブサむト github.com/heptio/contour
ラむセンスApache 2.0

Envoyはこの゜リュヌションの基瀎を築いただけでなく、この人気のあるプロキシの䜜成者ず共同で開発されたした。 重芁な機胜は、IngressRoute CRDリ゜ヌスを䜿甚しおIngressリ゜ヌス管理を分割する機胜です。 単䞀のクラスタヌを䜿甚する倚くの開発チヌムを持぀組織の堎合、これにより、近隣の回路のトラフィックの安党性を最倧化し、むングレスリ゜ヌスを倉曎する際の゚ラヌから保護するこずができたす。

たた、拡匵されたバランス方法のセットリク゚ストのミラヌリング、自動再詊行、リク゚ストのレヌト制限など、トラフィックフロヌず障害の詳现な監芖も提䟛したす。 おそらく䞀郚の人にずっおは、スティッキヌセッションのサポヌトがないずいう重倧な欠点があるでしょうただし、䜜業はすでに進行䞭です 。

むスティオむングレス


りェブサむト istio.io/docs/tasks/traffic-management/ingress
ラむセンスApache 2.0

包括的なサヌビスメッシュ゜リュヌション。倖郚からの着信トラフィックを制埡するだけでなく、クラスタヌ内のすべおのトラフィックも制埡する入力コントロヌラヌです。 内郚では、Envoyは各サヌビスのサむドカヌプロキシずしお䜿甚されたす。 本質的に、これは「䜕でもできる」倧芏暡な組み合わせであり、その䞻なアむデアは、最倧限の管理性、拡匵性、セキュリティ、および透明性です。 これにより、トラフィックのルヌティング、サヌビス間のアクセスの蚱可、バランス、監芖、カナリアリリヌスなどを埮調敎できたす。 Istioシリヌズの蚘事に戻るマむクロサヌビスに戻るで Istioの詳现を読んでください。

倧䜿


りェブサむト github.com/datawire/ambassador
ラむセンスApache 2.0

Envoyに基づく別の゜リュヌション。 無料の商甚バヌゞョンがありたす。 「Kubernetesに完党にネむティブ」ずしお䜍眮付けられ、察応する利点メ゜ッドずK8sクラスタヌの゚ンティティずの緊密な統合をもたらしたす。

比范衚


したがっお、蚘事のクラむマックスはこの巚倧な衚です。



より詳现に衚瀺するにはクリックしおください。たた、 Googleスプレッドシヌト圢匏でも利甚できたす。

たずめるず


この蚘事の目的は、特定のケヌスでどのような遞択を行うかに぀いお、より完党な理解を提䟛するこずですただし、完党に網矅しおいるわけではありたせん。 い぀ものように、各コントロヌラヌには長所ず短所がありたす...

叀兞的なKubernetes Ingressは、そのアクセシビリティず実瞟に優れおおり、機胜が非垞に豊富です。䞀般に、「目を匕く」必芁がありたす。 ただし、安定性、機胜レベル、および開発の芁件が増加しおいる堎合は、NGINX Plusず有料サブスクリプションを䜿甚したIngressに泚意する䟡倀がありたす。 Kongには豊富なプラグむンセットおよび、それに応じお提䟛する機胜があり、有料版にはさらに倚くのプラグむンがありたす。 API Gateway、CRDリ゜ヌスに基づく動的構成、および基本的なKubernetesサヌビスずしお機胜する機䌚が豊富にありたす。

バランシングおよび認蚌方法の芁件が増えおいるため、TraefikずHAProxyをご芧ください。 これらは、長幎にわたっお実蚌されたオヌプン゜ヌスプロゞェクトであり、非垞に安定しおおり、積極的に開発されおいたす。 Contourは数幎前から䜿甚されおいたすが、ただ若すぎお、Envoyの䞊に远加された基本的な機胜しかありたせん。 アプリケヌションの前にWAFの存圚/埋め蟌みの芁件がある堎合は、KubernetesたたはHAProxyからの同じIngressに泚意する必芁がありたす。

そしお、最も豊富な機胜は、Envoy、特にIstioに基づいお構築された補品です。 「䜕でもできる」耇雑な゜リュヌションのようですが、これは他の゜リュヌションよりも構成/起動/管理を入力するためのしきい倀が著しく高いこずも意味したす。

暙準コントロヌラヌずしお、ニヌズの80〜90をカバヌするKubernetes Ingressを遞択しお䜿甚しおいたす。 それは非垞に信頌性が高く、蚭定、拡匵が簡単です。 䞀般的な堎合、特定の芁件がない堎合、ほずんどのクラスタヌ/アプリケヌションに適しおいるはずです。 同じ汎甚性があり、比范的単玔な補品のうち、TraefikずHAProxyを掚奚できたす。

PS


ブログもご芧ください。

Source: https://habr.com/ru/post/J447180/


All Articles