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

:AlbConfig を使用して ALB リスナーを構成する

最終更新日:Dec 27, 2024

AlbConfig の Listeners パラメーターを設定して、Application Load Balancer (ALB) インスタンスのリスナーを構成できます。このトピックでは、Listeners パラメーターと、AlbConfig を使用してリスナーを作成、変更、更新する方法について説明します。

前提条件

Listeners パラメーターの説明

用語

  • オブジェクト構成ファイル: Kubernetes オブジェクトの構成を定義するファイル。

  • ライブオブジェクト構成ファイル: Kubernetes クラスタに適用されているオブジェクト構成ファイル。

  • last-applied-configuration: Kubernetes オブジェクトのアノテーション。このアノテーションは、オブジェクトの最新の構成の内容を記録します。オブジェクトの構成が更新されたときに、アノテーションはリアルタイムで更新されません。

Listeners パラメーターの更新方法

Listeners パラメーターは配列型です。ほとんどの場合、配列内のフィールドを置き換えることで Listeners パラメーターを更新できます。 Listeners パラメーターを更新すると、フィールドは指定した新しいフィールドに置き換えられます。次の表にルールを示します。

番号

条件

結果

リスナーがオブジェクト構成ファイルにある

リスナーがライブオブジェクト構成ファイルにある

リスナーが last-applied-configuration アノテーションにある

1

はい

はい

- (無関係)

リスナーはライブオブジェクト構成ファイルに保持されます。

2

はい

いいえ

- (無関係)

リスナーはライブオブジェクト構成ファイルに追加されます。

3

いいえ

- (無関係)

はい

リスナーはライブオブジェクト構成ファイルから削除されます。ただし、リスナーのフィールドはデフォルト設定にリセットされる場合があります。

4

いいえ

はい

いいえ

リスナーはライブオブジェクト構成ファイルから削除されます。

次の例は、オブジェクト構成ファイル、ライブオブジェクト構成ファイル、および last-applied-configuration アノテーションの内容を示しています。

  • オブジェクト構成ファイルの内容。

      listeners:
      - port: 8001
        protocol: HTTP
      - port: 8003
        protocol: HTTP
      - port: 8005 # ポート 8005 を追加します。
        protocol: HTTP
  • ライブオブジェクト構成ファイルの内容。

      listeners:
      - port: 8001
        protocol: HTTP
      - port: 8002  # ポート 8002 を削除します。
        protocol: HTTP
      - port: 8003
        protocol: HTTP
      - port: 8004  # ポート 8004 を削除します。
        protocol: HTTP
  • last-applied-configuration アノテーションの内容。

      listeners:
      - port: 8001 
        protocol: HTTP
      - port: 8002  # ポート 8002 を削除します。
        protocol: HTTP
      - port: 8003
        protocol: HTTP

次のコードブロックは、更新後の Listeners パラメーターの構成を示しています。

  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8005
    protocol: HTTP

次の表にパラメーターを示します。

ポート

ルール

結果

8001

ポート 8001 とポート 8003 はルール 1 に一致します。これは、次の条件が満たされていることを意味します。

  • リスナーがオブジェクト構成ファイルにある

  • リスナーがライブオブジェクト構成ファイルにある

保持

8003

8005

ポート 8005 はルール 2 に一致します。これは、次の条件が満たされていることを意味します。

  • リスナーがオブジェクト構成ファイルにある

  • リスナーがライブオブジェクト構成ファイルにない

追加

8002

ポート 8002 はルール 3 に一致します。これは、次の条件が満たされていることを意味します。

  • リスナーがオブジェクト構成ファイルにない

  • リスナーが last-applied-configuration アノテーションにある

削除

8004

ポート 8004 はルール 4 に一致します。これは、次の条件が満たされていることを意味します。

  • リスナーがオブジェクト構成ファイルにない

  • リスナーがライブオブジェクト構成ファイルにある

  • リスナーが last-applied-configuration アノテーションにない

削除

リスナーの作成

ALB インスタンスはリスナーを使用して、リクエストのアプリケーション層情報に基づいて外部リクエストを受信し、転送します。

kubectl edit albconfig <Albconfig_Name> コマンドを実行して AlbConfig を変更します。port パラメーターと protocol パラメーターを構成して、リスナーを作成できます。port パラメーターと protocol パラメーターは、リスナーの唯一の識別子です。port パラメーターまたは protocol パラメーターを変更すると、システムは元のリスナーを削除し、新しい構成に基づいてリスナーを作成します。

