Ingress

gavin.zhou
7 min readJul 3, 2019

--

私の知っている限り、これはKubernetesで利用可能なIngressesの完璧なリストです。技術的にはambassadorはingress ではありませんが、十分優れた機能を見せてくれます。見ていただけばわかるように、機能を比較するためにかなり大きな表を作りました。

この大きな画像をなかなか読めない方のために、直接googleシートを開けられるリンクを下に用意しています。

View the full Google sheet here.

ingressの機能、私自身の経験、そして逸話的なブログの証拠に基づいて、私はそれぞれの項目について私の公平な意見を提供しようとします。

1. 1ingress-nginx

これは一番多くインストールされているであろうingressです。安全で、特に変わった特徴はありませんが、とても役に立つingressです。httpをサポートしていて、httpとssl terminationを行います。またTCP と UDPを動かすこともできますが、Githubの問題を考えるとそれはしない方がよさそうですね。強力なルーティング、ウェブソケットのサポート、基本的な認証およびトレースなど、かなりの数の優れたロードバランスオプションがあります。

SSL証明書を生成する場合はcert-manager、クラウドベースのDNSエントリを更新する場合はexternal-dnと組み合わせてこのingressを使用するのが一般的です。

すごく目新しい発見がないというのは少し残念です。これを自動化するために利用できるコンフィグジェネレーターがありますが、それはあまり優れたものではありません。

注意:今ここで話題に上がっているもので、公式なKubernetes ingressが存在します。またセッティングが異なるNginx corpのIngressもあります。

2. Kong

APIゲートウェイと言えばkongを使っている人が大半だと思います。Kongは通常のIngressが持つ特徴を超えた特徴を持つプラグインシステムを含んでいます。私はこのプラグインシステムを一般的なhttpロードバランサーとしては使いませんが、もしAPI管理機能が必要な時には、Kongを使用するといいでしょう。

以前の職場ではいつもKongとルートされたapi/requestsの前にingressを置いていました。しかし、最近では、Kongの開発者たちはKongをIngressに変えていくような流れになっています。

3. Traefik

ほんとうに多くの機能を持っていることに、すごく驚きました。レジリエンシ―機能は素晴らしいし、テクノロジー関係のブログを色々読みましたが、すごく安定性もあるようです。もし、現在あなたがingress-nginxを使っているのであれば、ダイナミックなコンフィギュアをサポートするということは、大幅なアップグレードになると思います。

4. HAProxy

これは、ロードバランスのアルゴリズムとして考えるとある種のingressと言えるでしょう。これはまたロードバランスのTCP接続においては最適なものです。HAProxyはものすごく安定性のあるソフトウェアとしての実績を誇っています。必要に応じで、有料のサポートサブスクリプションを利用することも可能です。

5. Voyager

そのカバーの下になっているHAProxyベースのもう一つのingressです。Voyagerはすごく優れたパッケージで、doc(ドキュメント)も素晴らしいです。ロードバランスのアルゴリズムがコンフィギュアされているところを確認できていないので、推測でしかありませんが、ラウンドロビンを実行するためにデフォルトになっていると思われます。

6. Contour

EnvoyがベースとなっているContourはCanaryのデプロイのような、よりモダンな特徴を持っています。ロードバランスのアルゴリズムの優れたセットもあり、色々なプロトコルをサポートします。リストアップされている他のものとは異なり、Githubからこれはまだかなり急速な発展の下にあるという印象を受けました。優れたより多くの機能を追加することも検討されています。

7. Ambassador

上記で述べた通り、Kubernetesのより明確な定義においてはAmbassadorは技術的にはingressではありません。Ambassadorを使って、簡単にサービスをアノテートすることができ、トラフィックをルーティングによるingressのような動きをします。Ambassadorは他のingress にはないトラフィック・シャドーイングのような優れた 機能を持っています。トラフィック・シャドーイングのおかげで、リクエストデータをミラーリングすることによって実際の本番環境でのサービスのテストができるようになります。

Ambassador はOpentracing とIstioの両方を上手く統合するのです。

8. Istio Ingress

すでにIstioを走らせているのであれば、これはおそらくデフォルトとしていい選択肢の一つでしょう。Ambassadorの持つ機能より、モダンな機能を備えていいます。遊ぶと楽しいような fault injectionも備わっています。しかし、Istioは現在この分野においてとても多くの業務をこなしていて、IstioはIngressからゲートウェイよりに向かって言っています。そのため、もし5秒ごとに変化しない何かを求めているのであれば、Ambassadorの方を使うとよいと思います。

Istio ingressはクリアテキストからTLSへのリダイレクトや、あなたがあなたのエッジに求める一般的な機能である認証などのの機能をサポートしていません。

9. Gloo Solo

Glooは機能ベースのルーティングや多様なIaaS,FaaS,PaaSプロバイダー全体でのサービスディスカバリーなどのようなユニークな機能を備えています。 サーバーレスの方へ移行しようと思っているのであれば、必須のIngressです。

Summary(まとめ)

今までご紹介したものの中に、明確に「これが一番」というものはありません。というのも、ご自身の状況に応じてingressを選択する必要があるからです。1つのingressが全部をカバーするということはありません。

一番安心できる選択肢としては、ingress-nginxです。これは、一番人気で、信頼できるingressだからです。問題なのは、何か問題が起きたら、みんなが文句を言うことです。Ingress-nginxは99%色々な使用例に対応しており、スイッチする前に開発環境において、「ここで初めて他をテストする」という感じです。始める前に、 このブログを事前に読んでおくことをお勧めします。これから直面するでするであろう問題について詳しく書かれているからです。

Orangesys.ioでは、kuberneteの運用、DevOps、監視のお手伝いをさせていただいています。ぜひ私たちにおまかせください。

--

--

No responses yet