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

Container Service for Kubernetes:AlbConfig による ALB インスタンスの構成

最終更新日:Jul 10, 2026

AlbConfig CRD を使用して ALB インスタンスおよびリスナーを作成・構成・再利用できます。IPv6、Simple Log Service (SLS) アクセスログ、TLS ポリシー、ネットワーク ACL に対応しています。

前提条件

ACK 専用クラスターで ALB イングレスを使用するには、まずクラスターに必要な権限を付与してください

注意事項

  • リソース構成を変更するには、kubectl edit を使用してください。kubectl apply を使用する場合は、適用前に kubectl diff を実行して変更内容をプレビューすることを推奨します。

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

主なパラメーター一覧

よく使用される AlbConfig パラメーター:

パラメーター

タイプ

デフォルト

作成時のみ

説明

spec.config.name

string

いいえ

ALB インスタンスの名前

spec.config.addressAllocatedMode

string

Dynamic

いいえ

ALB インスタンスの IP モードを設定します。有効値:Dynamic(動的 IP モード、デフォルト)および Fixed(固定 IP モード)。

spec.config.addressType

string

Internet

はい

Internet(パブリック)または Intranet(VPC 内専用)

spec.config.addressIpVersion

string

はい

DualStack を設定して IPv4/IPv6 デュアルスタックを有効化

spec.config.zoneMappings

array

はい

vSwitch ID(異なるゾーンに少なくとも 2 つ)

spec.config.edition

string

Standard

いいえ

ALB インスタンスエディション

spec.config.id

string

いいえ

再利用する既存の ALB インスタンスの ID

spec.config.forceOverride

boolean

false

いいえ

再利用する ALB インスタンスの属性を上書きするかどうか

spec.config.listenerForceOverride

boolean

false

いいえ

再利用するインスタンスのリスナー属性を上書きするかどうか

spec.config.accessLogConfig.logProject

string

いいえ

SLS ログプロジェクト

spec.config.accessLogConfig.logStore

string

いいえ

SLS Logstore(alb_ で始まる必要があります)

spec.config.billingConfig.bandWidthPackageId

string

いいえ

インターネット共有帯域幅インスタンス ID

spec.listeners[].port

integer

いいえ

リスナーポート

spec.listeners[].protocol

string

いいえ

HTTPHTTPS、または QUIC

spec.listeners[].requestTimeout

integer

60

いいえ

バックエンドの応答タイムアウト(秒単位、1~600)

spec.listeners[].gzipEnabled

boolean

false

いいえ

Gzip/Brotli 圧縮を有効化

ALB インスタンスの構成

AlbConfig の作成

各 AlbConfig は 1 つの ALB インスタンスを構成します。複数の ALB インスタンスを使用するには、インスタンスごとに 1 つの AlbConfig を作成してください。

重要

ALB Ingress Controller をインストールする際に、Create または Select ExistingGateway Source として選択すると、コントローラーは自動的に alb という名前の AlbConfig と alb という名前の IngressClass を作成します。

  1. 以下の内容で alb.yaml を作成します。

    パラメーター

    説明

    spec.config.name

    ALB インスタンスの名前。

    spec.config.addressType

    Internet(デフォルト):パブリック IP。Intranet:VPC 内専用。作成時のみ設定可能。後から変更できません。

    spec.config.zoneMappings

    クラスターと同じ VPC 内にある、異なる ALB がサポートするゾーン の vSwitch を少なくとも 2 つ必要です。作成時のみ。後から変更できません。 シングルゾーンリージョンでは、vSwitch を 1 つ使用できます。

    spec.config.zoneMappings[].allocationId

    (オプション)ALB インスタンスに関連付ける EIP ID。省略した場合、従量課金の BGP(マルチ ISP)EIP が自動的に作成されます。インターネット共有帯域幅インスタンスに含まれていないトラフィック課金の従量課金 EIP のみサポートされています。異なるゾーンの EIP は同じタイプである必要があります。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****  # ご利用の vSwitch ID に置き換えてください。
          allocationId: eip-asdfas****            # ご利用の EIP ID に置き換えてください。省略した場合、EIP が自動的に割り当てられます。
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
          allocationId: eip-dpfmss****
      listeners:
        - port: 80
          protocol: HTTP

    vSwitchId を除くデフォルトの AlbConfig 設定:

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic
        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. 構成を適用します。

    kubectl apply -f alb.yaml

    期待される出力:

    AlbConfig.alibabacloud.com/alb created
  3. AlbConfig を確認します。

    PORT&PROTOCOL および CERTID は、HTTPS リスナーおよび証明書を構成するまで空のままです。
    kubectl get AlbConfig

    期待される出力:

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