説明

HTTP は WebSocket と互換性があります。追加の構成は必要ありません。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
    - port: 80
      protocol: HTTP # 有効な値: HTTP、HTTPS、および QUIC。
  ...

証明書の指定

ALB インスタンスの作成時に HTTPS リスナーの暗号化と認証を有効にする場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。次に、AlbConfig の certificates パラメーターで証明書 ID を指定します。

パラメーターで証明書を指定しないと、システムが ALB インスタンスを作成するときに HTTPS リスナーは作成されません。システムは、Ingress がリスナーに関連付けられ、Ingress が Ingress 構成で指定されたドメイン名に基づいて証明書を自動的に検出するまで待機します。これは、ドメイン名に基づいて証明書が自動的に検出されるため、リスナーの作成が遅延することを意味します。

証明書の構成方法の詳細については、暗号化通信用の HTTPS 証明書を構成するを参照してください。

重要

ALB は、指定した最初の証明書をデフォルト証明書として使用します。ALB は、証明書の有効期限が切れるか、要件を満たさなくなるまで、デフォルト証明書を使用してリクエストを暗号化します。この場合、ALB は他の証明書を使用してリクエストを暗号化します。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - caEnabled: false
    certificates:
    - CertificateId: 756****-cn-hangzhou # 証明書 ID。
      IsDefault: true
    port: 443
    protocol: HTTPS
  ...

カスタム TLS セキュリティポリシーの構成

カスタム TLS セキュリティポリシーを構成する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して AlbConfig を変更します。次に、securityPolicyId パラメーターを構成して、セキュリティポリシー ID を指定します。AlbConfig で HTTPS リスナーを構成するときに、TLS セキュリティポリシーを指定できます。カスタム TLS セキュリティポリシーとデフォルト TLS セキュリティポリシーがサポートされています。詳細については、TLS セキュリティポリシーを参照してください。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - port: 443
    protocol: HTTPS
    securityPolicyId: tls_cipher_policy_1_1 # セキュリティポリシー ID。
  ...

リスナーの接続タイムアウト期間の設定

リスナーの接続タイムアウト期間を設定する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して AlbConfig を変更します。次に、requestTimeout パラメーターを構成します。これにより、クライアントが長時間レスポンスを待機することを防ぎます。

クライアントがサーバーにリクエストを送信した後、バックエンドサーバーがタイムアウト期間内に応答しない場合、ALB はクライアントに HTTP 504 エラーコードを返します。

  • requestTimeout の有効な値: 1 ~ 180。単位: 秒。

  • requestTimeout のデフォルト値: 60。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 60 # リスナーの接続タイムアウト期間。有効な値: 1 ~ 180。パラメーターを空のままにすると、デフォルト値が使用されます。
  ...

データ圧縮の構成

データ圧縮は、ファイルサイズを縮小して、伝送効率とネットワークパフォーマンスを向上させることができます。データ圧縮を構成する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して AlbConfig を変更します。次に、gzipEnabled パラメーターを構成して、リスナーのデータ圧縮を有効にします。Brotli と Gzip は、一般的に使用される 2 つの圧縮アルゴリズムです。

  • Brotli はすべてのタイプのファイルをサポートしています。

  • Gzip は、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、application/xml、application/json などのファイルタイプをサポートしています。

次のコードブロックは、データ圧縮を無効にする AlbConfig 構成の例を示しています。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: false # true に設定すると、特定のタイプのファイルのデータ圧縮が有効になります。false に設定すると、データ圧縮が無効になります。
  ...

クライアント IP アドレスの保持

クライアント IP アドレスを保持するには、kubectl edit albconfig <Albconfig_Name> コマンドを実行して AlbConfig を変更します。次に、X-Forwarded-For パラメーターを構成して、クライアント IP の保持を有効にします。

重要

このパラメーターは、HTTP リスナーと HTTPS リスナーのみでサポートされています。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForEnabled: true # true に設定すると、クライアント IP の保持が有効になります。false に設定すると、クライアント IP の保持が無効になります。
  ...

ALB インスタンスで使用されるリスニングプロトコルの取得

