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

Container Compute Service:AlbConfig の設定

最終更新日:Aug 29, 2026

AlbConfig は、ALB Ingress Controller が提供するカスタムリソース定義 (CRD) です。ALB Ingress Controller は、AlbConfig を使用して ALB インスタンスとリスナーを設定します。本トピックでは、AlbConfig の作成、変更、更新、および Log Service の有効化方法について説明します。

前提条件

注意事項

  • リソース設定の変更や更新には、kubectl edit コマンドを直接使用することを推奨します。kubectl apply コマンドを使用してリソースを変更または更新する必要がある場合は、kubectl diff コマンドを実行して変更内容をプレビューしてから、kubectl apply コマンドを実行してください。変更内容が期待通りであることを確認した上で、kubectl apply コマンドを使用して、Kubernetes クラスターに変更を適用してください。

  • 古いバージョンの Nginx Ingress Controller は、Ingress リソースの spec.ingressClassName フィールドを認識しません。Nginx Ingress と ALB Ingress の両方のコントローラーが同じクラスターで実行されている場合、古い Nginx Ingress Controller が ALB Ingress の設定に干渉したり、上書きしたりする可能性があります。この問題を防ぐには、Nginx Ingress Controller を最新バージョンに更新するか、アノテーションを使用して ALB Ingress の ingressClass を指定してください。詳細については、「ALB Ingress の高度な機能」をご参照ください。

AlbConfig の作成

AlbConfig は単一の ALB インスタンスに対応しますが、複数の Ingress に関連付けることができます。複数の ALB インスタンスを使用するには、複数の AlbConfig を作成します。以下の手順では、AlbConfig の作成方法について説明します。

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

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
        name: alb-test
        addressAllocatedMode: Dynamic          # Dynamic または Fixed。ALB インスタンスの IP アドレスモードを指定します。
        addressType: Internet
        zoneMappings:                          # 高可用性のため、少なくとも 2 つの異なるゾーンの vSwitch を選択してください。
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 実際の vSwitch ID に置き換えてください (ゾーン 1)。
        - vSwitchId: vsw-uf6nun9tql5t8nh15**** # 実際の vSwitch ID に置き換えてください (ゾーン 2、ゾーン 1 とは異なる必要があります)。
      listeners:
        - port: 80
          protocol: HTTP

    パラメータ

    説明

    spec.config.name

    (オプション) ALB インスタンスの名前。

    spec.config.addressType

    (必須) ロードバランサーのアドレスタイプ。有効な値:

    • Internet (デフォルト):ロードバランサーはパブリック IP アドレスを持ちます。DNS レコードはパブリック IP アドレスに解決され、ロードバランサーはインターネット経由でアクセス可能になります。

    • Intranet:ロードバランサーはプライベート IP アドレスのみを持ちます。DNS レコードはプライベート IP アドレスに解決され、ロードバランサーはデプロイされている VPC 内からのみアクセス可能になります。

    spec.config.zoneMappings

    (必須) ALB Ingress の vSwitch ID を指定します。マルチゾーンリージョンでは、少なくとも 2 つの 異なるゾーン の vSwitch ID を指定する必要があります。シングルゾーンリージョンでは、1 つの vSwitch ID で十分です。vSwitch は、クラスターと同じ VPC 内にあり、ALB をサポートするゾーンに存在する必要があります。ALB Ingress がサポートするリージョンとゾーンの詳細については、「ALB がサポートするリージョンとゾーン」をご参照ください。

    重要

    ALB インスタンスのアドレスタイプまたはゾーンを更新することはできません。addressType および zoneMappings パラメータは、AlbConfig の作成時にのみ有効であり、後から更新することはできません。

    spec.config.addressAllocatedMode

    (オプション) AlbConfig では、addressAllocatedMode パラメータを設定することで、ALB インスタンスの IP モードを指定できます。有効な値は次のとおりです。

    • Dynamic:動的 IP モード。

    • Fixed:固定 IP モード。

    クラスターに ALB Ingress Controller アドオンをインストールすると、システムはデフォルトで AlbConfig を作成します。vSwitchId を除くすべての設定パラメータは、デフォルト設定で作成されます。

    デフォルト設定

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo                      # AlbConfig の名前。
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic # AlbConfig では、addressAllocatedMode パラメータを使用して ALB インスタンスの IP アドレスモードを指定できます。有効な値:Dynamic (動的 IP モード) および Fixed (固定 IP モード)。
        addressType: Internet
        billingConfig:
          internetBandwidth: 0
          internetChargeType: ""
          payType: PostPay
        deletionProtectionEnabled: true
        edition: Standard
        forceOverride: false
        zoneMappings:                                 # 高可用性のため、少なくとも 2 つの異なるゾーンの vSwitch を選択してください。
        - vSwitchId: vsw-wz92lvykqj1siwvif****        # 実際の vSwitch ID に置き換えてください (ゾーン 1)。
        - vSwitchId: vsw-wz9mnucx78c7i6iog****        # 実際の vSwitch ID に置き換えてください (ゾーン 2、ゾーン 1 とは異なる必要があります)。
    status:
      loadBalancer:
        dnsname: alb-s2em8fr9debkg5****.cn-shenzhen.alb.aliyuncs.com
        id: alb-s2em8fr9debkg5****
  2. 次のコマンドを実行して、AlbConfig を作成します。

    kubectl apply -f alb-test.yaml

    期待される出力:

    albconfig.alibabacloud.com/alb-demo created
  3. 次のコマンドを実行して、AlbConfig を表示します。

    kubectl -n kube-system get AlbConfig

    期待される出力:

    NAME       ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID                 AGE
    alb-demo   alb-******   alb-******.<regionID>.alb.aliyuncs.com   443/HTTPS       11055487-cn-<regionID>  2d