AlbConfig の更新

  1. AlbConfig の一覧を表示します。

    kubectl get AlbConfig
  2. AlbConfig を編集します。

    kubectl edit albconfig <ALBCONFIG_NAME>

    たとえば、ALB インスタンスの名前を new_alb に変更するには、次のように記述します。

    spec:
      config:
        name: new_alb

AlbConfig の削除

AlbConfig を削除すると、関連付けられた ALB インスタンスも削除されます。

重要

削除する前に、AlbConfig に関連付けられているすべての Ingress を削除してください。

kubectl delete AlbConfig <AlbConfig_NAME>

インターネット共有帯域幅インスタンスのバインド

ALB インスタンスにインターネット共有帯域幅インスタンスをバインドするには、billingConfig.bandWidthPackageId を設定します。

これはインターネット向け ALB インスタンスにのみ適用されます。Internet Shared Bandwidth インスタンスを購入するには、「Internet Shared Bandwidth を作成する」をご参照ください。
spec:
  config:
    name: alb
    addressType: Internet
    edition: Standard
    zoneMappings:
    - vSwitchId: vsw-2vcqeyvwsnd***
    - vSwitchId: vsw-2vcbhjlqu7y***
    billingConfig:
      bandWidthPackageId: cbwp-2vcjucp49otd8qolhm***

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

複数の ALB インスタンスを使用するには、各インスタンスに対して個別の AlbConfig および IngressClass を作成してください。

  1. alb-2.yaml を作成します。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-2
    spec:
      config:
        name: alb-2
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
  2. 適用します。

    kubectl apply -f alb-2.yaml
  3. ingress_class2.yaml を作成します。

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

    v1.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
  4. 適用します。

    kubectl apply -f ingress_class2.yaml
  5. ingress2.yaml を作成します。ingressClassName に、対象の ALB インスタンス用の IngressClass を設定します。

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

    v1.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. 適用します。

    kubectl apply -f ingress2.yaml

IngressClass を使用した AlbConfig と Ingress の関連付け

IngressClass を使用して、AlbConfig を ALB イングレスにバインドします。

IngressClass の作成

ingress_class.yaml を作成します。

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

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

適用します。

kubectl apply -f ingress_class.yaml

期待される出力:

ingressclass.networking.k8s.io/alb created

IngressClass を参照する Ingress の作成

ingress.yaml を作成し、ingressClassName に IngressClass 名を設定します。

v1.19 以降のクラスター

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

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

適用します。

kubectl apply -f ingress.yaml

期待される出力:

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

再利用済み ALB インスタンスの管理

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

spec.config.id を設定して、既存の ALB インスタンスを再利用します。ALB コンソールの標準インスタンスおよび WAF 有効化インスタンスがサポートされています。ベーシックインスタンスは再利用できません。1 つの ALB インスタンスは 1 つのクラスターでのみ再利用可能です。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: ****
    forceOverride: false
    listenerForceOverride: false

idforceOverride、および listenerForceOverride の相互作用:

id

forceOverride

listenerForceOverride

結果

未設定

ALB インスタンスは再利用されません。forceOverride および listenerForceOverride は影響しません。

設定

true

ALB インスタンスおよびリスナーの属性が上書きされます。

設定済み

false

false

listenerForceOverride が false の場合、ALB Ingress Controller は AlbConfig によって自動的に作成されたリスナー(ingress-auto-listener-{port} という名前)のみを管理します。手動で作成されたリスナーは AlbConfig によって管理されません。

設定

false

true

ALB インスタンスの属性は上書きされません。コントローラーはすべてのリスナーを管理します。リスナーの存在および構成は AlbConfig によって決定されます。

重要

再利用済み ALB インスタンス上のリスナーの名前を変更しないでください。ingress-auto-listener-{port} という名前のリスナーは ACK によって管理されます。その他の名前のリスナーは ALB コンソールで管理されます。

再利用済み ALB インスタンスの AlbConfig の削除