ALB インスタンスで使用されるリスニングプロトコルを取得する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。次に、X-Forwarded-For パラメーターを構成して、ALB インスタンスで使用されるリスニングプロトコルを取得します。

重要

このパラメーターは、HTTP リスナーと HTTPS リスナーのみでサポートされています。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForProtoEnabled: true # true に設定すると、ALB インスタンスで使用されるリスニングプロトコルが取得されます。false に設定すると、ALB インスタンスで使用されるリスニングプロトコルは取得されません。
  ...

ALB インスタンスの ID の取得

ALB インスタンスの ID を取得する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。次に、XForwardedForSLBIdEnabled パラメーターを構成して、ALB インスタンスの ID を取得します。

重要

このパラメーターは、HTTP リスナーと HTTPS リスナーのみでサポートされています。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBIdEnabled: true # true に設定すると、ALB インスタンスの ID が取得されます。false に設定すると、ALB インスタンスの ID は取得されません。
  ...

ALB インスタンスのリスニングポートの取得

ALB インスタンスのリスニングポートを取得する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。次に、XForwardedForSLBPortEnabled パラメーターを構成して、ALB インスタンスのリスニングポートを取得します。

重要

このパラメーターは、HTTP リスナーと HTTPS リスナーのみでサポートされています。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBPortEnabled: true # true に設定すると、ALB インスタンスのリスニングポートが取得されます。false に設定すると、ALB インスタンスのリスニングポートは取得されません。
  ...

信頼できるプロキシ IP アドレスの指定

ALB インスタンスの信頼できるプロキシ IP アドレスを指定する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。XForwardedForClientSourceIpsEnabled パラメーターを構成して、ALB インスタンスが X-Forwarded-For ヘッダーからクライアント IP アドレスを取得できるようにします。次に、XForwardedForClientSourceIpsTrusted パラメーターを構成して、信頼できるプロキシ IP アドレスのリストを指定します。このようにして、ALB インスタンスは X-Forwarded-For ヘッダー内の IP アドレスを右端の IP アドレスから左端の IP アドレスまで走査します。信頼できる IP アドレスリストにない最初の IP アドレスがクライアント IP アドレスと見なされます。クライアント IP アドレスからのリクエストはスロットルされます。

重要

このパラメーターは、HTTP リスナーと HTTPS リスナーのみでサポートされています。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSourceIpsEnabled: true # true に設定すると、ALB インスタンスは X-Forwarded-For ヘッダーからクライアント IP アドレスを取得できます。値を true に設定する場合は、XForwardedForClientSourceIpsTrusted パラメーターを有効な形式で構成する必要があります。false に設定すると、ALB インスタンスは X-Forwarded-For ヘッダーからクライアント IP アドレスを取得できなくなります。
      XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16  # 有効な IP アドレスまたは CIDR ブロックを入力します。このパラメーターは、XForwardedForClientSourceIpsEnabled が true に設定されている場合にのみ有効になります。
  ...

ネットワーク ACL の構成

ALB インスタンスのリスナーのネットワークアクセス制御リスト (ACL) を構成する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。次に、aclConfig パラメーターを構成して、ネットワーク ACL を有効にします。これにより、クライアントリクエストに対してきめ細かいアクセス制御を実装できます。ネットワーク ACL を構成して、指定した IP アドレスまたは CIDR ブロックからのアクセスを許可または拒否できます。詳細については、ACL を構成してアクセス制御を有効にするを参照してください。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTPS
    aclConfig: # リスナーのネットワーク ACL を有効にします。
      aclEntries:
      - 127.0.0.1/32 # アクセス制御のために ACL ルールに追加する CIDR ブロック。
      aclType: White # ネットワーク ACL のタイプ。有効な値: Black (ブラックリスト) と White (ホワイトリスト)。
  ...

リスナーの削除

ALB インスタンスには複数のリスナーが存在する場合があります。ALB インスタンスのリスナーを削除するには、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。次に、albconfig.spec.listeners パラメーターからリスナーを削除します。

重要

リスナーを削除する前に、すべての Ingress をリスナーから関連付けを解除する必要があります。そうしないと、リスナーを削除できず、システムはエラーをプロンプトします。

# 削除前。
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8002  # リスニングポート 8002 を削除します。
    protocol: HTTP

# 削除後。
  listeners:
  - port: 8001
    protocol: HTTP