APIG Ingress は、Alibaba Cloud のオープンソースプロジェクトである Higress の Enterprise Edition です。Nginx Ingress と完全な互換性を持ち、API 管理やマイクロサービスのシナリオに最適です。APIG Ingress は ACK マネージドクラスターと統合され、クラスター Ingress のための強力なトラフィック管理機能を提供します。
APIG Ingress の用語
Kubernetes クラスターにおいて、Ingress は内部サービスを外部トラフィックに公開するためのアクセスポイントとして機能するリソースオブジェクトです。レイヤー 7 のロードバランシングを提供し、クラスター内のサービス宛てのほとんどのトラフィックを処理できます。Ingress リソースに転送ルールを設定することで、リクエストの内容に基づいて異なるサービスのバックエンド Pod にリクエストを転送できます。
標準の Ingress リソースは、HTTP トラフィックのルールのみをサポートします。負荷分散アルゴリズムやセッションアフィニティなどの高度な機能は設定できません。これらの高度な機能には、Nginx Ingress や APIG Ingress のような Ingress 実装が必要です。
APIG Ingress は、標準のクラウドネイティブ API ゲートウェイよりも強力な Ingress トラフィック管理機能を提供します。これは、MSE クラウドネイティブゲートウェイのアップグレード版です。APIG Ingress は Nginx Ingress と互換性があり、その 50 以上のアノテーションをサポートし、Nginx Ingress のユースケースの 90% 以上をカバーしています。複数のサービスバージョンに対する段階的リリース、柔軟なトラフィックガバナンス、および包括的なセキュリティ保護をサポートします。これらの機能は、大規模なクラウドネイティブ分散アプリケーションのトラフィックガバナンスの要求に応えます。
機能紹介
APIG Ingress の利用方法
ACK マネージドクラスターは APIG Ingress を使用して、外部トラフィックを内部サービスにルーティングし、レイヤー 7 のロードバランシングを提供します。クラスターに APIG Controller をデプロイすると、このコンポーネントは ApigConfig リソースをリッスンします。クラウドネイティブ API ゲートウェイインスタンスのライフサイクル、そのグローバルパラメーター設定、および Ingress リソースのリスナーオプションを動的に管理します。クラウドネイティブ API ゲートウェイは、Kubernetes クラスター内の Ingress リソースをリッスンし、それらを必要なトラフィックガバナンス設定に変換して内部サービスを公開します。詳細については、「APIG Ingress を介した ACK マネージドクラスターへのアクセス」をご参照ください。
標準の Kubernetes Ingress は、単純な HTTP トラフィック管理のみをサポートします。高度な機能は通常、アノテーションを使用して追加されます。APIG Ingress は Nginx Ingress のアノテーションと互換性があり、トラフィックガバナンスとセキュリティ保護を強化するための追加のアノテーションを導入しています。詳細については、「APIG Ingress の高度な利用方法」をご参照ください。
仕組み
コンポーネント
APIG Controller:
APIG Controller はコントロールプレーンであり、ネットワークデータプレーンではありません。クラウドネイティブ API ゲートウェイインスタンスとその設定を管理します。APIG Controller はサービストラフィックを一切処理しません。バイパスモードで動作し、実際のサービストラフィックを処理するクラウドネイティブ API ゲートウェイインスタンスを管理します。
クラスターでは、APIG Controller コンポーネントをインストールできます。コンポーネントが提供する ApigConfig カスタムリソース定義 (CRD) を使用して、クラウドネイティブ API ゲートウェイインスタンスを宣言的に管理し、Ingress リソースに対するゲートウェイのリスナーオプションを設定できます。
クラウドネイティブ API ゲートウェイ:
APIG Controller は、設定された ApigConfig リソースに基づいてクラウドネイティブ API ゲートウェイを作成します。このゲートウェイは、コントロールプレーンとデータプレーンで構成されます。
コントロールプレーン:コントロールプレーンは、関連付けられたコンテナサービスクラスター内の Ingress、IngressClass、Service などのリソースをリッスンします。これらのリソースを解析し、結果の設定をリアルタイムでデータプレーンに送信します。
データプレーン:データプレーンは、トラフィックガバナンス設定を実装します。コントロールプレーンからのルールに基づいて外部リクエストを処理し、リクエストをバックエンドのターゲットサービスに転送します。
仕組み
APIG Controller は、クラスター内に作成された ApigConfig リソースをリッスンします。対応するクラウドネイティブ API ゲートウェイインスタンスのライフサイクルと、ゲートウェイとコンテナサービスクラスター間の関連付けをリアルタイムで動的に維持します。
クラウドネイティブ API ゲートウェイのコントロールプレーンは、関連付けられたコンテナサービスクラスターの API サーバーから Ingress リソースの変更を取得します。その後、ゲートウェイのルーティングルールを動的に更新します。クラウドネイティブ API ゲートウェイがリクエストを受信すると、リクエストを Ingress の転送ルールと照合し、対応するバックエンドサービスの Pod に転送します。
Kubernetes における Service、Ingress、IngressClass、ApigConfig、および APIG Controller の関係は次のとおりです:
Service:実際のバックエンドサービスの抽象化です。1 つの Service で、複数の同一のバックエンドサービスを表すことができます。
Ingress:HTTP または HTTPS リクエストをどの Service に転送するかを指定するリバースプロキシルールのセットです。たとえば、リクエストのホストと URL パスに基づいて、リクエストを異なるサービスに転送できます。
IngressClass:Kubernetes クラスター内の Ingress プロセッサ実装を記述します。この IngressClass に関連付けられた Ingress リソースは、そのプロセッサによって解析されます。また、IngressClass の Parameter フィールドを使用して ApigConfig (クラウドネイティブ API ゲートウェイ) を関連付ける必要があります。このゲートウェイは、解析された Ingress リソースに記述されているトラフィック管理ルールを実装します。
ApigConfig:APIG Controller によって提供される CRD です。クラウドネイティブ API ゲートウェイインスタンスの基本情報を記述します。
APIG Controller:ネットワークデータプレーンではなく、クラウドネイティブ API ゲートウェイインスタンスと設定を管理するコントロールプレーンです。APIG Controller はクラスター内の ApigConfig リソースをリッスンし、クラウドネイティブ API ゲートウェイインスタンスを調整して、Ingress リソースに記述されているトラフィック管理ルールを実装します。
次の図は、APIG Controller の仕組みを示しています。
関連ドキュメント
APIG Controller のインストール方法については、「APIG Controller コンポーネントの管理」をご参照ください。
APIG Ingress のバージョンについては、「APIG Ingress バージョンガイド」をご参照ください。
APIG Ingress が利用可能なリージョンの詳細については、「サポートされているリージョン」をご参照ください。