MSE Ingress ゲートウェイは、Microservices Engine (MSE) のクラウドネイティブゲートウェイを Container Service for Kubernetes (ACK) と統合することで、標準の Kubernetes Ingress モデルを拡張します。これにより、標準の Kubernetes Ingress リソースがサポートする機能を超えた高度なトラフィック管理、サービスガバナンス、およびセキュリティ保護機能が提供されます。
本トピックでは、MSE Ingress ゲートウェイの基本概念、アーキテクチャ、およびコンポーネントについて説明します。対象読者は、ACK クラスターや Container Compute Service (ACS) クラスターでイングレストラフィックを管理するクラスターオペレーターやプラットフォームエンジニアです。
基本概念
Kubernetes クラスターにおいて、Ingress はサービスを公開し、インバウンドトラフィックをバックエンドの Pod に分散するアクセスポイントとして機能します。標準の Kubernetes Ingress リソースは HTTP トラフィックのルーティングのみを処理します。負荷分散アルゴリズムやセッション保持などの高度な機能は、Ingress コントローラーの実装によって提供されます。
MSE Ingress ゲートウェイは MSE クラウドネイティブゲートウェイ上に構築されており、標準の Kubernetes Ingress を超える以下の機能を提供します。
-
NGINX Ingress ゲートウェイおよび 50 種類以上の NGINX Ingress アノテーションと互換があり、NGINX Ingress ゲートウェイのユースケースの 90 %以上をカバー
-
複数のサービスバージョンに対する同時カナリアリリース
-
柔軟なサービスガバナンスと包括的なセキュリティ保護
機能
詳細な機能情報については、以下のトピックをご参照ください。
注意事項
ACK マネージドクラスター、ACK サーバーレスクラスター、および ACS クラスターはすべて、外部トラフィックのレイヤー 7 負荷分散に MSE Ingress ゲートウェイをサポートしています。
MSE Ingress ゲートウェイを使用する前に、クラスターに MSE Ingress コントローラーをデプロイします。MSE Ingress コントローラーは、MseIngressConfig CustomResourceDefinitions (CRD) で定義されたリソースを監視し、MSE クラウドネイティブゲートウェイのライフサイクル、グローバル設定、および Ingress リスニング項目を動的に管理します。クラウドネイティブゲートウェイは、Ingress リソースをトラフィック管理構成に変換し、クラスターのサービスを外部に公開します。詳細については、「ACK クラスターおよび ACS クラスター内のサービスにアクセスするために MSE Ingress ゲートウェイを使用する」をご参照ください。
Kubernetes Ingress リソースは HTTP トラフィック管理のみをサポートし、高度な機能はアノテーションを通じて実装されます。MSE Ingress ゲートウェイは NGINX Ingress アノテーションと互換性があり、トラフィックガバナンスおよびセキュリティ用の追加アノテーションも提供します。詳細については、「MSE Ingress の高度な使用方法」をご参照ください。
MSE Ingress ゲートウェイの動作方法
コンポーネント
MSE Ingress ゲートウェイは、次の 2 つの主要コンポーネントで構成されています。
MSE Ingress Controller
MSE Ingress Controller は、MSE クラウドネイティブゲートウェイとその構成を管理するコントロールプレーンです。サービストラフィックを直接処理するのではなく、サービスリクエストを処理する MSE クラウドネイティブゲートウェイを調整するトラフィックバイパスとして機能します。ACK マネージドクラスター、ACK サーバーレスクラスター、または ACS クラスターに MSE Ingress Controller をインストールします。このコンポーネントは MseIngressConfig CRD を使用して、アノテーション経由でクラウドネイティブゲートウェイを管理し、Ingress リソースのリスニングを構成します。
インストール手順については、「MSE Ingress Controller コンポーネントの管理」をご参照ください。
MSE クラウドネイティブゲートウェイ
MSE Ingress Controller は、ユーザーが構成した MseIngressConfig CRD に基づいて MSE クラウドネイティブゲートウェイを作成します。各ゲートウェイには次の 2 つのプレーンがあります。
-
コントロールプレーン:ご利用のクラスター内の Ingress、Ingress クラス、およびサービスを監視し、構成を解析してルーティングルールをリアルタイムでデータプレーンに送信します。
-
データプレーン:外部リクエストを受信し、コントロールプレーンからのガバナンスルールと照合した上で、該当するバックエンドサービスにリクエストをルーティングします。
トラフィックフロー
次の表は、リクエストが MSE Ingress ゲートウェイを通過する際に各コンポーネントがどのように連携するかを示しています。
| ステップ | 送信元 → 送信先 | 操作 |
|---|---|---|
| 1 | MseIngressConfig CRD → MSE Ingress Controller | MSE Ingress Controller は MseIngressConfig CRD を監視し、対応するクラウドネイティブゲートウェイのライフサイクルとご利用のクラスターとの関連付けを維持します。 |
| 2 | クラスター API サーバー → クラウドネイティブゲートウェイのコントロールプレーン | コントロールプレーンはクラスター API サーバーに接続して Ingress リソースの変更を検出し、ゲートウェイルーティングルールを動的に更新します。 |
| 3 | クライアント → クラウドネイティブゲートウェイのデータプレーン | データプレーンはリクエストを受信し、Ingress ルーティングルールと照合した後、一致したバックエンドサービスの Pod に転送します。 |
次の図は、これらのコンポーネント間の連携を示しています。
リソースの関係性
Kubernetes クラスター内で MSE Ingress ゲートウェイによるトラフィック管理を有効にするために、次のリソースが連携して動作します。
| リソース | 役割 |
|---|---|
| Service | 1 つまたは複数の同一のバックエンド Pod を表す抽象化リソースです。 |
| Ingress | ホスト名および URL に基づいて HTTP または HTTPS リクエストをサービスにルーティングするリバースプロキシルールのセットです。 |
| Ingress class | 特定の Ingress リソースセットを処理する Ingress コントローラー実装を宣言します。Parameter フィールドに MseIngressConfig を関連付けることで、トラフィック管理ルールを適用できます。 |
| MseIngressConfig | MSE Ingress Controller が提供する CRD で、MSE クラウドネイティブゲートウェイの構成を定義します。 |
| MSE Ingress Controller | MseIngressConfig CRD を監視し、Ingress リソースから解析されたトラフィック管理ルールを実装するために MSE クラウドネイティブゲートウェイを調整するコントロールプレーンです。 |
関連ドキュメント
-
インストール手順については、「MSE Ingress Controller コンポーネントの管理」をご参照ください。
-
リリース履歴については、「MSE Ingress ゲートウェイのリリースノート」をご参照ください。