AlbConfig の更新

Kubernetes では、kubectl apply コマンドは上書き更新を実行しますが、kubectl edit コマンドは既存のオブジェクトに基づいて増分更新を実行します。AlbConfig を介してすでに作成された ALB インスタンスの場合は、kubectl edit コマンドを使用してインスタンス設定を増分更新してください。以下の手順では、AlbConfig の更新方法について説明します。

  1. 次のコマンドを実行して、AlbConfig を表示します。

    kubectl -n kube-system get AlbConfig

    期待される出力:

    NAME       ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID                 AGE
    alb-demo   alb-******   alb-******.<regionID>.alb.aliyuncs.com   443/HTTPS       11055487-cn-<regionID>  2d
  2. 次のコマンドを実行して、AlbConfig を更新します。

    重要
    • リソース設定の変更や更新には、kubectl edit コマンドを直接使用することを推奨します。kubectl apply コマンドを使用してリソースを更新する必要がある場合は、kubectl diff コマンドを実行して変更内容をプレビューしてから、kubectl apply コマンドを実行してください。変更内容が期待通りであることを確認した上で、kubectl apply コマンドを使用して、Kubernetes クラスターに変更を適用してください。

    • kubectl apply コマンドを使用して AlbConfig を上書きする場合、動作は YAML ファイルに listeners フィールドが含まれているかどうかによって異なります。フィールドが含まれていない場合、既存のリスナーは影響を受けません。フィールドが含まれている場合、リスナーは現在の設定に一致するように調整されます。そのため、ポート 80 および 443 の一般的なリスナーなど、必要なリスナーの完全なリストを指定する必要があります。

    kubectl -n kube-system edit AlbConfig alb-demo

    AlbConfig 設定ファイルで、内容を更新します。たとえば、AlbConfig の名前を test に更新します。

    ...
     spec:
       config:
         name: test # 更新後の名前を入力します。
    ...

AlbConfig と Ingress の関連付け

