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

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

最終更新日:Jan 22, 2025

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

目次

カテゴリ

機能

関連ドキュメント

ALBインスタンス設定

ALB管理

再利用されたALBインスタンス管理

詳細構成

ALBリスナーの設定

リスナー管理

詳細構成

セキュリティ設定

前提条件

  • ALB Ingressコントローラーがクラスターにインストールされています。 詳細については、「ALB Ingressコントローラーの管理」をご参照ください。

    説明

    ALB Ingressを使用してACK専用クラスターにデプロイされたサービスにアクセスするには、まずALB Ingressコントローラーが必要とする権限をクラスターに付与する必要があります。 詳細については、「ACK専用クラスターにALB Ingressコントローラーへのアクセスを許可する」をご参照ください。

    • 異なるゾーンに存在する2つのvSwitchが作成され、ACKクラスターと同じ仮想プライベートクラウド (VPC) にデプロイされます。 詳細については、「vSwitchの作成と管理」をご参照ください。

注釈使用法ノート

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

  • Flannelネットワークプラグインを使用する場合、ALB IngressゲートウェイのバックエンドサービスはNodePortまたはLoadBalancerタイプである必要があります。

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. 
          allocationId: eip-asdfas****          # Replace the value with your elastic IP address (EIP) ID. The default option is to automatically assign a public IP address. 
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
          allocationId: eip-dpfmss****          # Replace the value with the EIP ID. 
      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。

      • 少なくとも2つのvSwitch IDを指定する必要があり、vSwitchは異なるゾーンにデプロイする必要があります。 vSwitchのゾーンはALBでサポートされている必要があります。 サポートされているゾーンの詳細については、「ALBが利用可能なリージョンとゾーン」をご参照ください。

      • vSwitchはクラスターと同じVPCにあります。

      重要
      • 1つのゾーンのみを含むリージョンでvSwitchを指定する場合は、1つのvSwitch IDを指定できます。

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

    • zoneMappingsパラメーターで、インターネットに接続するALBインスタンスが依存するEIPのIDを指定できます。

      • EIPが指定されていない場合は、デフォルトのオプションを使用します。 その後、BGPマルチライン帯域幅とデフォルトのセキュリティ保護モードを使用する従量課金EIPが自動的に作成され、ALBインスタンスに関連付けられます。 詳細は、「ALB課金」をご参照ください。

      • または、既存のEIPをALBインスタンスに関連付けることもできます。

      重要
      • インターネット共有帯域幅インスタンスに追加されていない従量課金 (データ転送課金) EIPのみをALBインスタンスに関連付けることができます。

      • 同じALBインスタンスの異なるゾーンに指定するEIPは、同じタイプである必要があります。

    クラスターに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 are 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パラメーターが有効な値に設定されている場合、ALBインスタンスは再利用されます。

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

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

      • listenerForceOverrideパラメーターがfalseに設定されている場合、ALBインスタンス属性は強制的に上書きされません。

      • listenerForceOverrideパラメーターがtrueに設定されている場合、コントローラーはすべてのALBインスタンスのリスナーを管理します。 作成したリスナーの名前がコントローラーによって生成された形式と一致する場合、リスナーはコントローラー管理リスナーと見なされ、チューニング中にオーバーライドされます。

重要

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

forceOverride

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

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

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

listenerForceOverride

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

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

  • false: ALBインスタンス属性を上書きしません。

EIP帯域幅プランの設定

この機能を有効にすると、AlbConfigsを使用してEIP (elastic IP address) 帯域幅プランをALBインスタンスにバインドできます。

説明

このパラメーターは、ネットワークタイプがインターネット接続に設定されている場合にのみ使用できます。 インターネット共有帯域幅インスタンスの購入方法の詳細については、「インターネット共有帯域幅の作成」をご参照ください。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    name: alb
    addressType: Internet
    edition: Standard
    zoneMappings:
    - vSwitchId: vsw-2vcqeyvwsnd***
    - vSwitchId: vsw-2vcbhjlqu7y***
    billingConfig:
      bandWidthPackageId: cbwp-2vcjucp49otd8qolhm***  # The ID of the EIP bandwidth plan.

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 has 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のaddressIpVersionパラメーターは、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が作成されます。

  • 既存のALBインスタンスを再利用し、AlbConfigを使用してSLSを有効にする場合、ALBインスタンスの属性を強制的に上書きするには、forceOverrideパラメーターをtrueに設定する必要があります。 詳細については、「既存のALBインスタンスの再利用」をご参照ください。

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

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

AlbConfigの削除

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.

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に一致します。 したがって、削除されます。

HTTPSリスナー作成

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のサポート」をご参照ください。

証明書の指定

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
  ...

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

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 # This parameter cannot be set to false. 
  #...

クライアントが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。 Blackの値は、ブラックリストを指定する。 Whiteの値はホワイトリストを指定します。

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

リスナーの削除

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

重要

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

# The configurations before the deletion. 
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8002  # Delete listening port 8002. 
    protocol: HTTP

# The configurations after the deletion. 
  listeners:
  - port: 8001
    protocol: HTTP