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

Container Service for Kubernetes:AlbConfigを使用したALBインスタンスの設定

最終更新日:Nov 21, 2024

AlbConfigは、Container Service for Kubernetes (ACK) がApplication Load Balancer (ALB) Ingressコントローラーに提供するCustomResourceDefinition (CRD) です。 ALB Ingressコントローラーは、AlbConfigsを使用してALBインスタンスとリスナーを設定します。 このトピックでは、AlbConfigを作成、変更、および更新する方法、およびSimple Log Service (SLS) を有効にする方法について説明します。

目次

カテゴリ

参照

ALBインスタンス設定

リスナーの設定

前提条件

使用上の注意

  • リソース設定を変更または更新するには、kubectl editコマンドを使用することを推奨します。 kubectl applyコマンドを使用してリソースを変更または更新する必要がある場合は、kubectl applyコマンドを実行する前に、まずkubectl diffコマンドを実行して変更をプレビューし、変更が期待どおりであることを確認する必要があります。 次に、kubectl applyコマンドを実行して、クラスター内のリソースに変更を適用します。

  • 以前のバージョンのNGINX Ingressコントローラーは、Ingressリソースのspec:ingressClassNameフィールドを認識できません。 NGINX IngressとALB Ingressの両方がACKクラスターに設定されている場合、ALB Ingressは以前のバージョンのNGINX Ingressコントローラーによって調整される可能性があります。 この問題を回避するには、できるだけ早くNGINX Ingressコントローラーを更新するか、アノテーションを使用してALB IngressのIngressClassesを指定します。 詳細については、「NGINX Ingressコントローラーの更新」または「高度なALB Ingress設定」をご参照ください。

AlbConfigの作成

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

重要

ALB Ingressコントローラーをインストールするときに、Gateway Sourceパラメーターとして [作成] または [既存の選択] を選択すると、コントローラーは自動的にalbという名前のAlbConfigとalbという名前のIngressClassを作成します。

  1. alb.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 ファイルは、AlbConfigを作成するために使用されます。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet
        zoneMappings:               
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Replace the value with the ID of the vSwitch that you want to use.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
      listeners:
        - port: 80
          protocol: HTTP

    パラメーター

    説明

    spec.config.name

    ALBインスタンスの名前。

    spec.config.addressType

    ALBインスタンスがサービスの提供に使用するIPアドレスのタイプ。 有効な値:

    • インターネット: ALBインスタンスはパブリックIPアドレスを使用します。 Ingressのドメイン名はパブリックIPアドレスに解決されます。 したがって、ALBインスタンスはインターネット経由でアクセスできます。 デフォルト値です。

    • イントラネット: ALBインスタンスはプライベートIPアドレスを使用します。 Ingressのドメイン名はプライベートIPアドレスに解決されます。 したがって、ALBインスタンスは、ALBインスタンスがデプロイされている仮想プライベートクラウド (VPC) 内でのみアクセス可能です。

    重要

    AlbConfigのaddressTypeパラメーターは、AlbConfigを作成した場合にのみ有効になります。このパラメーターは、AlbConfigを更新するときには有効になりません。

    spec.config.zoneMappings

    ALB Ingressによって使用されるvSwitchのID。 複数のゾーンを含むリージョンでvSwitchを指定する場合は、異なるゾーンで少なくとも2つのvSwitch IDを指定する必要があります。 1つのゾーンのみを含むリージョンでvSwitchを指定する場合は、vSwitch IDを1つだけ指定できます。 指定されたvSwitchは、ALBインスタンスでサポートされているゾーンにデプロイされ、クラスターと同じVPCにデプロイされている必要があります。 ALB Ingressでサポートされているリージョンとゾーンの詳細については、「ALBが利用可能なリージョンとゾーン」をご参照ください。

    重要
    • 複数のゾーンを含むリージョンでvSwitchを指定する場合は、異なるゾーンで少なくとも2つのvSwitch IDを指定する必要があります。

    • AlbConfigのzoneMappingsパラメーターは、AlbConfigを作成した場合にのみ有効になります。このパラメーターは、AlbConfigを更新するときには有効になりません。

    クラスターにALB Ingressコントローラーをインストールすると、デフォルトのAlbConfigを作成できます。デフォルトのAlbConfigのパラメーターは、vSwitchIDパラメーターを除き、次の設定を使用します。

    デフォルトのAlbConfig設定

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb # The name of the AlbConfig. 
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic # You can use this parameter to specify how an IP address is assigned to the ALB instance. Valid values: Dynamic and Fixed. A value of Dynamic specifies a dynamic IP address. A value of Fixed specifies a static IP address. 
        addressType: Internet
        billingConfig:
          internetBandwidth: 0
          internetChargeType: ""
          payType: PostPay
        deletionProtectionEnabled: true
        edition: Standard
        forceOverride: false
        zoneMappings:
        - vSwitchId: #...
        - vSwitchId: #...
    status:
      loadBalancer:
        dnsname: alb-s2em8fr9debkg5****.cn-shenzhen.alb.aliyuncs.com
        id: alb-s2em8fr9debkg5****
  2. 次のコマンドを実行して、AlbConfigを作成します。

    kubectl apply -f alb.yaml

    期待される出力:

    AlbConfig.alibabacloud.com/alb created
  3. 次のコマンドを実行して、AlbConfigを照会します。

    kubectl get AlbConfig

    期待される出力:

    NAME   ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb    alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m
    説明

    HTTPリスナーと証明書を設定する場合、PORT&PROTOCOLパラメーターとCERTIDパラメーターは空ではありません。 それ以外の場合、パラメータは出力で空になります。

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