標準の Kubernetes IngressClass を使用して、Ingress を AlbConfig に関連付けることができます。まず、AlbConfig を参照する IngressClass を作成し、次に Ingress リソースでその IngressClass を指定します。

  1. alb.yaml という名前のファイルを作成し、以下の内容をコピーして IngressClass を作成します。

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

    kubectl apply -f alb.yaml

    期待される出力:

    ingressclass.networking.k8s.io/alb created
  3. ingress.yaml という名前のファイルを作成し、以下の内容をコピーします。ingressClassName パラメータは、AlbConfig に関連付ける alb という名前の IngressClass を指定します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb
      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
  4. 次のコマンドを実行して、Ingress を作成します

    kubectl apply -f ingress.yaml

    期待される出力:

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

これらの手順を完了すると、AlbConfig は IngressClass を使用して Ingress に関連付けられます。

ALB インスタンス名の変更

次のコマンドを実行して、ALB インスタンスの名前を変更します。

kubectl -n kube-system edit AlbConfig alb-demo

設定ファイルの config.name の値を変更します。ファイルを保存すると、新しい名前が自動的に有効になります。

...
  spec:
    config:
      name: test   # 更新後の名前を入力します。
...

IPv6 アドレスの使用

ALB インスタンスの作成時に IPv6 サポートを有効にするには、AlbConfig で addressIpVersion フィールドを DualStack に設定します。

重要

addressIpVersion フィールドは、インスタンスの作成時にのみ有効であり、後から変更することはできません。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
    addressIpVersion: DualStack
    ...

TLS セキュリティポリシーの指定

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

アクセスログの有効化

ALB Ingress のアクセスログを有効にするには、AlbConfig で logProjectlogStore を指定します。

説明
  • logProject は手動で作成する必要があります。logProject の作成方法の詳細については、「プロジェクトの管理」をご参照ください。

  • logStore の名前は alb_ で始まる必要があります。指定した logStore が存在しない場合は、自動的に作成されます。

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

設定を保存した後、Log Service コンソールに移動し、宛先 LogStore を選択して、収集されたアクセスログを表示できます。

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

既存の ALB インスタンスを再利用するには、AlbConfig の作成時に ALB インスタンス ID を指定します。既存の ALB インスタンスは、Application Load Balancer (ALB) コンソールで作成された Standard または WAF 対応エディションのインスタンスである必要があります。ベーシックエディションの ALB インスタンスは再利用できません。ALB インスタンスは、同じクラスター内の単一の AlbConfig によってのみ再利用できます。複数のクラスター間で 1 つの ALB インスタンスを再利用すること、または同じクラスター内の複数の AlbConfig で 1 つの ALB インスタンスを再利用することはサポートされていません。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: **** # ALB コンソールで作成された Standard または WAF 対応エディションの ALB インスタンスの ID。
    forceOverride: false
    listenerForceOverride: false

次の表では、パラメータについて説明します。

パラメータ

説明

id

  • id フィールドが存在しないか、id フィールドが空の場合、ALB インスタンスが再利用されていないことを示します。この場合、forceOverride および listenerForceOverride フィールドは効果がありません。

  • id フィールドが有効な値に設定されている場合、ALB インスタンスは再利用されます。

重要

インスタンスを再利用する場合は、リスナー名を手動で変更しないでください。変更すると、ACS がリスナーを正しく管理できなくなる可能性があります。AlbConfig によって作成または更新されたリスナーは ACS によって管理され、リスナー名はデフォルトで ingress-auto-listener-{port} の形式になります。他の形式の名前を持つリスナーは、ALB コンソールで管理されます。

forceOverride

再利用モードで ALB インスタンスの属性を強制的に上書きするかどうかを指定します。

  • true:AlbConfig は、ALB インスタンスとそのすべてのリスナーの既存の設定を完全に上書きします。

  • false:ALB インスタンスの属性は強制的には上書きされません。リスナー属性を強制的に上書きするかどうかは、listenerForceOverride フィールドによって決まります。

