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

Container Service for Kubernetes:AlbConfigsを使用したALBリスナーの設定

最終更新日:Dec 10, 2024

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

前提条件

Listenersパラメーターの説明

用語

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

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

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

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

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

いいえ

条件

結果

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

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

リスナーは最後に適用された構成アノテーションにあります

1

必須

必須

-(無関係)

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

2

必須

選択可能

-(無関係)

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

3

選択可能

-(無関係)

必須

リスナーがライブオブジェクト構成ファイルから削除されます。 ただし、リスナーのフィールドをデフォルト設定にリセットすることもできます。

4

継続しない

継続する

選択可能

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

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

# The content of the object configuration file. 
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8005 # Add port 8005.
    protocol: HTTP

# The content of the live object configuration file. 
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8002  # Delete port 8002.
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8004  # Delete port 8004.
    protocol: HTTP
    
# The content of the last-applied-configuration annotation. 
  listeners:
  - port: 8001 
    protocol: HTTP
  - port: 8002  # Delete port 8002.
    protocol: HTTP
  - port: 8003
    protocol: HTTP

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

# The configuration of the Listeners parameter.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8005
    protocol: HTTP
  • ポート8001とポート8003はルール1に一致します。 したがって、それらは保持されます。

  • ポート8005はルール2に一致します。 したがって、それは追加されます。

  • ポート8002はルール3に一致します。 したがって、削除されます。

  • ポート8004はルール4に一致します。 したがって、削除されます。

リスナーの作成

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 # Valid values: HTTP, HTTPS, and 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 # The certificate ID. 
      IsDefault: true
    port: 443
    protocol: HTTPS
  ...

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

カスタムTLSセキュリティポリシーを設定する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、AlbConfigを変更します。次に、securityPolicyIdパラメーターを設定して、セキュリティポリシーIDを指定します。 AlbConfigでHTTPSリスナーを設定するときに、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 # The security policy 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 # The connection timeout period for the listener. Valid values: 1 to 180. If you leave the parameter empty, the default value is used. 
  ...

データ圧縮の設定

データ圧縮により、ファイルのサイズを縮小して、伝送効率とネットワークパフォーマンスを向上させることができます。 データ圧縮を設定する場合は、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 # A value of true enables data compression for specific types of files. A value of false disables data compression. 
  ...

クライアント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 # This parameter cannot be set to false. 
  ...

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 # A value of true retrieves the listening protocol used by the ALB instance. A value of true does not retrieve the listening protocol used by the ALB instance. 
  ...

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 # A value of true retrieves the ID of the ALB instance. A value of true does not retrieve the ID of the ALB instance. 
  ...

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 # A value of true retrieves the listening ports of the ALB instance. A value of false does not retrieve the listening ports of the ALB instance. 
  ...

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

ALBインスタンスに信頼できるプロキシIPアドレスを指定する場合は、kubectl edit albconfig <Albconfig_Name> コマンドを実行して、ALBインスタンスの設定に使用するAlbConfigを変更します。 ALBインスタンスがX-Forwarded-ForヘッダーからクライアントIPアドレスを取得できるように、XForwardedForClientSourceIpsEnabledパラメーターを設定します。 次に、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 # A value of true allows the ALB instance to retrieve client IP addresses from the X-Forwarded-For header. If you set the value to true, you must configure the XForwardedForClientSourceIpsTrusted parameter in a valid format. A value of false forbids the ALB instance from retrieving client IP addresses from the X-Forwarded-For header. 
      XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16  # Enter a valid IP address or CIDR block. This parameter takes effect only when XForwardedForClientSourceIpsEnabled is set to true. 
  ...

ネットワークACLの設定

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

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
    aclConfig: # Enable network ACLs for the listener. 
      aclEntries:
      - 127.0.0.1/32 # The CIDR block that you want to add to the ACL rule for access control.
      aclType: White # The type of network ACL. Valid values: Black (blacklist) and White (whitelist). 
  ...

リスナーの削除

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

重要

リスナーを削除する前に、リスナーからすべてのIngressの関連付けを解除する必要があります。 そうしないと、リスナーの削除に失敗し、エラーが表示されます。

# Before deletion. 
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8002  # Delete listening port 8002. 
    protocol: HTTP

# After deletion. 
  listeners:
  - port: 8001
    protocol: HTTP