既存のALBインスタンスを再利用する場合は、AlbConfigでALBインスタンスのIDを指定します。標準のALBインスタンス、またはALBコンソールで作成されたWeb Application Firewall (WAF) 対応のALBインスタンスを再利用できます。 基本ALBインスタンスは再利用できません。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: **** # The ID of the standard ALB instance or WAF-enabled ALB instance that is created in the SLB console. 
    forceOverride: false
    listenerForceOverride: false

下表に、各パラメーターを説明します。

パラメーター

説明

id

  • idパラメーターが存在しない場合、またはidパラメーターが指定されていない場合、ALBインスタンスは再利用されません。 この場合、forceOverrideおよびlistenerForceOverrideパラメーターは有効になりません。

  • idパラメーターが有効なインスタンスIDに設定されている場合、対応するALBインスタンスは再利用されます。

    • forceOverrideパラメーターがtrueに設定されている場合、ALBインスタンス属性とリスナー属性は強制的に上書きされます。

    • forceOverrideパラメーターがfalseに設定されている場合、ALBインスタンス属性は強制的に上書きされません。 この場合、listenerForceOverrideパラメーターは、リスナー属性を強制的に上書きするかどうかを決定します。

重要

ALBインスタンスを再利用する場合は、リスナー名を変更しないことを推奨します。 そうでない場合、リスナーはACKで管理できません。 AlbConfigsを使用して作成または更新されたリスナーはACKで管理され、その名前はデフォルトでingress-auto-listener-{port} 形式です。 名前が上記の形式でないリスナーは、SLBコンソールで管理されます。

forceOverride

ALBインスタンスの再利用時にALBインスタンス属性を強制的に上書きするかどうかを指定します。 有効な値:

  • true: ALBインスタンス属性を強制的に上書きします。

  • false: ALBインスタンス属性を上書きしません。 このパラメーターをfalseに設定した場合、AlbConfigを変更してもALBインスタンス属性は変更されません。

listenerForceOverride

ALBインスタンスの再利用時にリスナー属性を強制的に上書きするかどうかを指定します。 有効な値:

  • true: リスナー属性を強制的に上書きします。

  • false: リスナー属性を上書きしません。

AlbConfigの更新

AlbConfigを使用して作成されたALBインスタンスを更新するには、kubectl editコマンドを使用することを推奨します。 AlbConfigを更新するには、次の手順を実行します。

  1. 次のコマンドを実行して、更新するAlbConfigの名前を照会します。

    kubectl get AlbConfig

    期待される出力:

    NAME       ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb        alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m
  2. 次のコマンドを実行して、AlbConfigを変更します。

    kubectl edit albconfig <ALBCONFIG_NAME> # Replace <ALBCONFIG_NAME> with the name of the AlbConfig.

    ビジネス要件に基づいてAlbConfig構成ファイルを更新します。 たとえば、spec.config.nameパラメーターを更新して、ALBインスタンスの名前をnew_albに変更できます。

    ...
     spec:
       config:
         name: new_alb # The new name of the ALB instance. 
    ...

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

