すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:ALB Ingressユーザーガイド

最終更新日:Dec 10, 2024

Container Service for Kubernetes (ACK) およびACK Serverlessに加えて、Application Load Balancer (ALB) Ingressをエンタープライズ分散アプリケーションサービス (EDAS) 、Serverless App Engine (SAE) 、および自己管理Kubernetesクラスターと一緒にクラウドで使用して、ビジネス要件を満たすことができます。 このトピックでは、ALB Ingressの基本機能と高度な機能について説明し、ALB Ingressを他のサービスと一緒に使用する方法について説明します。

基本機能

AlbConfigは、ALB IngressコントローラーがALBインスタンスとリスナーを構成するために使用するACKのカスタムリソース定義 (CRD) オブジェクトです。 次の表では、ACKおよびACKサーバーレスクラスターにALB Ingressコントローラーをインストールおよびアンインストールし、AlbConfigsを作成および変更し、Simple Log Serviceを有効にする方法について説明します。

項目

機能

説明

ACKの参照

ACK Serverlessの参照

ALB Ingressコントローラ

ALB Ingressコントローラーの管理

ACKは、管理されたALB Ingressコントローラを提供する。

クラスターの作成時にALB Ingressコントローラーをインストールするか、クラスターの作成後に [コンポーネント] ページでコントローラーをインストールできます。

ALB Ingressコントローラーの管理

ALB Ingressコントローラーの管理

インスタンス管理

AlbConfigの作成

AlbConfigは、ALB IngressコントローラーがALBインスタンスとリスナーを構成するために使用するCRDオブジェクトです。

AlbConfigは、単一のALBインスタンスを設定するために使用されます。 複数のALBインスタンスを設定する場合は、複数のAlbConfigsを作成する必要があります。

AlbConfigの作成

AlbConfigの作成

AlbConfigをIngressに関連付ける

IngressClassを使用して、AlbConfigをIngressに関連付けることができます。 これを行うには、まずIngressClassを作成する必要があります。

IngressClassを作成し、AlbConfigに関連付けます

IngressClassを使用してAlbConfigをIngressに関連付ける

AlbConfigの変更

AlbConfigの名前やvSwitchなど、AlbConfigの設定を変更できます。

新しい設定は、設定を保存した直後に有効になります。

Simple Log Serviceを有効にしてアクセスログを収集する

ALB Ingressのアクセスログを収集する場合は、AlbConfigのlogProjectパラメーターとlogStoreパラメーターを設定します。

説明
  • Simple Log Serviceプロジェクトは自動的に作成されません。 Simple Log Serviceプロジェクトを手動で作成する必要があります。 詳細については、「プロジェクトの管理」をご参照ください。

  • logStoreパラメーターをalb_ で始まる値に設定します。 指定されたLogstoreが存在しない場合、システムは指定された名前のLogstoreを自動的に作成します。

Simple Log Serviceによるアクセスログの収集

Simple Log Serviceによるアクセスログの収集

既存のALBインスタンスの使用

既存のALBインスタンスを使用する場合は、AlbConfigの作成時にALBインスタンスのIDを指定します。

既存のALBインスタンスの再利用

既存のALBインスタンスの再利用

複数のALBインスタンスを使用する

複数のALBインスタンスを使用する場合は、Ingressのspec.ingressClassNameフィールドで複数のIngressClassesを指定します。

複数のALBインスタンスの作成と使用

複数のALBインスタンスの作成と使用

ALBインスタンスの削除

AlbConfigは、ALBインスタンスを設定するために使用されます。 したがって、対応するAlbConfigを削除することで、ALBインスタンスを削除できます。AlbConfigを削除する前に、AlbConfigに関連付けられているすべてのIngressを削除する必要があります。

ALBインスタンスの削除

ALBインスタンスの削除

リスナー管理

HTTPS接続の証明書の指定

ALBインスタンスの証明書を指定するには、対応するAlbConfigのlistenersパラメーターで証明書IDを指定します。証明書はHTTPS接続に使用されます。

ALB Ingressを使用したHTTPSリスナーの証明書の設定

ALB Ingressを使用したHTTPSリスナーの証明書の設定

Transport Layer Security (TLS) セキュリティポリシーの指定

AlbConfigを使用してHTTPSリスナーを設定する場合、TLSセキュリティポリシーを指定できます。 カスタムおよびデフォルトのTLSセキュリティポリシーがサポートされています。 詳細については、「TLSセキュリティポリシー」をご参照ください。

カスタムTLSセキュリティポリシーの指定

カスタムTLSセキュリティポリシーの指定

高度な機能

