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

:ALB インスタンスを構成するための AlbConfig の使用

最終更新日:Dec 27, 2024

AlbConfig は、Alibaba Cloud Container Compute Service (ACS) が Application Load Balancer (ALB) Ingress コントローラーに提供するカスタムリソース定義 (CRD) です。ALB Ingress コントローラーは、AlbConfig を使用して ALB インスタンスとリスナーを構成します。このトピックでは、AlbConfig を作成、変更、更新する方法と、Simple Log Service (SLS) を有効にする方法について説明します。

前提条件

  • ACS クラスタが作成されていること。詳細については、ACS クラスタの作成を参照してください。

  • 異なるゾーンにある 2 つの vSwitch が作成され、クラスタの仮想プライベートクラウド (VPC) にデプロイされていること。詳細については、vSwitch の作成と管理を参照してください。

  • ALB Ingress コントローラーがクラスタにインストールされていること。詳細については、ALB Ingress コントローラーの管理を参照してください。

使用上の注意

  • クラスタ内のリソースを変更または更新するには、kubectl edit コマンドを使用することをお勧めします。kubectl apply コマンドを使用してリソースを変更または更新する必要がある場合は、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認する必要があります。その後、kubectl apply コマンドを実行して、リソースに変更を適用します。

  • 以前のバージョンの NGINX Ingress コントローラーは、Ingress リソースの spec:ingressClassName フィールドを認識できません。クラスタに NGINX Ingress と ALB Ingress の両方が構成されている場合、ALB Ingress は以前のバージョンの NGINX Ingress コントローラーによって調整される可能性があります。この問題を回避するには、NGINX Ingress コントローラーをできるだけ早く更新するか、アノテーションを使用して ALB Ingress の IngressClass を指定します。

サービス、Ingress、AlbConfig 間の関係

ALB Ingress コントローラーは、API サーバーから Ingress への変更を取得し、Ingress の変更が検出されたときに AlbConfig オブジェクトを動的に生成します。次に、ALB Ingress コントローラーは、ALB インスタンスの作成、リスナーの構成、Ingress ルールの作成、バックエンドサーバーグループの構成という操作を順番に実行します。サービス、Ingress、AlbConfig オブジェクトは、次のように相互作用します。

  • サービスは、複製された Pod のグループにデプロイされるアプリケーションの抽象化です。

  • Ingress にはリバースプロキシルールが含まれています。HTTP または HTTPS リクエストのルーティング先となるサービスを制御します。たとえば、Ingress は、リクエスト内のホストと URL に基づいて、リクエストを異なるサービスにルーティングします。

  • AlbConfig は、ALB Ingress コントローラーが ALB インスタンスとリスナーを構成するために使用するカスタムリソース定義 (CRD) です。AlbConfig オブジェクトは 1 つの ALB インスタンスに対応します。

各 AlbConfig は 1 つの ALB インスタンスに対応します。ALB インスタンスは、複数の Ingress の転送ルールで指定できます。したがって、各 AlbConfig は複数の Ingress に関連付けることができます。

AlbConfig の作成