IngressClassを使用して、AlbConfigをALB Ingressに関連付けることができます。 これを行うには、IngressClass設定でAlbConfigを指定します。

  1. ingress_class.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    Kubernetes 1.19以降を実行するクラスター

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb # The name of the AlbConfig that you want to associate.

    1.19より前のバージョンのKubernetesを実行するクラスター

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb
  2. 次のコマンドを実行してIngressClassを作成します。

    kubectl apply -f ingress_class.yaml

    期待される出力:

    ingressclass.networking.k8s.io/alb created
  3. ingress.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。ingressClassNameパラメーターをalb IngressClassに設定します。

    Kubernetes 1.19以降を実行するクラスター

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb # Specify the name of the IngressClass that is used to associate the Ingress.
      rules:
      - http:
          paths:
          # Configure a context path. 
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # Configure a context path. 
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80

    1.19より前のバージョンのKubernetesを実行するクラスター

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      ingressClassName: alb
      rules:
      - http:
          paths:
          # Configure a context path. 
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # Configure a context path. 
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  4. 次のコマンドを実行してIngressを作成します。

    kubectl apply -f ingress.yaml

    期待される出力:

    ingress.networking.k8s.io/cafe-ingress created

上記の手順を完了したら、IngressClassを使用してAlbConfigをIngressに関連付けることができます。

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

複数のALBインスタンス間でIngressを共有する場合は、Ingress設定ファイルのspec.ingressClassNameパラメーターで異なるIngressClassesを指定します。

  1. alb-2.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-2
    spec:
      config:
        name: alb-2        # The name of an ALB instance. 
        addressType: Internet  # The ALB instance uses a public IP address. 
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # The ID of the vSwitch that you want to use.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
  2. 次のコマンドを実行して、AlbConfigを作成します。

    kubectl apply -f alb-2.yaml

    期待される出力:

    AlbConfig.alibabacloud.com/alb-2 created
  3. ingress_class2.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 ファイルはIngressClassを作成するために使用されます。

    Kubernetes 1.19以降を実行するクラスター

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2 # The name of the AlbConfig that you want to associate.

    1.19より前のバージョンのKubernetesを実行するクラスター

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2 # The name of the AlbConfig that you want to associate.
  4. 次のコマンドを実行してIngressClassを作成します。

    kubectl apply -f ingress_class2.yaml

    期待される出力:

    ingressclass.networking.k8s.io/alb-2 created
  5. ingress2.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 ingressClassNameパラメーターを使用して、Ingressに関連付けるさまざまなALBインスタンスを指定できます。 次の例では、ingressClassNameパラメーターはalb-2に設定されています。 これにより、Ingressは、alb-2 albインスタンスに関連付けられているALB-2 IngressClassに関連付けられます。

    Kubernetes 1.19以降を実行するクラスター

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          # Configure a context path. 
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # Configure a context path. 
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80

    1.19より前のバージョンのKubernetesを実行するクラスター

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          # Configure a context path. 
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # Configure a context path. 
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  6. 次のコマンドを実行してIngressを作成します。

    kubectl apply -f ingress2.yaml

    期待される出力:

    ingress.networking.k8s.io/cafe-ingress2 created

IPv6の有効化

AlbConfigを使用してALBインスタンスを作成する場合、addressIpVersionパラメーターをDualStackに設定してIPv4/IPv6デュアルスタックを有効にできます。

重要

AlbConfigのaddressIpVerisonパラメーターは、AlbConfigを作成した場合にのみ有効になります。このパラメーターは、AlbConfigを更新するときには有効になりません。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    addressIpVersion: DualStack # Enable IPv4/IPv6 dual stack.
    ...

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

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

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    #...
  listeners:
  - port: 443
    protocol: HTTPS
    securityPolicyId: tls_cipher_policy_1_1 # Specify the ID of the security group.
  #...

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

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

