MSE Ingress は、MSE クラウドネイティブゲートウェイと Container Service for Kubernetes (ACK) の緊密な統合に基づいて構築されており、クラスター内の Service への外部からアクセス可能な API オブジェクトを管理し、レイヤー 7 負荷分散、カナリアリリース、および強化されたクラスター Ingress トラフィック管理を提供します。
Kubernetes の Pod、Service、および Ingress リソースに関する基本的な知識があることを前提としています。
前提条件
以下が必要です。
-
ACK または ACK Serverless クラスター
-
クラスターにインストールされた MSE Ingress コントローラー
-
MseIngressConfig カスタムリソース定義 (CRD) を介してプロビジョニングされた MSE クラウドネイティブゲートウェイ
仕組み
次の図は、クライアントからバックエンド Pod へのリクエストフローを示しています。
概要は次のとおりです。
-
MSE Ingress コントローラーは MseIngressConfig CRD を監視し、複数のクラウドネイティブゲートウェイのライフサイクルを管理します。
-
各ゲートウェイのコントロールプレーンは、ACK API サーバーを介して Ingress、Ingress クラス、および Service を監視します。これらのリソースに変更があると、更新されたルーティングルールをリアルタイムでデータプレーンにプッシュします。
-
データプレーンは、受信した各リクエストをルーティングルールと照合し、適切なバックエンド Service の Pod に転送します。
基本概念
| 概念 | 説明 |
|---|---|
| Service | レプリケートされた Pod のグループにデプロイされたアプリケーションの抽象化です。 |
| Ingress | HTTP または HTTPS リクエストを、ホスト名や URL パスなどに基づいて Service にルーティングするリバースプロキシルールです。 |
| Ingress クラス | 特定の Ingress を処理する Ingress プロセッサを宣言します。MSE ベースのトラフィック管理を行うには、MseIngressConfig CRD を IngressClass の parameters フィールドに関連付けます。 |
| MseIngressConfig | MSE Ingress コントローラーが提供する CRD です。MSE クラウドネイティブゲートウェイの基本設定を定義します。 |
| MSE Ingress コントローラー | ACK クラスターにインストールされるコントロールプレーンアドオンです。MSE クラウドネイティブゲートウェイの設定を管理します。 |
| MSE クラウドネイティブゲートウェイ | MseIngressConfig CRD からプロビジョニングされたゲートウェイです。コントロールプレーン (ルーティングルール管理) とデータプレーン (トラフィック処理) で構成されています。 |
MSE Ingress を使用する理由
Kubernetes クラスターでは、Ingress は Service への外部アクセスの主要なエントリーポイントであり、ほとんどのインバウンドサービストラフィックを処理します。標準の Kubernetes Ingress は HTTP ルーティングルールのみをサポートします。負荷分散アルゴリズムやセッションアフィニティなどの機能には、Ingress コントローラーが必要です。
MSE クラウドネイティブゲートウェイに基づいて構築された MSE Ingress は、標準の Kubernetes Ingress を拡張し、NGINX Ingress にはない機能を提供します。
| 機能 | 標準の Kubernetes Ingress | NGINX Ingress | MSE Ingress |
|---|---|---|---|
| HTTP ルーティングルール | あり | あり | あり |
| 負荷分散アルゴリズム | なし | あり | あり |
| セッションアフィニティ | なし | あり | あり |
| カナリアリリース | なし | — | あり |
| サービスガバナンス (レート制限、サーキットブレーカー、リトライ) | なし | — | あり |
| 包括的なセキュリティ保護 | なし | — | あり |
| NGINX Ingress アノテーション互換性 | — | — | 50 以上のアノテーション、90% 以上のユースケースをカバー |
NGINX Ingress からの移行では、MSE Ingress は 50 以上のアノテーションと互換性があり、90% 以上のユースケースをカバーしています。
MSE Ingress のコンポーネント
MSE Ingress コントローラー
MSE Ingress コントローラーはサービストラフィックを処理せず、MSE クラウドネイティブゲートウェイの設定のみを行います。すべてのトラフィックは、ゲートウェイのデータプレーンを通過します。
MSE Ingress コントローラーは、ACK または ACK Serverless クラスターにインストールされるコントロールプレーンアドオンで、次の機能を提供します。
-
MseIngressConfig CRD を監視し、複数のクラウドネイティブゲートウェイのライフサイクルを管理します。
-
MseIngressConfig CRD に基づいて複数のゲートウェイの設定を管理します。
-
複数のゲートウェイの Ingress 監視を設定します。
詳細については、「コンポーネントの管理」をご参照ください。
MSE クラウドネイティブゲートウェイ
各 MSE クラウドネイティブゲートウェイは、MseIngressConfig CRD から作成され、次の 2 つのプレーンで構成されています。
-
コントロールプレーン:Ingress、Ingress クラス、Service などのリソースを監視し、ルーティング設定をリアルタイムでデータプレーンにプッシュします。
-
データプレーン:コントロールプレーンのルーティングルールに基づいて、外部リクエストをバックエンド Service の Pod にルーティングします。