AlbConfig は、ALB インスタンスを構成するために使用されます。複数の 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:               
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
      listeners:
        - port: 80
          protocol: HTTP

    パラメーター

    説明

    spec.config.name

    ALB インスタンスの名前。このパラメーターはオプションです。

    spec.config.addressType

    ALB インスタンスがサービスを提供するために使用する IP アドレスのタイプ。このパラメーターは必須です。有効な値:

    • Internet (デフォルト): ALB インスタンスはパブリック IP アドレスを使用します。Ingress のドメイン名はパブリック IP アドレスに解決されます。したがって、ALB インスタンスにはインターネット経由でアクセスできます。

    • Intranet: ALB インスタンスはプライベート IP アドレスを使用します。Ingress のドメイン名はプライベート IP アドレスに解決されます。したがって、ALB インスタンスは、ALB インスタンスがデプロイされている VPC 内からのみアクセスできます。

    spec.config.zoneMappings

    ALB Ingress によって使用される vSwitch の ID。このパラメーターは必須です。複数のゾーンを含むリージョンで vSwitch を指定する場合は、異なるゾーンに少なくとも 2 つの vSwitch ID を指定する必要があります。1 つのゾーンのみを含むリージョンで vSwitch を指定する場合は、1 つの vSwitch ID のみ指定できます。指定された vSwitch は、ALB インスタンスでサポートされているゾーンにデプロイされ、クラスタと同じ VPC にデプロイされている必要があります。ALB Ingress でサポートされているリージョンとゾーンの詳細については、ALB が利用可能なリージョンとゾーンを参照してください。

    重要

    ALB インスタンスの作成後、ALB インスタンスのリージョンとゾーンを変更することはできません。これは、AlbConfig の addressType パラメーターと zoneMappings パラメーターは、AlbConfig を作成するときにのみ有効になることを示しています。AlbConfig を更新するとき、パラメーターは有効になりません。

    spec.config.addressAllocatedMode

    ALB インスタンスが使用する IP アドレスのタイプ。このパラメーターはオプションです。有効な値:

    • Dynamic: 動的 IP アドレス

    • Fixed: 静的 IP アドレス

    クラスタに ALB Ingress コントローラーをインストールすると、システムはデフォルトの AlbConfig を作成します。デフォルトの AlbConfig のパラメーターは、vSwitchID パラメーターを除き、次の設定を使用します。

    デフォルトの AlbConfig 構成

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo                      # AlbConfig の名前。
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic # このパラメーターを使用して、ALB インスタンスに IP アドレスを割り当てる方法を指定できます。有効な値:Dynamic および Fixed。Dynamic の値は動的 IP アドレスを指定します。Fixed の値は静的 IP アドレスを指定します。
        addressType: Internet
        billingConfig:
          internetBandwidth: 0
          internetChargeType: ""
          payType: PostPay
        deletionProtectionEnabled: true
        edition: Standard
        forceOverride: false
        zoneMappings:
        - vSwitchId: vsw-wz92lvykqj1siwvif****        # vSwitch の ID。ALB インスタンスが動的 IP アドレスを使用する場合は、2 つの vSwitch を指定します。ALB インスタンスが静的 IP アドレスを使用する場合は、1 つの vSwitch を指定します。
        - vSwitchId: vsw-wz9mnucx78c7i6iog****        # vSwitch の ID。
    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 コマンドを実行して、リソースに変更を適用できます。

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

    kubectl -n kube-system edit AlbConfig alb-demo

    ビジネス要件に基づいて AlbConfig 構成ファイルを更新します。たとえば、spec.config.name パラメーターを更新して、AlbConfig の名前を test に変更できます。

    ...
     spec:
     config:
     name: test # AlbConfig の新しい名前。
    ...

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

重要

クラスタ内のリソースを更新するには、kubectl edit コマンドを実行することをお勧めします。kubectl apply コマンドを使用してリソースを更新するには、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認してください。その後、kubectl apply コマンドを実行して、リソースに変更を適用できます。

IngressClass を使用して、AlbConfig を ALB 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 パラメーターを 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

上記の手順を完了すると、IngressClass を使用して AlbConfig を Ingress に関連付けることができます。

ALB インスタンスの名前変更

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

重要

クラスタ内のリソースを更新するには、kubectl edit コマンドを使用することをお勧めします。kubectl apply コマンドを使用してリソースを更新するには、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認してください。その後、kubectl apply コマンドを実行して、リソースに変更を適用できます。

kubectl -n kube-system edit AlbConfig alb-demo

構成ファイルの config.name パラメーターの値を変更してファイルを保存します。その後、ALB インスタンスの新しい名前が自動的に有効になります。

...
  spec:
    config:
      name: test   # 新しい名前。
...

IPv6 の有効化

AlbConfig を使用して ALB インスタンスを作成するときに、addressIpVersion パラメーターを DualStack に設定して、IPv4/IPv6 デュアルスタックを有効にすることができます。

重要

addressIpVerison パラメーターは、ALB インスタンスを作成するときにのみ使用できます。ALB インスタンスの作成後、パラメーターを変更することはできません。

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

カスタム TLS セキュリティポリシーの指定

重要

クラスタ内のリソースを更新するには、kubectl edit コマンドを実行することをお勧めします。kubectl apply コマンドを使用してリソースを更新するには、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認してください。その後、kubectl apply コマンドを実行して、リソースに変更を適用できます。

AlbConfig を使用して HTTPS リスナーを構成するときに、TLS セキュリティポリシーを指定できます。カスタム 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
  #...

アクセスログを収集するための SLS の有効化

重要

