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

Container Service for Kubernetes:AlbConfig を使用して ALB インスタンスを構成する

最終更新日:Jul 03, 2025

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

目次

カテゴリ

機能

参照

ALB インスタンス構成

ALB 管理

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

詳細構成

ALB リスナー構成

リスナー管理

詳細構成

セキュリティ設定

前提条件

アノテーションの使用上の注意

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

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

AlbConfig を作成する

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

重要

ALB Ingress コントローラーをインストールするときに、[作成] または [既存のものを選択][ゲートウェイ ソース] パラメーターに選択すると、コントローラーは 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****  # 値を使用する vSwitch の ID に置き換えます。
          allocationId: eip-asdfas****          # 値をエラスティック IP アドレス(EIP)ID に置き換えます。 デフォルトのオプションは、パブリック IP アドレスを自動的に割り当てることです。
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
          allocationId: eip-dpfmss****          # 値を EIP ID に置き換えます。
      listeners:
        - port: 80
          protocol: HTTP

    パラメーター

    説明

    spec.config.name

    ALB インスタンスの名前。

    spec.config.addressType

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

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

    • Intranet:ALB インスタンスはプライベート IP アドレスを使用します。 Ingress のドメイン名は、プライベート IP アドレスに解決されます。 したがって、ALB インスタンスは、ALB インスタンスがデプロイされている virtual private cloud(VPC)内からのみアクセスできます。

    重要

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

    spec.config.zoneMappings

    • ALB Ingress によって使用される vSwitch の ID。

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

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

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

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

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

      • EIP が指定されていない場合は、デフォルトオプションの「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 # AlbConfig の名前。
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic # このパラメーターを使用して、ALB インスタンスに IP アドレスを割り当てる方法を指定できます。 有効な値は Dynamic と Fixed です。 Dynamic の値は動的 IP アドレスを指定します。 Fixed の値は静的 IP アドレスを指定します。
        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: **** # SLB コンソールで作成された標準 ALB インスタンスまたは WAF 対応 ALB インスタンスの ID。
    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 によって管理できません。 AlbConfig を使用して作成または更新されたリスナーは ACK によって管理され、デフォルトでは名前の形式は ingress-auto-listener-{port} です。 上記の形式ではない名前のリスナーは、SLB コンソールで管理されます。

forceOverride

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

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

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

listenerForceOverride

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

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

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

EIP 帯域幅プラン構成

この機能を有効にすると、AlbConfig を使用してエラスティック IP アドレス(EIP)帯域幅プランを 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***  # EIP 帯域幅プランの ID。

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> # <ALBCONFIG_NAME> を AlbConfig の名前に置き換えます。

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

    ...
     spec:
       config:
         name: new_alb # ALB インスタンスの新しい名前。
    ...

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

ALB Ingress は、Kubernetes ネイティブの IngressClass リソースを使用して AlbConfig に関連付けます。 これは、IngressClass リソース内で特定のパラメーターを構成することによって実装されます。

  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 # 関連付ける AlbConfig の名前。

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

    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 # Ingress の関連付けに使用する IngressClass の名前を指定します。
      rules:
      - http:
          paths:
          # コンテキストパスを構成します。
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # コンテキストパスを構成します。
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80

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

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      ingressClassName: alb
      rules:
      - http:
          paths:
          # コンテキストパスを構成します。
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # コンテキストパスを構成します。
          - 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 パラメーターに異なる IngressClass を指定します。

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

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-2
    spec:
      config:
        name: alb-2        # ALB インスタンスの名前。
        addressType: Internet  # ALB インスタンスにはパブリック IP アドレスがあります。
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 使用する vSwitch の ID。
        - 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 # 関連付ける AlbConfig の名前。

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

    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 # 関連付ける AlbConfig の名前。
  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 IngressClass に関連付けられ、alb-2 IngressClass は alb-2 ALB インスタンスに関連付けられます。

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

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          # コンテキストパスを構成します。
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # コンテキストパスを構成します。
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80

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

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          # コンテキストパスを構成します。
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # コンテキストパスを構成します。
          - 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 # IPv4/IPv6 デュアルスタックを有効にします。
    ...

カスタム 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 # セキュリティグループの ID を指定します。
  #...

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

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

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

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

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

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

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

AlbConfig を削除する

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

重要

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

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

kubectl delete AlbConfig <AlbConfig_NAME> # <AlbConfig_NAME> を削除する AlbConfig の名前に置き換えます。

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

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

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

    重要

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

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

    重要

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

    kubectl delete AlbConfig <AlbConfig_NAME> # <AlbConfig_NAME> を削除する 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 パラメーターの構成。
  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 パラメーターを設定します。 リスナーの portprotocol、またはその他のパラメーターを変更すると、元のリスナーが削除され、変更されたパラメーターに基づいて新しいリスナーが作成されます。

リスナーは、アプリケーション層で HTTP、HTTPS、および Quick UDP Internet Connections(QUIC)のプロトコルをサポートしています。

重要

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

HTTP リスナーを作成する

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 80
      protocol: HTTP # 有効な値:HTTP、HTTPS、および 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 # 証明書 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 # デフォルトのタイムアウト期間は 60 秒です。
  ...

データ圧縮を構成する

この機能を有効にすると、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。

  • 応答の Content-Length の値が 1,024 バイトを超える場合にのみ、データ圧縮がトリガーされます。

次の 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 # このパラメーターを 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 アドレスを指定する

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

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

重要

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

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata: 
  name: alb
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 を構成する

AlbConfig を構成して、ALB インスタンスのリスナーのネットワークアクセス制御リスト(ACL)を有効にできます。 ネットワーク ACL を構成して、特定の IP アドレスまたは CIDR ブロックからのアクセスを許可または拒否できます。 これにより、クライアントリクエストに対してきめ細かいアクセス制御を実装できます。 詳細については、「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 をリスナーから関連付けを解除する必要があります。 そうしないと、リスナーの削除に失敗し、システムからエラーがプロンプト表示されます。

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

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