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

参照
MSE Ingress Controllerのインストール方法の詳細については、「MSE Ingress Controllerコンポーネントを管理する」を参照してください。
MSE Ingressゲートウェイのリリースノートについては、「MSE Ingressゲートウェイのリリースノート」を参照してください。