クラスタ内のリソースを更新するには、kubectl edit コマンドを実行することをお勧めします。kubectl apply コマンドを使用してリソースを更新するには、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認してください。その後、kubectl apply コマンドを実行して、リソースに変更を適用できます。

ALB Ingress のアクセスログを収集する場合は、AlbConfig 構成で logProject パラメーターと logStore パラメーターを指定します。

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

  • logStore パラメーターで指定する Logstore の名前は、alb_ で始まる必要があります。指定された Logstore が存在しない場合、システムは自動的に作成します。

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

AlbConfig 構成への変更を保存した後、SLS コンソールに移動し、指定された Logstore で収集されたログを表示できます。

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

既存の ALB インスタンスを再利用する場合は、AlbConfig を作成するときに AlbConfig 構成で ALB インスタンスの ID を指定します。SLB コンソールで作成された標準 ALB インスタンスまたは Web Application Firewall (WAF) 対応 ALB インスタンスを再利用できます。ベーシック ALB インスタンスは再利用できません。

重要

クラスタ内のリソースを更新するには、kubectl edit コマンドを実行することをお勧めします。kubectl apply コマンドを使用してリソースを更新するには、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認してください。その後、kubectl apply コマンドを実行して、リソースに変更を適用できます。

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

次の表にパラメーターを示します。

パラメーター

説明

id

  • id パラメーターが存在しないか、id パラメーターが指定されていない場合、ALB インスタンスは再利用されません。この場合、forceOverride パラメーターと listenerForceOverride パラメーターは有効になりません。

  • id パラメーターが有効なインスタンス ID に設定されている場合、対応する ALB インスタンスが再利用されます。

    • forceOverride パラメーターが true に設定されている場合、ALB インスタンス属性とリスナー属性は強制的に上書きされます。

    • forceOverride パラメーターが false に設定されている場合、ALB インスタンス属性は強制的に上書きされません。この場合、listenerForceOverride パラメーターは、リスナー属性を強制的に上書きするかどうかを決定します。

重要

ALB インスタンスを再利用する場合は、リスナー名を変更しないことをお勧めします。変更すると、リスナーは ACS によって管理できなくなります。AlbConfig を使用して作成または更新されたリスナーは ACS によって管理され、デフォルトでは名前は ingress-auto-listener-{port} 形式です。この形式ではない名前のリスナーは、SLB コンソールで管理されます。

forceOverride

ALB インスタンスを再利用するときに ALB インスタンス属性を強制的に上書きするかどうかを指定します。有効な値:

  • true: ALB インスタンス属性を強制的に上書きします。

  • false: リスナー属性を上書きしません。このパラメーターを false に設定すると、AlbConfig を変更しても ALB インスタンス属性は変更されません。

listenerForceOverride

ALB インスタンスを再利用するときにリスナー属性を強制的に上書きするかどうかを指定します。有効な値:

  • true: リスナー属性を強制的に上書きします。

  • false: リスナー属性を上書きしません。

リスナーの作成

ALB インスタンスを再利用する場合は、インスタンスの AlbConfig を変更してリスナーを追加したり、既存のリスナー構成を変更したりできます。kubectl edit albconfig <Albconfig_Name> コマンドを実行し、AlbConfig で port パラメーターと protocol パラメーターを設定してリスナーを作成します。port パラメーターと protocol パラメーターは、リスナーを一意に識別するために使用されます。リスナーの port または protocol を変更すると、システムはリスナーを削除し、変更に基づいて新しいリスナーを作成します。

説明

HTTP は WebSocket と互換性があります。追加の構成は必要ありません。

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

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

Ingress に複数の ALB インスタンスを使用させる場合は、Ingress 構成ファイルの spec.ingressClassName パラメーターに異なる IngressClass を指定します。

  1. alb-demo2.yaml という名前のファイルを作成し、次の内容をファイルに追加します。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: demo
    spec:
      config:
        name: alb-demo2        # ALB インスタンスの名前。
        addressType: Internet  # ALB インスタンスはパブリック IP アドレスを使用します。
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
  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

リスナーの接続タイムアウト期間の設定

重要

クラスタ内のリソースを更新するには、kubectl edit コマンドを実行することをお勧めします。kubectl apply コマンドを使用してリソースを更新するには、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認してください。その後、kubectl apply コマンドを実行して、リソースに変更を適用できます。

