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

Container Service for Kubernetes:AlbConfig による ALB インスタンスの設定

最終更新日:Aug 29, 2026

AlbConfig CRD を使用することで、ALB インスタンスとリスナーを作成、設定、再利用できるほか、IPv6、Simple Log Service (SLS) のアクセスログ、TLS ポリシー、ネットワーク ACL にも対応しています。

前提条件

  • クラスターに ALB Ingress Controller がインストールされていること。

  • ACK クラスターと同じ VPC に、ALB がサポートする異なるゾーンの VSwitch が 2 つ作成されていること。

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

注意事項

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

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

  • AlbConfig が作成した ALB インスタンスは、 ALB Ingress Controller が制御するマネージドリソースです。これらのインスタンスを ALB コンソールから直接変更しないでください (例:コンソールでタグ、 ACL、アクセスログ、タイムアウト設定を変更しないでください)。コンソールでの変更は、コントローラーの調整ループによって上書きされたり、エラーが発生したりする可能性があります。マネージド ALB インスタンスの設定を更新するには、クラスター内の AlbConfig リソースを変更してください。コントローラーが自動的に変更を ALB インスタンスに同期します。

主要パラメーターの概要

よく使われる AlbConfig パラメーターは次のとおりです。

パラメーター

タイプ

デフォルト

作成時のみ

説明

spec.config.name

文字列

—

いいえ

ALB インスタンスの名前

spec.config.addressAllocatedMode

文字列

Dynamic

いいえ

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

spec.config.addressType

文字列

Internet

はい

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

spec.config.addressIpVersion

文字列

—

はい

IPv4/IPv6 デュアルスタックを有効にするには、DualStack に設定します

spec.config.zoneMappings

配列

—

はい

vSwitch ID (異なるゾーンに 2 つ以上)

spec.config.edition

文字列

Standard

いいえ

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

spec.config.id

文字列

—

いいえ

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

spec.config.forceOverride

ブール値

false

いいえ

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

spec.config.listenerForceOverride

ブール値

false

いいえ

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

spec.config.accessLogConfig.logProject

文字列

—

いいえ

SLS のログプロジェクト

spec.config.accessLogConfig.logStore

文字列

—

いいえ

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

spec.config.billingConfig.bandWidthPackageId

文字列

—

いいえ

Internet Shared Bandwidth インスタンス ID

spec.listeners[].port

整数

—

いいえ

リスナーのポート

spec.listeners[].protocol

文字列

—

いいえ

HTTP、HTTPS、または QUIC

spec.listeners[].requestTimeout

整数

60

いいえ

リクエストタイムアウト (単位:秒、範囲:1~600)

spec.listeners[].gzipEnabled

ブール値

false

いいえ

Gzip/Brotli 圧縮を有効にします。

ALB インスタンスの設定

AlbConfig の作成

各 AlbConfig は 1 つの ALB インスタンスを設定します。複数の ALB インスタンスを使用する場合は、インスタンスごとに AlbConfig を 1 つ作成します。

重要

ALB Ingress Controller をインストールし、[ゲートウェイソース] で [Create] または [Select Existing] を選択すると、コントローラーは 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 が自動的に作成されます。Internet Shared Bandwidth インスタンスに属していない、従量課金 (データ転送量による課金) の 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

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

    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 を確認します:

    HTTPS リスナーと証明書を設定するまで、PORT&PROTOCOL と CERTID は空です。
    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 を削除すると ALB インスタンスも削除されます。

重要

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

kubectl delete AlbConfig <AlbConfig_NAME>

Internet Shared Bandwidth インスタンスのバインド

Internet Shared Bandwidth インスタンスを ALB インスタンスにバインドするには、billingConfig.bandWidthPackageId を設定します。

これはインターネット向けの ALB インスタンスにのみ適用されます。Internet Shared Bandwidth インスタンスを購入するには、「Create an 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. 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. 2. 適用します:

    kubectl apply -f alb-2.yaml
  3. 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. 4. 適用します:

    kubectl apply -f ingress_class2.yaml
  5. 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. 6. 適用します:

    kubectl apply -f ingress2.yaml

IngressClass による AlbConfig と Ingress の関連付け

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

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 対応インスタンスがサポートされています。ベーシックインスタンスは再利用できません。ALB インスタンスは 1 つのクラスターでのみ再利用でき、かつそのクラスター内の 1 つの AlbConfig でのみ再利用できます。

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

id、forceOverride、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} という名前のリスナーは ALB Ingress コントローラーによって管理され、その他の名前のリスナーは ALB コンソールで管理されます。

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

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

  1. ALB Ingress コントローラー 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 が存在しない場合、新しいものが自動的に作成されます。
ログプロジェクトは、ACK コンソールのクラスターの [クラスター情報] > [基本情報] で確認できます。
再利用された ALB インスタンス で SLS を有効にするには、forceOverride: true を設定します。

有効化後、[基本情報] の [ログサービスプロジェクト] の横にあるプロジェクト名をクリックして、SLS でログを表示します。

