APIG Ingress は、オープンソースのゲートウェイである Higress をベースとしたエンタープライズグレードのプロダクトです。Nginx Ingress と互換性があり、API 管理やマイクロサービスのシナリオ向けに設計されています。
Ingress の概念
Kubernetes クラスターにおいて、Ingress は内部サービスを公開するためのアクセスポイントとして機能します。レイヤー 7 のロードバランシングを提供し、クラスター内のサービスに向けられるトラフィックの大部分を処理します。Ingress は、外部クライアントがクラスター内のサービスにアクセスする方法を管理する Kubernetes リソースオブジェクトです。Ingress リソースに転送ルールを設定することで、リクエストの内容に基づいて異なるサービスのバックエンド Pod にリクエストをルーティングできます。標準の Ingress リソースは HTTP トラフィックルールのみをサポートし、負荷分散アルゴリズムやセッションアフィニティなどの高度な機能は含まれていません。これらの機能を利用するには、Nginx Ingress や APIG Ingress などの特定の Ingress 実装が必要です。
APIG Ingress の特徴
APIG Ingress の使用方法
APIG Ingress は、クラウドネイティブ API ゲートウェイ上に構築された強力なトラフィック管理機能を提供します。MSE Cloud Native Gateway のアップグレード版として、Nginx Ingress およびその 50 以上のアノテーションと互換性があり、Nginx Ingress のユースケースの 90% 以上をカバーします。APIG Ingress は、複数サービスバージョンにまたがるカナリアリリース、柔軟なトラフィックガバナンス、および包括的なセキュリティ保護をサポートし、大規模なクラウドネイティブ分散アプリケーションの要求に応えます。Nginx Ingress との互換性に加え、APIG Ingress はトラフィックガバナンスとセキュリティを強化するための追加のアノテーションを導入しています。詳細については、「APIG Ingress の高度な使用方法」をご参照ください。
クラスターに APIG Controller をデプロイすると、このコンポーネントは ApigConfig リソースをリッスンします。これにより、クラウドネイティブ API ゲートウェイインスタンスのライフサイクル、グローバルパラメーター設定、および Ingress リソースのリスナーオプションを動的に管理します。クラウドネイティブ API ゲートウェイは、Kubernetes クラスターから Ingress リソースをリッスンして変換し、内部サービスを公開するために必要なトラフィックガバナンス設定を生成します。詳細な手順については、「APIG Ingress を作成してサービスを公開」をご参照ください。
APIG Ingress は MSE Ingress のアップグレード版です。APIG Ingress と MSE Ingress の両方がサポートされているリージョンでは、Container Service for Kubernetes (ACK) コンソールには APIG Ingress のオプションのみが表示されます。この変更は既存の MSE Ingress ユーザーには影響せず、引き続き MSE Ingress を作成・管理できます。MSE Ingress を使用するには、チケットを送信して APIG チームにご連絡ください。
APIG Ingress の仕組み
コンポーネント
APIG Controller:
APIG Controller はコントロールプレーンであり、ネットワークデータプレーンではありません。クラウドネイティブ API ゲートウェイインスタンスとその設定を管理します。APIG Controller はサービストラフィックを一切処理しません。バイパスモードで動作し、実際のサービストラフィックを処理するクラウドネイティブ API ゲートウェイインスタンスを管理します。
クラスターに、APIG Controller コンポーネントをインストールします。コンポーネントが提供する ApigConfig Custom Resource Definition (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 が利用可能なリージョンについては、「サポートされているリージョン」をご参照ください。