Ingressは、レイヤー7の負荷分散を実装し、ACKクラスター内のサービスへの外部アクセスを管理するために使用できるAPIオブジェクトです。 次の表では、ALB Ingressを使用して、ドメイン名とURLパスに基づいてリクエストをバックエンドサーバーグループに転送し、リクエストをHTTPからHTTPSにリダイレクトし、カナリアリリースを実行する方法を説明します。

機能

説明

ACKの参照

ACK Serverlessの参照

ドメイン名に基づいてリクエストを転送する

ドメイン名の有無にかかわらずIngressを作成し、Ingressを使用してリクエストを転送できます。

ドメイン名に基づいてリクエストを転送

ドメイン名に基づいてリクエストを転送

URLパスに基づいてリクエストを転送する

ALB Ingressは、URLパスに基づいてリクエストを転送できます。 pathTypeパラメーターを使用して、さまざまなURL一致ポリシーを設定できます。 pathTypeの有効な値は、Exact、ImplementationSpecific、およびPrefixです。

URLパスに基づくリクエストの転送

URLパスに基づくリクエストの転送

カスタム転送ルール

ALB Ingressでは、カスタム転送ルールを設定できます。 転送ルールは、一致条件とアクションで構成されます。 ALB Ingressは次の操作をサポートします。

  • ドメイン名、URL、リクエストヘッダー、クエリ文字列、リクエストメソッド、Cookie、ソースIPアドレスなどのカスタム転送条件をalb.ingress.kubernetes.io/conditions.<Service name> アノテーションを設定して指定します。

  • alb.ingress.kubernetes.io/actions.<Service name> アノテーションを設定して、固定応答を返す、リクエストをリダイレクトする、リクエストヘッダーを挿入する、トラフィックをミラーリングする、リクエストを複数のサーバーグループに転送する、またはリクエストを書き換えるカスタム転送アクションを指定します。

  • ドメイン名、URL、HTTPヘッダーなど、ACKコンソールでカスタム転送条件を指定します。

  • ACKコンソールでカスタム転送アクションを指定して、指定したサーバーグループにリクエストを転送したり、固定応答を返したりします。

重要
  • 各転送ルールは、最大10の転送条件をサポートします。

  • ルーティング条件ResponseHeaderおよびResponseStatusCodeは、カスタム送信ルーティングルールでのみ有効です。

ALB Ingressのカスタム転送ルールの作成

ALB Ingressのカスタム転送ルールの作成

ヘルスチェックの設定

ALB Ingressに注釈を追加して、ヘルスチェックを設定できます。 ヘルスチェックパラメータには、パス、プロトコル、メソッド、httpcode、タイムアウト、間隔、およびしきい値が含まれます。

ヘルスチェックの設定

ヘルスチェックの設定

自動証明書検出の設定

ALB Ingressコントローラーは、自動証明書検出をサポートします。 まず、[certificate Management Serviceコンソール] で証明書を作成する必要があります。 次に、IngressのTLS設定で証明書のドメイン名を指定します。 このようにして、ALB Ingressコントローラーは、IngressのTLS設定に基づいて証明書を自動的に検出して一致させることができます。

ALB Ingressを使用したHTTPSリスナーの証明書の設定

ALB Ingressを使用したHTTPSリスナーの証明書の設定

HTTPリクエストからHTTPSリクエストへのリダイレクトの設定

ALB. Ingress. kubernetes.io/ssl-redirect: "true" アノテーションを追加して、HTTPリクエストをHTTPS (ポート443) にリダイレクトするようにalb ingressを設定できます。

HTTPリクエストをHTTPSにリダイレクト

HTTPリクエストをHTTPSにリダイレクト

HTTPSまたはgRPCプロトコルの設定

ALB IngressはHTTPSまたはgRPCプロトコルをサポートしています。 HTTPSまたはgRPCを設定するには、alb.ingress.kubernetes.io/backend-protocol: "grpc" またはalb.ingress.kubernetes.io/backend-protocol: "https" アノテーションを追加します。 Ingressを使用して要求をgRPCサービスに配信する場合は、gRPCサービスのSSL証明書を設定し、TLSプロトコルを使用してgRPCサービスと通信する必要があります。

説明

バックエンドプロトコルは変更できません。 プロトコルを変更する必要がある場合は、Ingressを削除して再構築します。

バックエンドプロトコルとしてHTTPSまたはgRPCを設定

バックエンドプロトコルとしてHTTPSまたはgRPCを設定

書き換えルールの設定

ALB Ingressは書き換えルールをサポートしています。 書き換えルールを設定するには、alb.ingress.kubernetes.io/rewrite-target: /path/${2} アノテーションを追加します。