IPv6 の有効化

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

重要

addressIpVersion は作成時にのみ有効で、後で変更することはできません。

spec:
  config:
    addressIpVersion: DualStack

リスナーの設定

リスナーの作成

spec.listeners で port と protocol を設定することで、ALB がトラフィックを受信する方法を定義します。サポートされているプロトコル: HTTP、HTTPS、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/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、application/xml、および application/json。

説明
  • 圧縮アルゴリズム: クライアントが Brotli と Gzip の両方をサポートしている場合、ALB はより効率的な Brotli を使用します。

  • 圧縮条件: ALB は、Content-Length レスポンスヘッダーが 1,024 バイトを超え、かつクライアントからの Accept-Encoding リクエストヘッダーに対応する圧縮アルゴリズムが含まれている場合にのみ、レスポンスを圧縮します。

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

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

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

重要
  • HTTP および HTTPS リスナーでのみ使用できます。

  • XForwardedForEnabled はデフォルトで有効であり、無効にできません。

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

複数のプロキシ層がある環境のベストプラクティス: XForwardedForEnabled: true はデフォルトで X-Forwarded-For ヘッダーを伝播しますが、リクエストが複数のプロキシを通過する際に IP 値が偽装される可能性があります。 複数のプロキシ層がある本番環境では、XForwardedForClientSourceIpsTrusted と共に XForwardedForClientSourceIpsEnabled: true を使用して、信頼できるプロキシチェーンからクライアント IP アドレスを取得する。

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

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

リクエストが複数のプロキシを通過するときに X-Forwarded-For から実際のクライアント IP を抽出するには、XForwardedForClientSourceIpsEnabled: true を設定します。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 セキュリティポリシーの設定

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

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 の設定 をご参照ください。

トラブルシューティング

AlbConfig YAML ファイルの保存時のエラー:alb: listener port number must between [1:65535], or you should set listen port explicitly in listener config.

原因

AlbConfig YAML ファイルでは、- は spec.listener セクションで単一のリスナー設定の開始を示します。左側の誤った例では、3 つの - が使用されており、3 つのリスナーが定義されています。最後の - エントリの certificates セクションに port 設定がないため、エラーが発生します。

解決策

各リスナー設定は、ハイフン (-) で始める必要があります。右側の修正後の例では、certificates の前のハイフン (-) が削除されているため、証明書の設定は HTTPS: 443 リスナーの一部になります。

誤った例:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
  - port: 443
    protocol: HTTPS
  - certificates:  # 誤り:この余分なハイフンは3つ目のリスナーを定義します。
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
  ...

修正された例:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
  - port: 443
    protocol: HTTPS
    certificates:  # 正しい:余分なハイフンを削除し、証明書設定を HTTPS: 443 リスナーに含めます。
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
  ...

AlbConfig YAML ファイルで ALB インスタンスのネットワークタイプ (addressType) や vSwitch (zoneMappings.vSwitchId) を変更しても反映されないのはなぜですか。

原因

Application Load Balancer (ALB) インスタンスのネットワークタイプや vSwitch 設定は、AlbConfig YAML ファイルで addressType や zoneMappings.vSwitchId を編集しても変更できません。

image

解決策

まず、ALB コンソールでインスタンスの設定の読み取り専用モードを無効にします。次に、ALB インスタンスのネットワークタイプまたは vSwitch 設定を手動で変更します。設定を変更した後、再度、設定の読み取り専用モードを有効にします。

  1. ALB コンソールにログインします。対象リージョンで、AlbConfig ファイルの status.loadBalancer.id に対応するインスタンス ID をクリックします。

  2. インスタンスの詳細 タブの インスタンスプロパティ セクションで、[設定の読み取り専用モードを無効にする] をクリックし、確認します。

  3. ネットワークタイプの変更 または ゾーン/サブネットの変更 をクリックして、ALB インスタンスのネットワークタイプまたは vSwitch 設定を変更します。

  4. 変更が完了したら、再度、[設定の読み取り専用モード] を有効にします。

HTTPS リスナーのエラー:empty https listener default certs

原因

AlbConfig に HTTPS リスナーが設定されていますが、certificates フィールドに証明書 ID が指定されていません。関連付けられた Ingress が存在せず、ドメイン名に基づいて証明書を自動的に検出できないため、コントローラーはリスナーを作成できません。

解決策

  • 方法1 (推奨):HTTPS リスナーの certificates フィールドに証明書 ID を指定します。詳細については、「証明書の指定」をご参照ください。

    listeners:
    - port: 443
      protocol: HTTPS
      certificates:
      - CertificateId: <your-certificate-id>  # 実際の証明書IDに置き換えてください。
        IsDefault: true
  • 方法2:AlbConfig で、ポート 80 に HTTP リスナーを設定し、ターゲットドメイン名に関連付けられた Ingress リソースを作成します。Ingress が作成された後、ALB Ingress Controller はドメイン名に基づいて Ingress から証明書を自動的に検出し、HTTPS リスナーにアタッチします。