listenerForceOverride

再利用モードでリスナー属性を強制的に上書きするかどうかを指定します。

  • true:リスナー属性を強制的に上書きします。ALB Ingress Controller は、ALB インスタンスのすべてのリスナーを管理します。リスナーの存在と設定は、AlbConfig によって決定されます。

  • false:リスナー属性は強制的に上書きされません。ALB Ingress Controller は、クラスター内の AlbConfig によって作成されたリスナーのみを管理します。リスナー名はデフォルトの形式 ingress-auto-listener-{port} を使用し、その設定はクラスター内の AlbConfig によって決定されます。その他のリスナーは、AlbConfig によって管理されません。

リスナーの作成

再利用シナリオでは、AlbConfig を変更することで、新しいリスナーを追加したり、既存のリスナーの設定を編集したりできます。kubectl edit albconfig <Albconfig_Name> コマンドを実行します。AlbConfig で portprotocol を設定して、対応するリスナーを作成します。portprotocol は、リスナーの一意のプロパティです。リスナーの portprotocol、またはその他のプロパティを変更すると、システムは元のリスナーを削除し、新しいリスナーを作成してそれを置き換えます。

説明

HTTP プロトコルは WebSocket と自動的に互換性があり、特別な設定は必要ありません。

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

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

複数の ALB インスタンスを使用するには、spec.ingressClassName パラメータを使用して、各 Ingress リソースに異なる IngressClass を指定します。

  1. alb-demo2.yaml という名前のファイルを作成し、以下の内容をコピーして AlbConfig を作成します。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: demo
    spec:
      config:
        name: alb-demo2                        # ALB インスタンスの名前。
        addressType: Internet                  # ロードバランサーはパブリック IP アドレスを持ちます。
        zoneMappings:                          # 高可用性のため、少なくとも 2 つの異なるゾーンの vSwitch を選択してください。
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 実際の vSwitch ID に置き換えてください (ゾーン 1)。
        - vSwitchId: vsw-uf6nun9tql5t8nh15**** # 実際の vSwitch ID に置き換えてください (ゾーン 2、ゾーン 1 とは異なる必要があります)。
  2. 次のコマンドを実行して、AlbConfig を作成します。

    kubectl apply -f alb-demo2.yaml

    期待される出力:

    AlbConfig.alibabacloud.com/demo created
  3. alb.yaml という名前のファイルを作成し、以下の内容をコピーして IngressClass を作成します。

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

    kubectl apply -f alb.yaml

    期待される出力:

    ingressclass.networking.k8s.io/alb-demo2 created
  5. ingress.yaml という名前のファイルを作成し、以下の内容をコピーします。ingressClassName パラメータを使用して、異なる ALB インスタンスを指定します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: demo
      namespace: default
    spec:
      ingressClassName: alb-demo2
      rules:
        - host: ""
          http:
            paths:
              - backend:
                 service:
                  name: demo-service
                  port:
                    number: 80
                path: /hello
                pathType: ImplementationSpecific

リスナーのリクエストタイムアウトの設定

AlbConfig では、リスナーを指定し、接続リクエストのタイムアウトを秒単位で設定できます。値は 1 ~ 180 の範囲内である必要があります。タイムアウト期間内にバックエンドサーバーが応答しない場合、ロードバランサーはクライアントに HTTP 504 エラーを返します。デフォルトのタイムアウトは 60 秒です。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 60
  ...

データ圧縮の使用

AlbConfig では、リスナーを指定し、データ圧縮を有効または無効にすることができます。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: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: false
  ...

クライアント IP アドレスの取得

リスナーを設定して X-Forwarded-For ヘッダーフィールドを含めることができます。これにより、バックエンドサーバーはクライアントの実際の IP アドレスを取得できます。XForwardedForEnabled の有効な値は次のとおりです。

  • true:クライアントの実際の IP アドレスを取得します。

  • false:クライアントの実際の IP アドレスを取得しません。

