過去数年間、F5 NGINX はKubernetesジャーニーの成功を支援するために取り組み、さらなるマイルストーンに到達しました。NGINXファミリーに直近で追加された、F5 NGINX Kubernetes Gatewayのアルファ版をリリースしました!
NGINX Kubernetes Gatewayは、仕様から進化した、Kubernetes Gateway API仕様を実装するコントローラーです。Gateway APIは、Kubernetes Network Special Interest Group (SIG- NETWORK)コミュニティによって管理されるオープンソースプロジェクトであり、Kubernetesのサービス ネットワーキングを改善、標準化します。NGINX は、このプロジェクトに積極的に貢献しています。
Kubernetesを積極的に使用しているのであれば、Ingress API オブジェクトおよび多く利用可能な Ingress実装について、既にご存知かもしれません。Gateway APIは、KubernetesアプリとAPI を公開する最新の方法です。現在利用可能なその他のオプションの詳細については、Kubernetes Networking 101を参照してください。
NGINX Kubernetes Gatewayは、Kubernetes Ingress API仕様から進化した、Kubernetes Gateway API仕様を実装するコントローラーです。
1つ目の課題は、元々Ingressリソースが1つのユーザーロール (構成全体を監督するKubernetesオペレーターもしくは管理者)のみを念頭に置いて、設計されていることです。このモデルは、複数のチーム (アプリケーション開発者、プラットフォーム オペレーター、セキュリティ管理者など)が、アプリの開発と配信に際して協力してIngress構成のさまざまな側面を制御する必要があるような、多くの組織には適合しません。Gateway APIは新しいモデルを認識し、ネットワーク構成の制御を複数のロールに簡単に委任できるようにします。
もう1つの課題は、多くの Ingress 実装における、アノテーションとカスタムリソース定義 (CRD)の急増です。CRDを用いることで、さまざまなデータプレーンの機能を利用でき、Ingressリソースには組み込まれていない機能 (ヘッダーベースのマッチング、トラフィックの重み付け、マルチプロトコルのサポートなど)を実装します。Gateway APIは、これらの機能をコアAPI標準の一部として提供します。
Ingressコントローラーの進化として、NGINX Kubernetes Gatewayは、複数のチームが最新の顧客環境でKubernetesインフラストラクチャを管理できるようにするという課題に対処します。また、CRDを実装する必要なく多くの機能を提供することで、導入と管理を簡素化します。NGINX Kubernetes Gatewayは、実績のあるNGINXテクノロジーをデータプレーンとして活用し、業界最高のパフォーマンス、可視性、およびセキュリティを提供します。
NGINX Kubernetes Gatewayは、関連付けられたロール (インフラストラクチャプロバイダー、クラスターオペレーター、アプリケーション開発者)に対するロールベースのアクセス制御 (RBAC)マッピングを使用して、3つの主要なGateway APIリソース (GatewayClass、Gateway、Routes)を標準化します。
さまざまなロールの責任範囲と分離を明確に定義することで、管理が合理化かつ簡素化されます。具体的には、インフラストラクチャプロバイダーがKubernetes クラスターのGatewayClassを定義し、クラスターオペレーターがポリシーを含むクラスター内のGatewayを展開、構成します。その後、アプリケーション開発者が自由にRouteをゲートウェイにアタッチして、アプリケーションを外部に公開できます。
さらにNGINX Kubernetes Gatewayは、大部分のユースケースで組み込みのコア機能を標準化することで、Kubernetes環境でのサービスネットワーキングの導入と管理を簡素化し、CRDの必要性を減らします。NGINX Kubernetes Gatewayアルファ版の実装では、レイヤー7 (HTTPおよびHTTPS)ルーティングによってIngressコントローラー機能を提供することに重点を置いています。レイヤー4ルーティングを含む将来の機能は、コミュニティのフィードバックとユースケースによって推進されます。Gateway APIとNGINX Kubernetes Gatewayの長期的なロードマップは、最終的にIngressコントローラーによって提供される機能のスーパーセットを提供することです。
F5 NGINX Ingress Controllerは、Ingress API仕様を実装してコア機能を提供し、拡張機能のためにカスタム アノテーション、CRD、およびNGINX Ingressリソースを使用します。NGINX Kubernetes GatewayはGateway API仕様に準拠し、実装を簡素化して、サービスネットワーキング構成を扱う組織の役割により適しています。
次の表は、標準の Ingress API、CRDを備えたNGINX Ingress Controller、およびGateway APIの主な機能を概要レベルで比較し、それぞれが提供できる機能を示しています。
機能 | 標準Ingress API | NGINX Ingress Controller + CRD | Gateway API |
---|---|---|---|
API仕様 | Ingress API | Ingress API + CRD | Gateway API |
複数ユーザー管理 | ❌ | ✅ | ✅ |
レイヤー7プロトコル (HTTP/HTTPS, gRPC) | ✅ | ✅ | ✅ |
レイヤー7負荷分散 | ✅ | ✅ | カスタムポリシー |
リクエストルーティング | ✅ | ✅ | ✅ |
リクエスト操作 | 限定的 | ✅ | ✅ |
レスポンス操作 | 限定的 | ✅ | ❌ |
レイヤー4プロトコル (TLS, TCP, UDP) | ❌ | ✅ | ✅ |
レイヤー4負荷分散 | ❌ | ✅ | カスタムポリシー |
許可/拒否リスト | ❌ | ✅ | カスタムポリシー |
証明書の検証 | ❌ | ✅ | カスタムポリシー |
認証 (OIDC) | ❌ | ✅ | カスタムポリシー |
レート制限 | ❌ | ✅ | カスタムポリシー |
NGINX Kubernetes Gatewayは、NGINX Ingress Controllerに取って代わるものではありません。むしろ、Gateway API仕様のアルファリリースに基づく新しいテクノロジーであり、評価のみを目的としており、本番環境での使用を意図したものではありません。NGINX Ingress Controllerは、多くのお客様が本番環境で使用している成熟、安定したテクノロジーです。カスタムアノテーションとCRDを使用して、特定のユースケースに合わせて調整できます。たとえば、ロールベースのアプローチを実装するために、NGINX Ingress ControllerはVirtualServer、VirtualServerRoute、TransportServer、Policyといった、NGINX Ingress リソースを使用します。
私たちはNGINX Kubernetes Gatewayがすぐに NGINX Ingress Controllerに置き換わるとは考えていません。その移行が行われるとしても、数年先になる可能性が高いです。NGINX Ingress Controllerは負荷分散、トラフィック制限、トラフィック分離、セキュリティなど、さまざまな環境やユースケースのNorth-Southネットワークトラフィックを管理する上で、引き続き重要な役割を果たします。
「Gateway API」という名前を「API Gateway」と考えるのは理にかなってはいますが、そうではありません。「API ゲートウェイ / Ingressコントローラー / サービスメッシュをどのように選択するか?」で説明したように、「API Gateway」はさまざまなタイプのプロキシー (最も一般的にはADCまたはロードバランサーとリバースプロキシー、さらにはIngress Controllerもしくはサービスメッシュ)を介して実装可能な、一連のユースケースを表します。つまり、NGINX Ingress Controllerと同様にNGINX Kubernetes Gatewayは、特定のマイクロサービスへのリクエストのルーティング、トラフィックポリシーの実装、カナリアおよびブルーグリーンデプロイメントの有効化など、API Gatewayのユースケースに利用できます。アルファリリースでは、HTTP/HTTPSトラフィックの処理に重点を置いています。今後のリリースで、より多くのプロトコルとユースケースが計画されています。
このすばらしい新技術を評価する準備はできましたか? NGINX Kubernetes Gatewayのアルファリリースを入手してください。
導入手順については、READMEを参照してください。
Gateway APIの仕様の詳細については、Kubernetes Gateway APIのドキュメントを参照してください。
課題の解決と成功を支援できるように、フィードバック、機能のリクエスト、使用例、その他の提案を送信してください。GitHubリポジトリでフィードバックを共有してください。
"This blog post may reference products that are no longer available and/or no longer supported. For the most current information about available F5 NGINX products and solutions, explore our NGINX product family. NGINX is now part of F5. All previous NGINX.com links will redirect to similar NGINX content on F5.com."