説明
  • rewrite-targetアノテーションで、${number} タイプのキャプチャグループのpathパラメーターのタイプをPrefixに設定する必要があります。

  • デフォルトでは、pathパラメーターは、アスタリスク (*) や疑問符 (?) などの正規表現でサポートされている文字をサポートしていません。 パスパラメーターで正規表現でサポートされている文字を指定するには、rewrite-targetアノテーションを追加する必要があります。

  • pathパラメーターの値は、スラッシュ (/) で始まる必要があります。

書き換えルールの設定

書き換えルールの設定

カスタムリスニングポートの設定

ALB Ingressを使用すると、複数のポートを同時に公開するようにカスタムリスニングポートを設定できます。 この方法を使用して、サービスのポート80とポート443の両方をインターネットに公開できます。

カスタムリスニングポートの設定

カスタムリスニングポートの設定

転送ルールの優先度の設定

Ingressの設定に注釈を追加して、Ingressの転送ルールの優先順位を設定できます。

説明

リスナー内の各転送ルールの優先度は一意です。 alb.ingress.kubernetes.io/orderアノテーションを使用して、Ingressの転送ルールの優先順位を指定できます。 有効な値: 1 ~ 1000 値が小さいほど、優先度が高くなります。

転送ルールの優先度の設定

転送ルールの優先度の設定

アノテーションを使用してカナリアリリースを実行する

ALBを使用すると、リクエストヘッダー、Cookie、および重みに基づいてカナリアリリースを設定し、複雑なトラフィックルーティングを処理できます。 注釈を追加してカナリアリリースを設定できます。

カナリアリリース機能を有効にするには、alb.ingress.kubernetes.io/canary: "true" アノテーションを追加します。 次に、さまざまなアノテーションを使用して、さまざまなカナリアリリースルールを設定できます。

セッション永続性の設定

ALB. Ingress. kubernetes.io/sticky-sessionおよびalb.ingress.kubernetes.io/sticky-session-typeアノテーションを追加することで、alb ingressのセッション永続性を設定できます。

注釈を使用したセッション永続性の設定

注釈を使用したセッション永続性の設定

バックエンドサーバーグループの負荷分散アルゴリズムの指定

alb.ingress.kubernetes.io/backend-schedulerアノテーションを追加することで、バックエンドサーバーグループの負荷分散アルゴリズムを指定できます。

スケジューリングアルゴリズムの指定

スケジューリングアルゴリズムの指定

クロスオリジンリソース共有 (CORS) の設定

ALB Ingressでは、アノテーションを使用してCORSを設定できます。

CORS の設定

CORS の設定

永続TCP接続の設定

従来のロードバランサーがバックエンドサーバーにリクエストを転送するたびに、短期間の接続が作成されます。 このアクションにより、サーバーに不要な負荷がかかり、パフォーマンスのボトルネックの問題が発生します。 ALBは、ネットワーク接続を確立するために消費されるリソースの量を削減し、転送パフォーマンスを向上させる永続的なTCP接続機能を提供します。 永続的なTCP接続機能を有効にするには、alb ingressにALB. Ingress. kubernetes.io/backend-keepaliveアノテーションを追加します。

永続TCP接続の設定

永続TCP接続の設定

QPSスロットリングの設定

ALBは、転送ルールに基づくQPSスロットリングをサポートしています。 QPSを1〜100000の範囲に制限できます。 alb.ingress.kubernetes.io/traffic-limit-qpsアノテーションをALB Ingressに追加して、QPSスロットリング機能を有効にすることができます。

QPSスロットリングの設定

QPSスロットリングの設定

バックエンドスロースタート

alb ingressのスロースタートモードを有効にするには、ALB. Ingress. kubernetes.io/slow-start-enabledアノテーションを追加します。 alb.ingress.kubernetes.io/slow-start-durationアノテーションを追加して、スロースタートがトラフィックを徐々に増やすのにかかる時間を設定します。 有効な値の範囲は30〜900秒です。

説明

持続時間が長いほど、トラフィックの増加は遅くなります。

バックエンドスロースタート

バックエンドスロースタート

接続ドレイン

alb ingressの接続ドレインを有効にするには、ALB. Ingress. kubernetes.io/connection-drain-enabledアノテーションを追加します。 alb.ingress.kubernetes.io/connection-drain-timeoutアノテーションを追加して、接続のドレインタイムアウト期間を設定します。 有効な値の範囲は0〜900秒です。

接続のドレイン