説明

このパラメータは、HTTP および HTTPS リスナーに対してのみ設定できます。

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

リスナープロトコルの取得

AlbConfig では、XForwardedForProtoEnabled フィールドを使用して、インスタンスのリスナープロトコルを取得できます。値は次のとおりです。

  • true:インスタンスのリスナープロトコルを取得します。

  • false:インスタンスのリスナープロトコルを取得しません。

説明

このパラメータは、HTTP および HTTPS リスナーに対してのみ設定できます。

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

ロードバランサー ID の取得

リスナーを設定して SLB-ID ヘッダーを含めることができます。これにより、バックエンドサーバーはロードバランサーインスタンスの ID を取得できます。XForwardedForSLBIdEnabled の有効な値は次のとおりです。

  • true:ロードバランサーインスタンスの ID を取得します。

  • false:ロードバランサーインスタンスの ID を取得しません。

説明

このパラメータは、HTTP および HTTPS リスナーに対してのみ設定できます。

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

リスナーポートの取得

リスナーを設定して X-Forwarded-Port ヘッダーを含めることができます。これにより、バックエンドサーバーはインスタンスのリスナーポートを取得できます。XForwardedForSLBPortEnabled の有効な値は次のとおりです。

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

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

説明

このパラメータは、HTTP および HTTPS リスナーに対してのみ設定できます。

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

クライアントポートの取得

リスナーを設定して X-Forwarded-Client-srcport ヘッダーを含めることができます。これにより、バックエンドサーバーはクライアントの送信元ポートを取得できます。XForwardedForClientSrcPortEnabled の有効な値は次のとおりです。

  • true:ロードバランサーインスタンスのクライアントポートを取得します。

  • false:ロードバランサーインスタンスのクライアントポートを取得しません。

説明

このパラメータは、HTTP および HTTPS リスナーに対してのみ設定できます。

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

ACL アクセス制御の設定

AlbConfig を使用して、ALB リスナーのアクセス制御を有効にすることができます。インバウンドトラフィックに対して許可ルールまたは拒否ルールを設定することで、クライアントリクエストを正確に制御し、リクエストの転送を管理できます。アクセスコントロールリスト (ACL) の詳細については、「アクセス制御」をご参照ください。

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

主なパラメータは次のとおりです。

  • aclType:リスナーの ACL がブラックリストかホワイトリストかを指定します。有効な値:Black (ブラックリスト) および White (ホワイトリスト)。

  • aclEntries:アクセス制御エントリーの IP アドレス範囲を指定します (例:127.0.0.1/32)。

ALB インスタンスの削除

ALB インスタンスは AlbConfig に対応しています。したがって、AlbConfig を削除することで、対応する ALB インスタンスを削除できます。AlbConfig を削除する前に、それに関連付けられているすべての Ingress を削除する必要があります。

kubectl delete -n kube-system AlbConfig alb-demo

alb-demo を、削除したい AlbConfig の名前に置き換えてください。

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

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

  1. AlbConfig に関連付けられているすべての Ingress を削除します。

    kubectl delete -n <NAMESPACE> ingress <INGRESS_NAME>  # <INGRESS_NAME> と <NAMESPACE> を、削除したい Ingress の名前と名前空間に置き換えてください。
  2. kubectl edit コマンドを使用して AlbConfig を変更し、すべてのリスナーを削除します。これを行うには、spec.listeners フィールド下のすべてのエントリーを削除します。

    重要

    この手順は、ALB Ingress Controller のバージョンが v2.10.0-aliyun.1 以前の場合にのみ実行してください。

  3. AlbConfig を削除します。

    kubectl -n kube-system delete AlbConfig alb-demo # alb-demo を、削除したい AlbConfig の名前に置き換えてください。