Traefik vs Nginx Ingress: K8sのIngress選び
TraefikはネイティブなCRDとmiddlewareを備えた動的なingress controller。Nginx Ingress Controllerは、実績あるNginxをKubernetesのIngressの背後にラップします。
どちらもKubernetesのingress controllerです。TraefikはIngressオブジェクトと独自のIngressRoute CRDを通じてルーティングを動的に設定し、middleware、dashboard、自動TLSを提供します。Nginx Ingress ControllerはIngressリソースとannotationからNginxの設定を生成し、Nginxの成熟度とパフォーマンスに依拠します。TraefikはモダンなCRD駆動モデルを、Nginx Ingressは実証済みのNginxの挙動を重視します。
| Traefik | Nginx Ingress | |
|---|---|---|
| 設定モデル | Ingress + CRD | Ingress + annotation |
| Middleware | ネイティブ | annotation/snippet経由 |
| TLS | 自動 | cert-manager |
| 成熟度 | モダン | 非常に広く導入済み |
| 最適な用途 | CRD駆動の動的ルーティング | K8sでの実証済みNginx |
ユースケースと設定
Traefikは、ネイティブなCRD、middleware、TLS自動内蔵のクリーンな動的モデルを求めるチームに適しています。Nginx Ingressは、Nginxの挙動、最大のコミュニティ、annotationや設定snippetによるきめ細かい制御を求めるチームに適しており、通常はTLSのためにcert-managerと組み合わせます。
CIとdeployにおいて
どちらもHelmでインストールします。CIでmanifestを検証し、kindクラスタに対してsmoke testを実行しましょう。いずれもマネージドrunnerからdeployでき、より高速なrunnerはHelmインストールとクラスタベースの統合テストを高速化します。
結論
ネイティブなCRD、middleware、TLS内蔵の動的設定ならTraefik。実証済みのNginxの挙動、最も広いコミュニティ、annotationベースの制御ならNginx Ingress。どちらも堅実なデフォルトです。TraefikのCRDを好むか、慣れ親しんだNginxのセマンティクスを好むかで選びましょう。