再利用済み ALB インスタンスの AlbConfig を削除しても、ALB インスタンス自体は削除されません。

  1. ALB Ingress Controller 2.10.0-aliyun.1 以前の場合:kubectl edit を実行して spec.listeners のすべてのエントリを削除し、AlbConfig 経由で構成されたリスナーを削除します。2.10.0-aliyun.1 より後のバージョンでは、このステップをスキップしてください。

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

    kubectl delete AlbConfig <AlbConfig_NAME>

高度な構成

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

spec.config.accessLogConfig 内で logProject および logStore を設定します。

spec:
  config:
    accessLogConfig:
      logProject: "k8s-log-xz92lvykqj1siwvif****"
      logStore: "alb_****"
logStore の値は alb_ で始まる必要があります。指定された Logstore が存在しない場合、新しい Logstore が自動的に作成されます。
ログプロジェクトは、ACK コンソールのクラスターの クラスター情報基本情報 で確認できます。
再利用済み ALB インスタンスで SLS を有効にするには、forceOverride: true を設定します。

有効化後、基本情報Log Service プロジェクト 横のプロジェクト名をクリックして、SLS でログを表示します。

IPv6 の有効化

addressIpVersion: DualStack を設定して IPv4/IPv6 デュアルスタックを有効化します。

重要

addressIpVersion は作成時のみ有効で、後から変更できません。

spec:
  config:
    addressIpVersion: DualStack

リスナーの構成

リスナーの作成

spec.listeners 内で port および protocol を設定して、ALB がトラフィックを受信する方法を定義します。サポートされるプロトコル:HTTP、HTTPS、Quick UDP Internet Connections (QUIC)。

重要

port または protocol を変更すると、既存のリスナーが削除され、新しいリスナーが作成されます。異なるプロトコルを使用して複数のリスナーを設定するには、Ingress に必要なアノテーションを追加します

HTTP リスナー

spec:
  listeners:
    - port: 80
      protocol: HTTP
HTTP はネイティブで WebSocket をサポートしています。追加の構成は不要です。

HTTPS リスナー

spec:
  listeners:
    - port: 443
      protocol: HTTPS
重要

HTTPS リスナーは証明書を必要とします

QUIC リスナー

spec:
  listeners:
    - port: 443
      protocol: QUIC
重要

QUIC リスナーは、クライアントから HTTP/3 リクエストを受信します。

証明書の指定

HTTPS リスナーに証明書を追加するには、kubectl edit albconfig <Albconfig_Name> を実行して certificates フィールドを設定します。

spec:
  listeners:
  - caEnabled: false
    certificates:
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
    port: 443
    protocol: HTTPS

デフォルト証明書が指定されていない場合、ALB Ingress は最初の証明書をデフォルトとして使用します。

証明書が指定されていない場合、リスナーの作成は Ingress が関連付けられ、ドメイン名に基づいて証明書が自動的に検出されるまで延期されます。

詳細については、「暗号化通信向けに HTTPS 証明書を設定する」をご参照ください。

リスナーの削除

kubectl edit albconfig <Albconfig_Name> を実行して、spec.listeners からリスナーのエントリを削除します。

重要

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

たとえば、ポート 8002 のリスナーを削除するには、次のように記述します。

# 削除前
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP

# 削除後
listeners:
- port: 8001
  protocol: HTTP

リスナーの更新動作

listeners 配列は、新しい構成とライブ状態、および last-applied-configuration アノテーションを比較して調整されます。

新しい構成に存在

ライブ構成に存在

last-applied-configuration に存在

結果

はい

はい

リスナーは保持されます。

はい

なし

リスナーが追加されます。

なし

あり

リスナーが削除されます。フィールドはデフォルト値にリセットされる可能性があります。

なし

はい

なし

リスナーが削除されます。

例:

次の 3 つの状態があるとします。

# 新しい構成
listeners:
- port: 8001
  protocol: HTTP
- port: 8003
  protocol: HTTP
- port: 8005  # 新規
  protocol: HTTP

# ライブ構成
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP
- port: 8003
  protocol: HTTP
- port: 8004
  protocol: HTTP

# last-applied-configuration
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP
- port: 8003
  protocol: HTTP

新しい構成を適用した後:

