クラウドネイティブシナリオをサポートするために、Alibaba cloudはマイクロサービスエンジン (MSE) Ingressゲートウェイを提供しています。 MSE Ingressゲートウェイは、Container Service for Kubernetes (ACK) 向けに統合および最適化されたMSEクラウドネイティブゲートウェイです。 Ingressは、Kubernetesクラスター内のサービスへの外部アクセスを管理するためのレイヤー7負荷分散を提供するAPIオブジェクトです。 MSE Ingressゲートウェイは、Kubernetesクラスターのインバウンドトラフィックを効率的に管理するのに役立ちます。
基本概念
Kubernetesクラスターでは、Ingressはクラスター内のサービスを公開するアクセスポイントとして機能します。 Ingressは、クラスター内のサービス向けのネットワークトラフィックのほとんどを分散します。 Ingressは、Kubernetesクラスター内のサービスへの外部アクセスを管理するKubernetesリソースです。 Ingressのルーティングルールを設定して、Kubernetesクラスター内のさまざまなサービスのバックエンドポッドにネットワークトラフィックをルーティングできます。
Kubernetes Ingressリソースでは、HTTPトラフィックをルーティングするためのルールのみを設定できます。 負荷分散アルゴリズムやセッションアフィニティなどの高度な機能は設定できません。 高度な機能には、NGINX Ingressゲートウェイ、MSE Ingressゲートウェイ、またはApplication Load Balancer (ALB) Ingressゲートウェイのサポートが必要です。
MSE Ingressゲートウェイは、MSEクラウドネイティブゲートウェイに基づいて開発されており、ingressトラフィックを管理するためのより強力な方法を提供します。 MSE IngressゲートウェイはNGINX Ingressゲートウェイと互換性があり、NGINX Ingressゲートウェイで定義された50を超えるアノテーションと互換性があります。 MSE Ingressゲートウェイは、NGINX Ingressゲートウェイの90% を超えるシナリオに適しています。 MSE Ingress Gatewayは、複数のサービスバージョンのカナリアリリースを同時にサポートし、柔軟なサービスガバナンス機能と包括的なセキュリティ保護を提供します。 MSE Ingressゲートウェイは、多数のクラウドネイティブ分散アプリケーションが使用されるシナリオで、トラフィックガバナンスの要件を満たすことができます。
特徴
MSE Ingressの機能の詳細については、以下のトピックを参照してください。
MSE Ingressゲートウェイの仕組み
コンポーネント
MSE Ingressコントローラ:
MSE Ingressコントローラーはネットワークデータプレーンではありませんが、MSEクラウドネイティブゲートウェイとその構成を管理する制御プレーンです。 MSE Ingressコントローラはサービス要求を処理しません。 MSE Ingressコントローラーは、サービストラフィックを処理するMSEクラウドネイティブゲートウェイを管理するためのトラフィックバイパスとして機能します。
MSE Ingress ControllerコンポーネントをACKクラスターまたはACKサーバーレスクラスターにインストールし、このコンポーネントが提供するMseIngressConfig CRDを使用して、アノテーションに基づいてクラウドネイティブゲートウェイを管理し、ゲートウェイのIngressリソースリスニングアイテムを設定する必要があります。
MSE Ingressコントローラーコンポーネントのインストール方法の詳細については、「MSE Ingressコントローラーコンポーネントの管理」をご参照ください。
MSE cloud-native Gateway: MSE cloud-native Gatewayは、設定したMseIngressConfig CRDに基づいて作成されます。 MSEクラウドネイティブゲートウェイは、制御プレーンとデータプレーンで構成されます。
コントロールプレーン: 関連するACKクラスター内のIngress、Ingressクラス、サービスなどのリソースを監視します。 リソースが解析された後、解析されたリソース構成は、リアルタイムでゲートウェイデータプレーンに送信される。
Data plane: トラフィックガバナンスを実装します。 データプレーンは、コントロールプレーンから送信されたガバナンスルールに基づいて外部リクエストを処理し、リクエストを宛先のバックエンドサービスにルーティングします。
MSE Ingressの仕組み
MSE Ingressコントローラーは、ACKクラスター内のMseIngressConfig CRDによって定義されたリソースを監視し、リソースに対応するクラウドネイティブゲートウェイのライフサイクルと、ゲートウェイとACKクラスター間の関連付けをリアルタイムで動的に維持します。
クラウドネイティブゲートウェイの制御プレーンは、関連するACKクラスターのAPIサーバーを使用してIngressリソースの変更を取得し、ゲートウェイのルーティングルールを動的に更新します。 クラウドネイティブゲートウェイがリクエストを受信した後、ゲートウェイはリクエストをIngressルーティングルールと照合し、照合されたルーティングルールに基づいてバックエンドサービスに対応するポッドにリクエストをルーティングします。
Kubernetesクラスターでは、Services、Ingress、Ingressクラス、MseIngressConfigs、およびMSE Ingressコントローラーは、次のプロセスで動作します。
サービス: 実際のバックエンドサービスの抽象化。 1つのサービスは、複数の同一のバックエンドサービスを表すことができる。
Ingress: リバースプロキシルールのセット。 Ingressは、HTTPリクエストまたはHTTPSリクエストがルーティングされるサービスを指定します。 たとえば、Ingressは、リクエスト内のホスト名とURLに基づいて、リクエストを別のサービスにルーティングします。
Ingressクラス: Ingressプロセッサの説明。 Ingressクラスは、KubernetesクラスターでIngressプロセッサの実装を宣言するために使用されます。 Ingressクラスに関連付けられたIngressリソースは、Ingressプロセッサによって解析されます。 解析されたIngressリソースの説明で指定されているトラフィック管理ルールを実装するには、MseIngressConfigをIngressクラスのParameterフィールドに関連付ける必要があります。
MseIngressConfig: MSE Ingress Controllerによって提供されるCRD。 MseIngressConfig CRDは、クラウドネイティブゲートウェイに関する基本情報を提供します。
MSE Ingress Controller: MSEクラウドネイティブゲートウェイとその構成を管理する制御プレーン。 MSE Ingress Controllerはネットワークデータプレーンではありません。 MSE Ingressコントローラーは、クラスター内のMseIngressConfig CRDによって定義されたIngressリソースを監視し、解析されたIngressリソースの説明で指定されたトラフィック管理ルールを実装するためにMSEクラウドネイティブゲートウェイを調整するために使用されます。
次の図は、MSE Ingressコントローラーの動作を示しています。