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

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

最終更新日:Sep 11, 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

文字列

いいえ

HTTPHTTPS、または 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&PROTOCOLCERTID は空です。
    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

idforceOverridelistenerForceOverride の相互作用は次のとおりです。

id

forceOverride

listenerForceOverride

結果

未設定

ALB インスタンスは再利用されません。forceOverridelistenerForceOverride は無効です。

設定済み

true

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

設定済み

false

false

listenerForceOverridefalse の場合、ALB Ingress ControllerAlbConfig によって自動的に作成されたリスナー (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.accessLogConfiglogProjectlogStore を設定します:

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.listenersportprotocol を設定することで、ALB がトラフィックを受信する方法を定義します。サポートされているプロトコル: HTTP、HTTPS、QUIC。

重要

リスナーの portprotocol、またはその他の属性を変更すると、既存のリスナーが削除され、新しいリスナーが作成されます。異なるプロトコルで複数のリスナーを設定するには、必要なアノテーションを 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

説明
  • 圧縮アルゴリズム: クライアントが 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-1proxy-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 ファイルで addressTypezoneMappings.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 リスナーにアタッチします。