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

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

最終更新日:Nov 09, 2025

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

前提条件

注意事項

  • リソース構成を直接変更および更新するには、kubectl edit コマンドを使用することを推奨します。kubectl apply コマンドを使用してリソースを変更および更新する必要がある場合は、kubectl apply コマンドを実行する前に、まず kubectl diff コマンドを実行して変更をプレビューしてください。変更が期待どおりであることを確認してから、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 に関連付けることができ、1 対多の関係を作成します。複数の ALB インスタンスを使用するには、複数の AlbConfig を作成する必要があります。AlbConfig を作成するには、次のステップに従います。

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

    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、最初のゾーンとは異なる必要があります) に置き換えてください。
      listeners:
        - port: 80
          protocol: HTTP

    パラメーター

    説明

    spec.config.name

    (任意) ALB インスタンスの名前。

    spec.config.addressType

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

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

    • Intranet: ロードバランサーはプライベート IP アドレスのみを持ちます。ドメイン名はプライベート IP アドレスに解決されます。ロードバランサーは、それが存在する VPC 内でのみアクセスできます。

    spec.config.zoneMappings

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

    重要

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

    spec.config.addressAllocatedMode

    (任意) AlbConfig では、addressAllocatedMode パラメーターを使用して ALB インスタンスの IP モードを指定できます。有効な値:

    • Dynamic: 動的 IP モード。

    • Fixed: 静的 IP モード。

    クラスターに ALB Ingress Controller コンポーネントをインストールすると、デフォルトで AlbConfig が作成されます。vSwitchId を除き、他のパラメーターは以下に示すデフォルト構成を使用します。

    クリックして AlbConfig のデフォルト構成を表示

    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、最初のゾーンとは異なる必要があります) に置き換えてください。
    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 から作成された Application Load Balancer (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 コマンドを使用して変更を Kubernetes クラスターに適用します。

    • kubectl apply コマンドを使用して AlbConfig を上書きする場合、AlbConfig YAML ファイルに listeners 構成が含まれていなければ、既存のリスナーは影響を受けません。この構成が存在する場合、リスナーは新しい構成に基づいて調整されます。したがって、ポート 80 および 443 の共通リスナーなど、すべての必要なリスナーを指定する必要があります。

    kubectl -n kube-system edit AlbConfig alb-demo

    AlbConfig 構成ファイルで、必要に応じて内容を更新します。たとえば、AlbConfig の名前を test に変更します。

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

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

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

  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 アドレスの使用

Application Load Balancer (ALB) インスタンスを作成するときに、AlbConfig で addressIpVersion フィールドを DualStack に設定することで IPv6 サポートを有効にできます。

重要

addressIpVersion フィールドはインスタンス作成時に設定され、後で変更することはできません。

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

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

AlbConfig で HTTPS リスナーを構成するときに、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
  #...

Simple Log Service でのアクセスログの有効化

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_****"
    #...

構成を保存した後、Simple Log Service コンソールに移動し、指定した LogStore をクリックして収集されたアクセスログを表示できます。

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

既存の ALB インスタンスを再利用する場合は、AlbConfig の作成時に ALB インスタンス ID を指定する必要があります。インスタンスは、Application Load Balancer (ALB) コンソールで作成された Standard Edition または WAF-enabled Edition のインスタンスである必要があります。Basic Edition の ALB インスタンスは再利用できません。ALB インスタンスは 1 つのクラスターでのみ使用できます。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: **** # ALB コンソールで作成された Standard Edition または WAF-enabled Edition の 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、最初のゾーンとは異なる必要があります) に置き換えてください。
  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 秒が使用されます。次の YAML ファイルは例です。

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 アドレスの取得

AlbConfig では、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 の取得

AlbConfig では、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
  ...

インスタンスのリスナーポートの取得

AlbConfig では、XForwardedForSLBPortEnabled パラメーターを構成して、X-Forwarded-Port ヘッダーフィールドを使用してインスタンスのリスナーポートを取得するかどうかを指定できます。有効な値は次のとおりです:

  • true: インスタンスのリスナーポートが取得されます。

  • false: インスタンスのリスナーポートは取得されません。

説明

HTTP および HTTPS リスナーのみがこのパラメーターをサポートします。

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

ロードバランサーインスタンスのクライアントポートの取得

AlbConfig では、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 アドレスまたは CIDR ブロックを指定します。例: 127.0.0.1/32

ALB インスタンスの削除

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

kubectl delete -n kube-system AlbConfig alb-demo

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

再利用された ALB インスタンスの 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 の名前に置き換えてください。