AlbConfig の構成で、リスナーの接続タイムアウト期間を設定できます。接続タイムアウト期間は 1 秒から 180 秒の範囲で設定できます。指定された接続タイムアウト期間内にバックエンドサーバーから応答がない場合、ALB はクライアントに HTTP 504 エラーコードを返します。接続タイムアウト期間を指定しない場合は、デフォルトの接続タイムアウト期間である 60 秒が使用されます。次の YAML ファイルは例を示しています。

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

データ圧縮の構成

重要

クラスタ内のリソースを更新するには、kubectl edit コマンドを実行することをお勧めします。kubectl apply コマンドを使用してリソースを更新するには、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認してください。その後、kubectl apply コマンドを実行して、リソースに変更を適用できます。

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

ALB インスタンスで使用されるリスナープロトコルの取得

AlbConfig で X-Forwarded-For ヘッダーフィールドを指定して、ALB インスタンスで使用されるリスナープロトコルを取得できます。XForwardedForProtoEnabled パラメーターの有効な値:

  • true: ALB インスタンスで使用されるリスナープロトコルを取得します。

  • false: ALB インスタンスで使用されるリスナープロトコルを取得しません。

説明

このパラメーターは、HTTP リスナーと HTTPS リスナーで使用できます。

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

ALB インスタンスの ID の取得

AlbConfig で SLB-ID ヘッダーフィールドを指定して、ALB インスタンスの ID を取得できます。XForwardedForSLBIdEnabled パラメーターの有効な値:

  • true: ALB インスタンスの ID を取得します。

  • false: ALB インスタンスの ID を取得しません。

説明

このパラメーターは、HTTP リスナーと HTTPS リスナーで使用できます。

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

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

AlbConfig で X-Forwarded-Port ヘッダーフィールドを指定して、ALB インスタンスのリスナーポートを取得できます。XForwardedForSLBPortEnabled パラメーターの有効な値:

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

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

説明

このパラメーターは、HTTP リスナーと HTTPS リスナーで使用できます。

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

クライアントが ALB インスタンスへの接続に使用するポートの取得

AlbConfig で X-Forwarded-Client-srcport ヘッダーフィールドを指定して、クライアントが ALB インスタンスへの接続に使用するポートを取得できます。XForwardedForClientSrcPortEnabled パラメーターの有効な値:

  • true: クライアントが ALB インスタンスへの接続に使用するポートを取得します。

  • false: クライアントが ALB インスタンスへの接続に使用するポートを取得しません。

説明

このパラメーターは、HTTP リスナーと HTTPS リスナーで使用できます。

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

ネットワーク ACL の構成

重要

クラスタ内のリソースを更新するには、kubectl edit コマンドを実行することをお勧めします。kubectl apply コマンドを使用してリソースを更新するには、kubectl diff コマンドを実行して変更をプレビューし、kubectl apply コマンドを実行する前に変更が要件を満たしていることを確認してください。その後、kubectl apply コマンドを実行して、リソースに変更を適用できます。

AlbConfig を構成して、ALB インスタンスのリスナーのネットワークアクセス制御リスト (ACL) を有効にすることができます。ネットワーク ACL を構成して、特定の IP アドレスまたは CIDR ブロックからのアクセスを許可または拒否できます。これにより、クライアントリクエストに対してきめ細かいアクセス制御を実装できます。ネットワーク 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: ACL に追加する CIDR ブロック。例:127.0.0.1/32

ALB インスタンスの削除

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

kubectl delete -n kube-system delete AlbConfig alb-demo

alb-demo を削除する AlbConfig の名前に置き換えます。

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

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

  1. 次のコマンドを実行して、AlbConfig に関連付けられているすべての Ingress を削除します。

    kubectl delete -n <NAMESPACE> ingress <INGRESS_NAME>  # <INGRESS_NAME> と <NAMESPACE> を削除する Ingress の名前と名前空間に置き換えます。

  2. kubectl edit コマンドを実行して AlbConfig を変更し、spec.listeners パラメーターのすべてのエントリを削除します。このようにして、AlbConfig で指定されたすべてのリスナーが削除されます。

    重要

    クラスタにインストールされている ALB Ingress コントローラーのバージョンが 2.10.0-aliyun.1 以降の場合は、この手順をスキップします。

  3. 次のコマンドを実行して、AlbConfig を削除します。

    kubectl -n kube-system delete AlbConfig alb-demo # alb-demo を削除する AlbConfig の名前に置き換えます。