接続のドレイン

  • KubernetesポッドとECS (Elastic Compute Service) インスタンスの両方をバックエンドサーバーとして指定する

  • Cloud Enterprise Network (CEN) とトランジットルーターを使用して、クロスリージョンリソースとデータセンターをバックエンドサーバーとして指定する

  • ALB ingressでは、alb.ingress.kubernetes.io/actions.<Service name> アノテーションを使用して、ALBインスタンスのバックエンドサーバーグループを設定できます。 サービス名とサーバーグループIDを指定することで、KubernetesポッドとECSインスタンスの両方をALBインスタンスのバックエンドサーバーとして追加できます。

  • ALBインスタンスをCENおよびトランジットルーターに接続して、ALBからのリクエストを、ALBとは異なるリージョンにデプロイされているVPC内のサーバーおよびデータセンターに転送できます。

ALB Ingressを使用して、ハイブリッドバックエンドサーバーグループを設定し、ECSインスタンスを別のリージョンにデプロイされたALBインスタンスに関連付け、オンプレミスサーバーをALBインスタンスに関連付けます

ALB Ingressを使用して、ハイブリッドバックエンドサーバーグループを設定し、ECSインスタンスを別のリージョンにデプロイされたALBインスタンスに関連付け、オンプレミスサーバーをALBインスタンスに関連付けます

他のサービスとの統合

Alibaba Cloudサービスとの統合

Alibaba Cloud サービス

機能

説明

関連ドキュメント

WAF

ALB IngressのWebアプリケーションファイアウォール (WAF) の有効化

Webアプリケーションファイアウォール (WAF) は、Webサイトとアプリケーションを保護するオールインワンサービスです。 WAFを使用して、データ侵害、HTTPフラッド攻撃、webシェル、およびwebページの改ざんを防止できます。 WAFは仮想パッチも提供します。 ALB Ingressに対してWAFを有効にすると、ネットワークトラフィックはALBリスナーにルーティングされる前にWAFによってフィルタリングされます。

ALB IngressのWAFの有効化

EDAS

アプリケーションのALB Ingressの作成

EDASはALB Ingressesをサポートしています。 ALB Ingressは、トラフィック管理を強化し、NGINX Ingressと互換性があります。 これにより、ALB Ingressは複雑なルーティングを処理し、証明書を自動的に検出できます。

ALB Ingressの作成

SAE

Ingressゲートウェイに基づくエンドツーエンドのカナリアリリースの設定

Ingressゲートウェイを使用して、SAEアプリケーションのエンドツーエンドのカナリアリリースを実行できます。

ASM

ALB Ingressを設定してサービスメッシュ (ASM) をALBと統合する

ASMをALBと統合するようにALB Ingressを設定できます。

ASMとALBの統合

HPA

ALB Ingressを設定して、水平ポッドオートスケーラー (HPA) をALBと統合する

HPAは、Kubernetesクラスターのポッドを自動的にスケールアウトするために使用されます。 ALB Ingressを使用してHPAをALBと統合し、1秒あたりのクエリ (QPS) に基づく自動スケーリングを有効にできます。

ALB Ingressを使用してQPSに基づくアプリケーションの自動スケーリングを有効にする

Knative

ALBを介してサービスにアクセスするKnativeがインストールされているACKおよびACKサーバーレスクラスターを有効にする

KnativeはKubernetesベースのサーバーレスフレームワークです。 Knativeを使用して、ALBサービスを公開し、ヘッダーとCookieに基づいてカナリアリリースを実行できます。

KnativeでALB Ingressを使用

ACKワン

ALB Ingressを設定してALBマルチクラスタゲートウェイを作成する

Distributed Cloud Container Platform for Kubernetes (ACK One) は、Alibaba cloudが開発したエンタープライズクラスのクラウドネイティブコンテナプラットフォームで、ハイブリッドクラウド、マルチクラスター、分散コンピューティング、ディザスタリカバリシナリオでのコンテナ管理要件を満たします。 ACK Oneによって提供されるALBマルチクラスタゲートウェイは、ALB Ingressのマルチクラスタモードです。 これらを使用して、アクティブなゾーン冗長性、アクティブな地理冗長性、クラスター間の負荷分散、および指定されたクラスターのみへのヘッダーベースのトラフィック分散を実装できます。

オープンソースサービスとの統合

オープンソースサービス

機能

説明

関連ドキュメント

クラウド内の自己管理型Kubernetesクラスター

ALB Ingressを設定して自己管理KubernetesクラスターでALBを使用する

ECSインスタンスを使用してKubernetesクラスターを構築する場合、ALB Ingressを設定してトラフィックをルーティングできます。 これにより、クラスターはALBサービスを自動的に検出し、負荷分散を有効にできます。

セルフマネージドKubernetesクラスターでのALB Ingressの使用