ALB Ingressは、Application Load Balancer (ALB) に基づいて開発され、Container Service for Kubernetes (ACK) クラスターのサービスの統合されたイングレスとして機能します。 NGINX Ingressと比較して、ALB Ingressは完全にホストされています。 ALB Ingressを手動で維持する必要はありません。 ALB Ingressは、KubernetesクラスターのIngressリソースの変更を自動的に検出し、事前定義されたルーティングルールに基づいてトラフィックをバックエンドサービスに配信できます。 さらに、ALB Ingressは強力なオートスケーリングメカニズムを採用して、変動するトラフィックに自動的に適応し、システムの安定性を確保しています。
あなたが始める前に
ALB Ingressの機能を詳しく知るには、ALB Ingressを使用する前にこのトピックを読むことをお勧めします。
このトピックを読む前に、公式のIngressドキュメントを読み、IngressとIngressClassesに関連する用語を学ぶことをお勧めします。
ALB Ingressのしくみ
ALB Ingressに関連する用語:
ALB Ingressコントローラ: Ingressリソースを管理するコンポーネント。 ALB Ingressコントローラーは、APIサーバーを使用してIngressおよびAlbConfigリソースの変更を動的に取得し、ALBインスタンスを更新します。 NGINX Ingressコントローラとは異なり、ALB Ingressコントローラは、ALBインスタンスの制御プレーンです。 ALBインスタンスは管理しますが、トラフィックは分散しません。 トラフィックはALBインスタンスによって分散されます。 ALB Ingressコントローラーは、クラスター内のAPIサーバーを使用してIngressリソースの変更を動的に取得し、Ingressルーティングルールに基づいてALBインスタンスを更新します。
AlbConfig: AlbConfigは、ALB Ingressコントローラによって作成されたCustomResourceDefinition (CRD) である。 AlbConfigのパラメーターは、ALBインスタンスの設定を定義します。 各AlbConfigは、1つのALBインスタンスに対応する。 ALBインスタンスは、トラフィックをバックエンドサービスに分散するための入口として機能します。 ALBインスタンスはALBによって完全にホストされます。 NGINX Ingressコントローラーと比較して、ALB IngressはO&Mフリーで非常に弾力性があります。
IngressClass: IngressClassは、IngressとAlbConfigとの間の関連付けを定義する。
Ingress: Ingressは、外部トラフィックルーティング規則とアクセス制御規則を定義するリソースオブジェクトです。 ALB Ingressコントローラーは、Ingressリソースの変更を監視し、ALBインスタンスを更新してトラフィックを分散します。
サービス: Kubernetesでは、ポッドはさまざまな一時的なリソースです。 サービスは、同じ機能を提供するポッドへの統合された入力です。 他のアプリケーションまたはサービスは、ポッドの変更を心配することなく、サービスの仮想IPアドレスとポートを介してポッドを通信できます。 サービスの詳細については、「はじめに」をご参照ください。
次の図は、ALBインスタンスとALB Ingressの論理的な関係を示しています。
ALB Ingressの使い方
ALB Ingressは、クラウドネイティブサービスと深く統合されています。 ALB Ingressは幅広い機能をサポートしており、すぐに使用できます。 次の手順は、ACKまたはACKサーバーレスクラスターでALB Ingressを使用する方法を示しています。
前の図の [ALB Ingressの作成] を参照して、ワークフローを完了します。
メリット
ALB IngressはAlibaba Cloudによって完全に管理され、超高処理能力を提供します。 それに比べて、NGINX Ingressは高度にカスタマイズ可能ですが、手動管理が必要です。 NGINX IngressとALB Ingressは、異なるサービススコープ、アーキテクチャ、処理およびセキュリティ機能を提供します。 NGINX IngressとALB Ingressの違いの詳細については、「NGINX IngressとALB Ingressの比較」をご参照ください。
ALB Ingressは、次のシナリオでNGINX Ingressよりも優れています。
永続的な接続
永続的な接続は、モノのインターネット (IoT) 、インターネットファイナンス、オンラインゲームなど、頻繁なやり取りが必要なシナリオに最適です。 設定が変更されると、NGINX Ingressはプロセスをリロードし、永続接続を一時的に閉じる必要があります。 これは、サービスの中断を引き起こし得る。 この問題を防ぐために、ALB Ingressはローリングアップデートを使用して永続的な接続の安定性を確保します。
高い並行性
IoTサービスは、端末デバイスから開始される多数の同時接続を維持することが期待される。 ALB IngressはAlibaba CloudのCloud Network Managementプラットフォームで実行され、セッションを効率的に管理できます。 各ALBインスタンスは数千万の接続をサポートしています。 NGINX Ingressesは、手動のO&Mを必要とする限られた数のセッションのみをサポートします。NGINX Ingressのスケールアウトはクラスター内のリソースを消費し、手動操作が必要です。 スケールアウト費用は比較的高い。
高いQPS
インターネットサービスは、プロモーション活動や速報イベントなど、ほとんどのシナリオで高いQPSに耐えることが期待されています。 ALB Ingressは自動スケーリングをサポートしています。 QPS値が増加すると、仮想IPアドレスが自動的に追加されます。 各ALBインスタンスは最大100万個のQPSをサポートするため、ALB IngressはNGINX Ingressよりも低いネットワーク遅延をサポートします。 さらに、NGINX Ingressはクラスター内のリソースに応答し、高QPSシナリオでパフォーマンスのボトルネックが発生する可能性があります。
大きなワークロードの変動
ALBは、eコマースやゲームサービスなど、ワークロードの変動が大きいサービスに最適な、より費用対効果の高い価格設定モデルを提供します。 ALBは従量課金方法をサポートしています。 オフピーク時に消費されるロードバランサー容量単位 (LCU) は少なくなります。 さらに、ALBは自動スケーリングをサポートしています。 トラフィックの流れをリアルタイムで確認する必要はありません。 ただし、NGINXはオフピーク時にアイドルリソースを自動的に解放しません。 ワークロードの変動に対処するには、クラスター内の一定量のリソースを手動で予約する必要があります。
ALB Ingressをサポートするリージョンとゾーン
詳細については、「ALBが利用可能なリージョンとゾーン」をご参照ください。
ALB Ingressクォータ
詳細については、「ALBクォータの計算方法」をご参照ください。
ALB Ingressコントローラーリリースノート
詳細については、「ALB Ingress Controller」をご参照ください。