listeners:
- port: 8001  # 保持(新しい構成およびライブ構成に存在)
  protocol: HTTP
- port: 8003  # 保持(新しい構成およびライブ構成に存在)
  protocol: HTTP
- port: 8005  # 追加(新しい構成に存在、ライブ構成に存在せず)
  protocol: HTTP
# ポート 8002:削除(新しい構成に存在せず、last-applied-configuration に存在)
# ポート 8004:削除(新しい構成に存在せず、ライブ構成に存在、last-applied-configuration に存在せず)

接続タイムアウト期間の設定

requestTimeout を設定して、ALB がクライアントに HTTP 504 を返す前にバックエンドの応答を待機する時間を制御します。有効範囲:1~600 秒。デフォルト:60 秒。

spec:
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 40

高度なリスナー構成

データ圧縮の構成

gzipEnabled: true を設定して圧縮を有効化します。すべてのファイルタイプで Brotli 圧縮がサポートされています。次のファイルタイプでは Gzip 圧縮もサポートされています:text/xmltext/plaintext/cssapplication/javascriptapplication/x-javascriptapplication/rss+xmlapplication/atom+xmlapplication/xml、および application/json

spec:
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: true

クライアント IP アドレスの保持

ALB は、リクエストをバックエンドに転送する前に、クライアント IP アドレスを X-Forwarded-For ヘッダーに追加します。

重要

HTTP および HTTPS リスナーでのみ利用可能です。

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForEnabled: true # このパラメーターを false に設定することはできません。

クライアント接続メタデータの取得

xForwardedForConfig を使用して、クライアントおよびリスナーのメタデータをバックエンドに転送されるリクエストヘッダーに追加します。以下のすべてのフィールドは、HTTP および HTTPS リスナーで利用可能です。

フィールド

に設定するとtrue

XForwardedForClientSrcPortEnabled

クライアントが ALB インスタンスに接続するために使用したポートを追加します。

XForwardedForProtoEnabled

ALB インスタンスが使用するリスナープロトコルを追加します。

XForwardedForSLBIdEnabled

ALB インスタンス ID を追加します。

XForwardedForSLBPortEnabled

ALB インスタンスのリッスンポートを追加します。

例 — 4 つのヘッダーすべてを追加:

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSrcPortEnabled: true
      XForwardedForProtoEnabled: true
      XForwardedForSLBIdEnabled: true
      XForwardedForSLBPortEnabled: true

信頼できるプロキシチェーンからのクライアント IP アドレスの取得

リクエストが複数のプロキシを経由する場合、XForwardedForClientSourceIpsEnabled: true を設定して、X-Forwarded-For から実際のクライアント IP を抽出します。XForwardedForClientSourceIpsTrusted を使用して、信頼できるプロキシ IP または CIDR ブロックの一覧を指定します。ALB は X-Forwarded-For を右から左に走査し、最初に見つかった信頼できない IP をクライアント IP として扱います。

たとえば、X-Forwarded-For<client IP, proxy-1, proxy-2> の場合、proxy-1 および proxy-2 を信頼リストに追加します。

重要

HTTP および HTTPS リスナーでのみ利用可能です。

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSourceIpsEnabled: true
      XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16

カスタム TLS セキュリティポリシーの構成

デフォルトまたはカスタムのTLS セキュリティポリシーを適用するには、HTTPS リスナーでsecurityPolicyIdを設定します。

spec:
  listeners:
  - port: 443
    protocol: HTTPS
    securityPolicyId: tls_cipher_policy_1_1

信頼できるプロキシ IP アドレスの構成

信頼されたプロキシ IP アドレスを指定する」をご参照ください。

ネットワーク ACL の構成

aclConfig を使用して、リスナーレベルで特定の IP アドレスまたは CIDR ブロックからのトラフィックを許可または拒否します。

spec:
  listeners:
  - port: 80
    protocol: HTTP
    aclConfig:
      aclEntries:
      - 127.0.0.1/32
      aclType: White

パラメーター

説明

aclType

White:ホワイトリスト — 一覧に含まれる IP のみがリスナーにアクセスできます。Black:ブラックリスト — 一覧に含まれる IP はアクセスが拒否されます。

aclEntries

ACL ルールに含める IP アドレスまたは CIDR ブロック。例:127.0.0.1/32

詳細については、「ACL の設定」をご参照ください。