説明
  • クラスターの作成時にクラスターに新規または既存のSLSプロジェクトを設定する場合は、次の手順を実行してプロジェクトを表示できます。 ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。 [クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。 [基本情報] タブで、クラスターに関連付けられているLog Serviceプロジェクトを表示できます。

  • logStoreパラメーターの値は、alb_ で始まる必要があります。 指定されたLogstoreが存在しない場合、指定された名前の新しいLogstoreが作成されます。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    accessLogConfig:
      logProject: "k8s-log-xz92lvykqj1siwvif****"
      logStore: "alb_****"
    #...

[基本情報] タブで、Log Service projectの右側にあるプロジェクト名をクリックして、収集したログをSLSコンソールで表示できます。

ALBインスタンスの削除

AlbConfigは、ALBインスタンスを設定するために使用されます。 したがって、対応するAlbConfigを削除することで、ALBインスタンスを削除できます。

重要

AlbConfigを削除する前に、AlbConfigに関連付けられているすべてのIngressを削除する必要があります。

次のコマンドを実行して、AlbConfigを削除します。

kubectl delete AlbConfig <AlbConfig_NAME> # Replace <AlbConfig_NAME> with the name of the AlbConfig that you want to delete.

再利用されたALBインスタンスのAlbConfigの削除

再利用されたALBインスタンスのAlbConfigを削除しても、ALBインスタンスは削除されません。 再利用されたALBインスタンスのAlbConfigを削除するには、次の手順を実行します。

  1. kubectl editコマンドを実行して、AlbConfigを変更し、spec.listenersパラメーターのすべてのエントリを削除します。 これにより、AlbConfigで指定されたすべてのリスナーが削除されます。

    重要

    クラスターにインストールされているALB Ingressコントローラーのバージョンが2.10.0-aliyun.1以降の場合は、この手順をスキップしてください。

  2. 次のコマンドを実行して、AlbConfigを削除します。

    重要

    AlbConfigを削除する前に、AlbConfigに関連付けられているすべてのIngressを削除する必要があります。

    kubectl delete AlbConfig <AlbConfig_NAME> # Replace <AlbConfig_NAME> with the name of the AlbConfig that you want to delete.

リスナーの作成

ALBインスタンスは、リスナーを使用して、リクエストのアプリケーション層情報に基づいて外部リクエストを受信および転送します。 ALBインスタンスは、ALBインスタンスのリスナーを作成した後にのみ、クライアントからのリクエストをリッスンします。

リスナーを作成するには、AlbConfigでportパラメーターとprotocolパラメーターを設定します。リスナーのポートプロトコル、またはその他のパラメーターを変更すると、元のリスナーが削除され、変更されたパラメーターに基づいて新しいリスナーが作成されます。

リスナーは、アプリケーション層で次のプロトコルをサポートします。HTTP、HTTPS、およびクイックUDPインターネット接続 (QUIC) 。

重要

同時に異なるプロトコルを使用する複数のリスナーを設定できます。 この場合、複数のリスニングポートを指定するには、必要なアノテーションをIngress設定に追加する必要があります。 詳細については、「カスタムリスニングポートの設定」をご参照ください。

HTTPリスナーの作成

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 80
      protocol: HTTP # Valid values: HTTP, HTTPS, and QUIC. 
  ...
説明

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

HTTPSリスナーの作成

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: HTTPS
  ...
重要

HTTPSリスナーの証明書を設定する必要があります。 詳細については、「HTTPSポートでの通信を暗号化する証明書の設定」をご参照ください。

QUICリスナーの作成

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: QUIC
  ...
重要

QUICリスナーは、HTTP/3プロトコルを使用するクライアントからリクエストを受信できます。 詳細については、「QUICリスナーを使用したHTTP/3のサポート」をご参照ください。

リスナーの接続タイムアウト時間を設定する

AlbConfigの設定で、リスナーの接続タイムアウト時間を設定できます。有効な値: 1 ~ 180 単位は秒です。 指定されたタイムアウト期間内にバックエンドサーバーから応答が受信されない場合、ALBはクライアントにHTTP 504エラーコードを返します。 接続タイムアウト時間を指定しない場合、デフォルトのタイムアウト時間 (60秒) が使用されます。 次のYAMLファイルはその例です。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 40 # The default timeout period is 60 seconds.
  ...

データ圧縮の設定

この機能を有効にすると、ALBインスタンスは特定のタイプのファイルを圧縮します。 gzipEnabledパラメーターの有効な値:

  • true: 特定の種類のファイルを圧縮します。

  • false: ファイルを圧縮しません。

説明

すべてのファイルタイプはBrotli圧縮をサポートしています。 次のファイルタイプがGzip圧縮をサポートしています: text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss + xml、application/atom + xml、application/xml、およびapplication/json。

次のYAMLファイルはその例です。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: true
  ...

クライアントのIPアドレスを保存する

この機能を有効にすると、ALBインスタンスは、バックエンドアプリケーションにリクエストを転送するときに、クライアントIPアドレスを指定するパラメーターをHTTPリクエストヘッダーに追加します。 XForwardedForEnabledパラメーターの有効値:

  • true: クライアントIPアドレスの保存を有効にします。

  • false: クライアントIPアドレスの保存を無効にします。

重要

このパラメーターは、HTTPリスナーとHTTPSリスナーで使用できます。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    #...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForEnabled: true # XForwardedForEnabled cannot be disabled.
  #...

クライアントがALBインスタンスへの接続に使用するポートを取得する

この機能を有効にすると、ALBインスタンスは、リクエストをバックエンドアプリケーションに転送するときに、クライアントポートを指定するパラメーターをHTTPリクエストヘッダーに追加します。 XForwardedForClientSrcPortEnabledパラメーターの有効値:

  • true: クライアントがALBインスタンスへの接続に使用するポートを取得します。

  • false: クライアントがALBインスタンスへの接続に使用するポートを取得しません。

重要

このパラメーターは、HTTPリスナーとHTTPSリスナーで使用できます。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSrcPortEnabled: true
  ...

ALBインスタンスで使用されるリスナープロトコルを取得する

この機能を有効にすると、ALBインスタンスは、リクエストをバックエンドアプリケーションに転送するときに、ALBインスタンスが使用するリスナープロトコルを指定するパラメーターをHTTPリクエストヘッダーに追加します。 XForwardedForProtoEnabledパラメーターの有効値:

  • true: ALBインスタンスで使用されるリスナープロトコルを取得します。

  • false: ALBインスタンスで使用されるリスナープロトコルを取得しません。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForProtoEnabled: true
  ...

ALBインスタンスのIDを取得する

この機能を有効にすると、ALBインスタンスは、リクエストをバックエンドアプリケーションに転送するときに、ALBインスタンスのIDを指定するパラメーターをHTTPリクエストヘッダーに追加します。 XForwardedForSLBIdEnabledパラメーターの有効値:

  • true: ALBインスタンスのIDを取得します。

  • false: ALBインスタンスのIDを取得しません。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBIdEnabled: true
  ...

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

この機能を有効にすると、ALBインスタンスは、リクエストをバックエンドアプリケーションに転送するときに、ALBインスタンスのリスニングポートを指定するパラメーターをHTTPリクエストヘッダーに追加します。 XForwardedForSLBPortEnabledパラメーターの有効値:

  • true: ALBインスタンスのリスナーポートを取得します。

  • false: ALBインスタンスのリスナーポートを取得しません。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBPortEnabled: true
  ...

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

ALBインスタンスがX-Forwarded-ForヘッダーフィールドからクライアントIPアドレスを取得できるようにするには、AlbConfigの設定でXForwardedForClientSourceIpsEnabledパラメーターを指定します。 XForwardedForClientSourceIpsTrustedパラメーターを使用して、信頼できるプロキシサーバーのIPアドレスのリストを指定できます。 このようにして、ALBインスタンスは、右端のIPアドレスから左端のIPアドレスまで、X-Forwarded-Forヘッダーフィールド内のIPアドレスをトラバースします。 信頼済みIPアドレスリストにない最初のIPアドレスは、クライアントIPアドレスと見なされます。

たとえば、X-Forwarded-Forの値が <クライアントIP、プロキシサーバーIP-1、プロキシサーバーIP-2> の場合、XForwardedForClientSourceIpsTrustedパラメーターでプロキシサーバーIP-1プロキシサーバーIP-2を指定できます。 このようにして、ALBインスタンスはクライアントIPアドレスを取得できます。

重要

このパラメーターは、HTTPリスナーとHTTPSリスナーで使用できます。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata: 
  name: alb
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) を有効にするようにAlbConfigを設定できます。 特定のIPアドレスまたはCIDRブロックからのアクセスを許可または拒否するようにネットワークACLを設定できます。 これにより、クライアント要求に対して詳細なアクセス制御を実装できます。 詳細については、「ACLの設定」をご参照ください。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
   #...
  listeners:
  - port: 80
    protocol: HTTP
    aclConfig:
      aclEntries:
      - 127.0.0.1/32
      aclType: White
  #...

パラメーター:

  • aclType: ネットワークACLのタイプ。 有効な値: Black (ブラックリスト) とWhite (ホワイトリスト) 。

  • aclEntries: アクセス制御のためにACLルールに追加するCIDRブロック。 例: 127.0.0.1/32。