AlbConfig は、Container Service for Kubernetes(ACK)が Application Load Balancer(ALB)Ingress コントローラーに提供する CustomResourceDefinition(CRD)です。 ALB Ingress コントローラーは、AlbConfig を使用して ALB インスタンスとリスナーを構成します。 このトピックでは、AlbConfig の作成、変更、更新、および Simple Log Service(SLS)を有効にする方法について説明します。
目次
カテゴリ | 機能 | 参照 |
ALB インスタンス構成 | ALB 管理 | |
再利用された ALB インスタンスの管理 | ||
詳細構成 | ||
ALB リスナー構成 | リスナー管理 | |
詳細構成 | ||
セキュリティ設定 |
前提条件
ALB Ingress コントローラーがクラスターにインストールされています。 詳細については、「ALB Ingress コントローラーを管理する」をご参照ください。
説明ACK 専用クラスター にデプロイされたサービスへのアクセスに ALB Ingress を使用するには、まず、クラスターに ALB Ingress コントローラーに必要な権限を付与する必要があります。 詳細については、「ACK 専用クラスターに ALB Ingress コントローラーへのアクセスを承認する」をご参照ください。
異なるゾーンにある 2 つの vSwitch が、ACK クラスターと同じ virtual private cloud(VPC)に作成およびデプロイされています。 ゾーンが Application Load Balancer(ALB)でサポートされていることを確認してください。 詳細については、「vSwitch を作成および管理する」をご参照ください。
アノテーションの使用上の注意
リソース構成を変更または更新するには、
kubectl edit
コマンドを使用することをお勧めします。kubectl apply
コマンドを使用してリソースを変更または更新する必要がある場合は、最初にkubectl diff
コマンドを実行して変更をプレビューし、kubectl apply
コマンドを実行する前に変更が期待どおりであることを確認する必要があります。 その後、kubectl apply
コマンドを実行して、クラスター内のリソースに変更を適用します。Flannel ネットワークプラグインを使用する場合、ALB Ingress ゲートウェイのバックエンドサービスは、NodePort または LoadBalancer タイプである必要があります。
AlbConfig を作成する
AlbConfig は、ALB インスタンスを構成するために使用されます。 複数の ALB インスタンスを構成する場合は、複数の AlbConfig を作成する必要があります。 AlbConfig を作成するには、次の手順を実行します。
ALB Ingress コントローラーをインストールするときに、[作成] または [既存のものを選択] を [ゲートウェイ ソース] パラメーターに選択すると、コントローラーは alb という名前の AlbConfig と alb という名前の IngressClass を自動的に作成します。
alb.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、AlbConfig を作成するために使用されます。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb spec: config: name: alb addressType: Internet zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 値を使用する vSwitch の ID に置き換えます。 allocationId: eip-asdfas**** # 値をエラスティック IP アドレス(EIP)ID に置き換えます。 デフォルトのオプションは、パブリック IP アドレスを自動的に割り当てることです。 - vSwitchId: vsw-uf6nun9tql5t8nh15**** allocationId: eip-dpfmss**** # 値を EIP ID に置き換えます。 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 インスタンスがデプロイされている virtual private cloud(VPC)内からのみアクセスできます。
重要AlbConfig の
addressType
パラメーターは、AlbConfig を作成するときにのみ有効になります。 このパラメーターは、AlbConfig を更新するときには有効になりません。spec.config.zoneMappings
ALB Ingress によって使用される vSwitch の ID。
少なくとも 2 つの vSwitch ID を指定する必要があり、vSwitch は異なるゾーンにデプロイする必要があります。 vSwitch のゾーンは、ALB でサポートされている必要があります。 サポートされているゾーンの詳細については、「リージョンとゾーン」をご参照ください。
vSwitch は、クラスターと同じ VPC 内にあります。
重要1 つのゾーンのみを含むリージョンに vSwitch を指定する場合、1 つの vSwitch ID を指定できます。
AlbConfig の
zoneMappings
パラメーターは、AlbConfig を作成するときにのみ有効になります。 このパラメーターは、AlbConfig を更新するときには有効になりません。
zoneMappings パラメーターで、インターネット向け ALB インスタンスが依存する EIP の ID を指定できます。
EIP が指定されていない場合は、デフォルトオプションの「EIP を自動的に割り当てる」を使用します。 その後、BGP マルチライン帯域幅とデフォルトのセキュリティ保護モードを使用する従量課金制 EIP が自動的に作成され、ALB インスタンスに関連付けられます。 詳細については、「ALB 課金概要」をご参照ください。
または、既存の EIP を ALB インスタンスに関連付けることもできます。
重要インターネット共有帯域幅インスタンスに追加されていない従量課金制(データ転送料金制)EIP のみを ALB インスタンスに関連付けることができます。
同じ ALB インスタンスの異なるゾーンに指定する EIP は、同じタイプである必要があります。
クラスターに ALB Ingress コントローラーをインストールするときに、デフォルトの AlbConfig を作成できます。 デフォルトの AlbConfig のパラメーターは、
vSwitchID
パラメーターを除き、次の設定を使用します。次のコマンドを実行して、AlbConfig を作成します。
kubectl apply -f alb.yaml
予期される出力:
AlbConfig.alibabacloud.com/alb created
次のコマンドを実行して、AlbConfig をクエリします。
kubectl get AlbConfig
予期される出力:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 28m
説明HTTP リスナーと証明書を構成する場合、
PORT&PROTOCOL
パラメーターとCERTID
パラメーターは空ではありません。 それ以外の場合、出力ではパラメーターは空です。
既存の ALB インスタンスを再利用する
既存の ALB インスタンスを再利用する場合は、AlbConfig に ALB インスタンスの ID を指定します。 ALB コンソール で作成された標準 ALB インスタンスまたは Web Application Firewall(WAF)対応 ALB インスタンスを再利用できます。 ベーシック ALB インスタンスは再利用できません。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: reuse-alb
spec:
config:
id: **** # SLB コンソールで作成された標準 ALB インスタンスまたは WAF 対応 ALB インスタンスの ID。
forceOverride: false
listenerForceOverride: false
次の表に、上記のパラメーターを示します。
パラメーター | 説明 |
|
重要 ALB インスタンスを再利用する場合、リスナー名を変更しないことをお勧めします。 そうしないと、リスナーは ACK によって管理できません。 AlbConfig を使用して作成または更新されたリスナーは ACK によって管理され、デフォルトでは名前の形式は |
| ALB インスタンスの再利用時に ALB インスタンス属性を強制的に上書きするかどうかを指定します。有効な値:
|
| ALB インスタンスの再利用時にリスナー属性を強制的に上書きするかどうかを指定します。有効な値:
|
EIP 帯域幅プラン構成
この機能を有効にすると、AlbConfig を使用してエラスティック IP アドレス(EIP)帯域幅プランを ALB インスタンスにバインドできます。
このパラメーターは、ネットワークタイプがインターネット向けに設定されている場合にのみ使用できます。 インターネット共有帯域幅インスタンスの購入方法の詳細については、「インターネット共有帯域幅を作成する」をご参照ください。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
name: alb
addressType: Internet
edition: Standard
zoneMappings:
- vSwitchId: vsw-2vcqeyvwsnd***
- vSwitchId: vsw-2vcbhjlqu7y***
billingConfig:
bandWidthPackageId: cbwp-2vcjucp49otd8qolhm*** # EIP 帯域幅プランの ID。
AlbConfig を更新する
AlbConfig を使用して作成された ALB インスタンスを更新するには、kubectl edit
コマンドを使用することをお勧めします。 AlbConfig を更新するには、次の手順を実行します。
次のコマンドを実行して、更新する AlbConfig の名前をクエリします。
kubectl get AlbConfig
予期される出力:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 28m
次のコマンドを実行して、AlbConfig を変更します。
kubectl edit albconfig <ALBCONFIG_NAME> # <ALBCONFIG_NAME> を AlbConfig の名前に置き換えます。
ビジネス要件に基づいて AlbConfig 構成ファイルを更新します。 たとえば、
spec.config.name
パラメーターを更新して、ALB インスタンスの名前をnew_alb
に変更できます。... spec: config: name: new_alb # ALB インスタンスの新しい名前。 ...
IngressClass を使用して AlbConfig を Ingress に関連付ける
ALB Ingress は、Kubernetes ネイティブの IngressClass リソースを使用して AlbConfig に関連付けます。 これは、IngressClass リソース内で特定のパラメーターを構成することによって実装されます。
ingress_class.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
Kubernetes 1.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 # 関連付ける AlbConfig の名前。
Kubernetes 1.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
次のコマンドを実行して、IngressClass を作成します。
kubectl apply -f ingress_class.yaml
予期される出力:
ingressclass.networking.k8s.io/alb created
ingress.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
ingressClassName
パラメーターを alb IngressClass に設定します。Kubernetes 1.19 以降を実行するクラスター
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb # Ingress の関連付けに使用する IngressClass の名前を指定します。 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
Kubernetes 1.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
次のコマンドを実行して、Ingress を作成します。
kubectl apply -f ingress.yaml
予期される出力:
ingress.networking.k8s.io/cafe-ingress created
上記の手順を完了すると、IngressClass を使用して AlbConfig を Ingress に関連付けることができます。
複数の ALB インスタンスを作成して使用する
複数の ALB インスタンス間で Ingress を共有する場合は、Ingress 構成ファイルの spec.ingressClassName
パラメーターに異なる IngressClass を指定します。
alb-2.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-2 spec: config: name: alb-2 # ALB インスタンスの名前。 addressType: Internet # ALB インスタンスにはパブリック IP アドレスがあります。 zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 使用する vSwitch の ID。 - vSwitchId: vsw-uf6nun9tql5t8nh15****
次のコマンドを実行して、AlbConfig を作成します。
kubectl apply -f alb-2.yaml
予期される出力:
AlbConfig.alibabacloud.com/alb-2 created
ingress_class2.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、IngressClass を作成するために使用されます。
Kubernetes 1.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 # 関連付ける AlbConfig の名前。
Kubernetes 1.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 # 関連付ける AlbConfig の名前。
次のコマンドを実行して、IngressClass を作成します。
kubectl apply -f ingress_class2.yaml
予期される出力:
ingressclass.networking.k8s.io/alb-2 created
ingress2.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
ingressClassName
パラメーターを使用して、Ingress に関連付けるさまざまな ALB インスタンスを指定できます。 次の例では、ingressClassName
パラメーターはalb-2
に設定されています。 これにより、Ingress は alb-2 IngressClass に関連付けられ、alb-2 IngressClass は alb-2 ALB インスタンスに関連付けられます。Kubernetes 1.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
Kubernetes 1.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
次のコマンドを実行して、Ingress を作成します。
kubectl apply -f ingress2.yaml
予期される出力:
ingress.networking.k8s.io/cafe-ingress2 created
IPv6 を有効にする
AlbConfig を使用して ALB インスタンスを作成するときに、addressIpVersion
パラメーターを DualStack
に設定して、IPv4/IPv6 デュアルスタックを有効にできます。
AlbConfig の addressIpVersion
パラメーターは、AlbConfig を作成するときにのみ有効になります。 このパラメーターは、AlbConfig を更新するときには有効になりません。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
addressIpVersion: DualStack # IPv4/IPv6 デュアルスタックを有効にします。
...
カスタム TLS セキュリティポリシーを指定する
AlbConfig を使用して HTTPS リスナーを構成するときに、TLS セキュリティポリシーを指定できます。 カスタム TLS セキュリティポリシーとデフォルト TLS セキュリティポリシーがサポートされています。 詳細については、「TLS セキュリティポリシー」をご参照ください。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
#...
listeners:
- port: 443
protocol: HTTPS
securityPolicyId: tls_cipher_policy_1_1 # セキュリティグループの ID を指定します。
#...
SLS を有効にしてアクセスログを収集する
ALB Ingress のアクセスログを収集する場合は、AlbConfig 構成で logProject
パラメーターと logStore
パラメーターを設定します。
クラスターの作成時にクラスターの新しい SLS プロジェクトまたは既存の SLS プロジェクトを構成する場合、次の手順を実行してプロジェクトを表示できます。 ACK コンソール にログオンします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。 [クラスター] ページで、クラスターの名前をクリックします。 クラスター詳細ページの左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。 [基本情報] タブで、クラスターに関連付けられている [Log Service プロジェクト] を表示できます。
logStore
パラメーターの値は、alb_
で始まる必要があります。 指定されたLogstore
が存在しない場合、指定された名前で新しい Logstore が作成されます。既存の ALB インスタンスを再利用し、AlbConfig を使用して SLS を有効にする場合は、
forceOverride
パラメーターをtrue
に設定して、ALB インスタンスの属性を強制的に上書きする必要があります。 詳細については、「既存の ALB インスタンスを再利用する」をご参照ください。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
accessLogConfig:
logProject: "k8s-log-xz92lvykqj1siwvif****"
logStore: "alb_****"
#...
[基本情報] タブで、[Log Service プロジェクト] の右側にあるプロジェクト名をクリックして、SLS コンソールで収集されたログを表示できます。
AlbConfig を削除する
AlbConfig は ALB インスタンスを構成するために使用されます。 したがって、対応する AlbConfig を削除することで、ALB インスタンスを削除できます。
AlbConfig を削除する前に、AlbConfig に関連付けられているすべての Ingress を削除する必要があります。
次のコマンドを実行して、AlbConfig を削除します。
kubectl delete AlbConfig <AlbConfig_NAME> # <AlbConfig_NAME> を削除する AlbConfig の名前に置き換えます。
再利用された ALB インスタンスの AlbConfig を削除する
再利用された ALB インスタンスの AlbConfig を削除しても、ALB インスタンスは削除されません。 再利用された ALB インスタンスの AlbConfig を削除するには、次の手順を実行します。
kubectl edit
コマンドを実行して、spec.listeners
パラメーターのすべてのエントリを削除するように AlbConfig を変更します。 これにより、AlbConfig で指定されたすべてのリスナーが削除されます。重要クラスターにインストールされている ALB Ingress コントローラーのバージョンが 2.10.0-aliyun.1 以降の場合は、この手順をスキップします。
次のコマンドを実行して、AlbConfig を削除します。
重要AlbConfig を削除する前に、AlbConfig に関連付けられているすべての Ingress を削除する必要があります。
kubectl delete AlbConfig <AlbConfig_NAME> # <AlbConfig_NAME> を削除する AlbConfig の名前に置き換えます。
Listeners パラメーターの説明
用語
オブジェクト構成ファイル: Kubernetes オブジェクトの構成を定義するファイル。
ライブオブジェクト構成ファイル: Kubernetes クラスターに適用されているオブジェクト構成ファイル。
last-applied-configuration: Kubernetes オブジェクトのアノテーション。 このアノテーションは、オブジェクトの最新の構成の内容を記録します。 オブジェクトの構成が更新されても、アノテーションはリアルタイムで更新されません。
Listeners パラメーターの更新方法
Listeners パラメーターは配列タイプです。 ほとんどの場合、配列内のフィールドを置き換えることで Listeners パラメーターを更新できます。 Listeners パラメーターを更新すると、フィールドは指定した新しいフィールドに置き換えられます。 次の表にルールを示します。
手順 | 条件 | 結果 | ||
リスナーがオブジェクト構成ファイルにある | リスナーがライブオブジェクト構成ファイルにある | リスナーが last-applied-configuration アノテーションにある | ||
(1) | はい | はい | -(無関係) | リスナーはライブオブジェクト構成ファイルに保持されます。 |
(2) | はい | いいえ | -(無関係) | リスナーはライブオブジェクト構成ファイルに追加されます。 |
(3) | いいえ | -(無関係) | はい | リスナーはライブオブジェクト構成ファイルから削除されます。 ただし、リスナーのフィールドはデフォルト設定にリセットされる場合があります。 |
(4) | いいえ | はい | いいえ | リスナーはライブオブジェクト構成ファイルから削除されます。 |
例
次の例は、オブジェクト構成ファイル、ライブオブジェクト構成ファイル、および last-applied-configuration
アノテーションの内容を示しています。
# オブジェクト構成ファイルの内容。
listeners:
- port: 8001
protocol: HTTP
- port: 8003
protocol: HTTP
- port: 8005 # ポート 8005 を追加します。
protocol: HTTP
# ライブオブジェクト構成ファイルの内容。
listeners:
- port: 8001
protocol: HTTP
- port: 8002 # ポート 8002 を削除します。
protocol: HTTP
- port: 8003
protocol: HTTP
- port: 8004 # ポート 8004 を削除します。
protocol: HTTP
# last-applied-configuration アノテーションの内容。
listeners:
- port: 8001
protocol: HTTP
- port: 8002 # ポート 8002 を削除します。
protocol: HTTP
- port: 8003
protocol: HTTP
次のコードブロックは、更新後の Listeners パラメーターの構成を示しています。
# Listeners パラメーターの構成。
listeners:
- port: 8001
protocol: HTTP
- port: 8003
protocol: HTTP
- port: 8005
protocol: HTTP
ポート 8001 とポート 8003 はルール 1 に一致します。 したがって、これらは保持されます。
ポート 8005 はルール 2 に一致します。 したがって、これは追加されます。
ポート 8002 はルール 3 に一致します。 したがって、これは削除されます。
ポート 8004 はルール 4 に一致します。 したがって、これは削除されます。
HTTPS リスナーを作成する
ALB インスタンスはリスナーを使用して、リクエストのアプリケーション層情報に基づいて外部リクエストを受信して転送します。 ALB インスタンスは、ALB インスタンスのリスナーを作成した後にのみ、クライアントからのリクエストをリスンします。
リスナーを作成するには、AlbConfig で port
パラメーターと protocol
パラメーターを設定します。 リスナーの port
、protocol
、またはその他のパラメーターを変更すると、元のリスナーが削除され、変更されたパラメーターに基づいて新しいリスナーが作成されます。
リスナーは、アプリケーション層で HTTP、HTTPS、および Quick UDP Internet Connections(QUIC)のプロトコルをサポートしています。
異なるプロトコルを使用する複数のリスナーを同時に構成できます。 この場合、Ingress 構成に必要なアノテーションを追加して、複数のリスニングポートを指定する必要があります。 詳細については、「カスタムリスニングポートを構成する」をご参照ください。
HTTP リスナーを作成する
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP # 有効な値:HTTP、HTTPS、および QUIC。
...
HTTP は WebSocket と互換性があります。 追加の構成は必要ありません。
HTTPS リスナーを作成する
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 443
protocol: HTTPS
...
HTTPS リスナーの証明書を構成する必要があります。 詳細については、「HTTPS ポートでの通信を暗号化するための証明書を構成する」をご参照ください。
QUIC リスナーを作成する
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 443
protocol: QUIC
...
QUIC リスナーは、HTTP/3 プロトコルを使用するクライアントからのリクエストを受信できます。 詳細については、「QUIC リスナーを使用して HTTP/3 をサポートする」をご参照ください。
証明書を指定する
ALB インスタンスの作成時に HTTPS リスナーの暗号化と認証を有効にする場合は、kubectl edit albconfig <Albconfig_Name>
コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。 その後、AlbConfig の certificates
パラメーターに証明書 ID を指定します。
パラメーターで証明書を指定しない場合、システムが ALB インスタンスを作成するときに HTTPS リスナーは作成されません。 システムは、Ingress がリスナーに関連付けられ、Ingress が Ingress 構成で指定されたドメイン名に基づいて証明書を自動的に検出するまで待機します。 これは、ドメイン名に基づく証明書の自動検出により、リスナーの作成が遅延することを意味します。
証明書の構成方法の詳細については、「暗号化通信用の HTTPS 証明書を構成する」をご参照ください。
ALB は、指定した最初の証明書をデフォルト証明書として使用します。 ALB は、証明書の有効期限が切れるか、要件を満たさなくなるまで、デフォルト証明書を使用してリクエストを暗号化します。 この場合、ALB は他の証明書を使用してリクエストを暗号化します。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
...
listeners:
- caEnabled: false
certificates:
- CertificateId: 756****-cn-hangzhou # 証明書 ID。
IsDefault: true
port: 443
protocol: HTTPS
...
リスナーの接続タイムアウト期間を設定する
AlbConfig の構成で、リスナーの接続タイムアウト期間を設定できます。 有効な値:1 ~ 180。単位:秒。 指定されたタイムアウト期間内にバックエンドサーバーから応答が受信されない場合、ALB はクライアントに HTTP 504 エラーコードを返します。 接続タイムアウト期間を指定しない場合は、デフォルトのタイムアウト期間(60 秒)が使用されます。 次の YAML ファイルは例です。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
requestTimeout: 40 # デフォルトのタイムアウト期間は 60 秒です。
...
データ圧縮を構成する
この機能を有効にすると、ALB インスタンスは特定の種類のファイルを圧縮します。 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。
応答の
Content-Length
の値が 1,024 バイトを超える場合にのみ、データ圧縮がトリガーされます。
次の YAML ファイルは例です。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
gzipEnabled: true
...
クライアント IP アドレスを保持する
この機能を有効にすると、ALB インスタンスは、バックエンドアプリケーションにリクエストを転送するときに、クライアント IP アドレスを指定するパラメーターを HTTP リクエストヘッダーに追加します。 XForwardedForEnabled
パラメーターの有効な値:
true
:クライアント IP アドレスの保持を有効にします。false
:クライアント IP アドレスの保持を無効にします。
このパラメーターは、HTTP リスナーと HTTPS リスナーで使用できます。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
#...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForEnabled: true # このパラメーターを false に設定することはできません。
#...
クライアントが ALB インスタンスへの接続に使用するポートを取得する
この機能を有効にすると、ALB インスタンスは、バックエンドアプリケーションにリクエストを転送するときに、クライアントポートを指定するパラメーターを HTTP リクエストヘッダーに追加します。 XForwardedForClientSrcPortEnabled
パラメーターの有効な値:
true
:クライアントが ALB インスタンスへの接続に使用するポートを取得します。false
:クライアントが ALB インスタンスへの接続に使用するポートを取得しません。
このパラメーターは、HTTP リスナーと HTTPS リスナーで使用できます。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForClientSrcPortEnabled: true
...
ALB インスタンスで使用されるリスナープロトコルを取得する
この機能を有効にすると、ALB インスタンスは、バックエンドアプリケーションにリクエストを転送するときに、ALB インスタンスで使用されるリスナープロトコルを指定するパラメーターを HTTP リクエストヘッダーに追加します。 XForwardedForProtoEnabled
パラメーターの有効な値:
true
:ALB インスタンスで使用されるリスナープロトコルを取得します。false
:ALB インスタンスで使用されるリスナープロトコルを取得しません。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForProtoEnabled: true
...
ALB インスタンスの ID を取得する
この機能を有効にすると、ALB インスタンスは、バックエンドアプリケーションにリクエストを転送するときに、ALB インスタンスの ID を指定するパラメーターを HTTP リクエストヘッダーに追加します。 XForwardedForSLBIdEnabled
パラメーターの有効な値:
true
:ALB インスタンスの ID を取得します。false
:ALB インスタンスの ID を取得しません。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForSLBIdEnabled: true
...
ALB インスタンスのリスニングポートを取得する
この機能を有効にすると、ALB インスタンスは、バックエンドアプリケーションにリクエストを転送するときに、ALB インスタンスのリスニングポートを指定するパラメーターを HTTP リクエストヘッダーに追加します。 XForwardedForSLBPortEnabled
パラメーターの有効な値:
true
:ALB インスタンスのリスニングポートを取得します。false
:ALB インスタンスのリスニングポートを取得しません。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForSLBPortEnabled: true
...
信頼できるプロキシサーバーの IP アドレスを指定する
AlbConfig の構成で XForwardedForClientSourceIpsEnabled
パラメーターを指定して、ALB インスタンスが X-Forwarded-For
ヘッダーフィールドからクライアント IP アドレスを取得できるようにすることができます。 XForwardedForClientSourceIpsTrusted
パラメーターを使用して、信頼できるプロキシサーバー IP アドレスのリストを指定できます。 これにより、ALB インスタンスは、X-Forwarded-For
ヘッダーフィールド内の IP アドレスを右端の IP アドレスから左端の IP アドレスまで走査します。 信頼できる IP アドレスリストにない最初の IP アドレスがクライアント IP アドレスと見なされます。
たとえば、X-Forwarded-For
の値が <クライアント IP、プロキシサーバー IP-1、プロキシサーバー IP-2>
の場合、プロキシサーバー IP-1
と プロキシサーバー IP-2
を XForwardedForClientSourceIpsTrusted
パラメーターに指定できます。 これにより、ALB インスタンスはクライアント IP アドレスを取得できます。
このパラメーターは、HTTP リスナーと HTTPS リスナーで使用できます。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForClientSourceIpsEnabled: true # true の値を指定すると、ALB インスタンスは X-Forwarded-For ヘッダーからクライアント IP アドレスを取得できます。 値を true に設定する場合は、XForwardedForClientSourceIpsTrusted パラメーターを有効な形式で構成する必要があります。 false の値を指定すると、ALB インスタンスは X-Forwarded-For ヘッダーからクライアント IP アドレスを取得できなくなります。
XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16 # 有効な IP アドレスまたは CIDR ブロックを入力します。 このパラメーターは、XForwardedForClientSourceIpsEnabled が true に設定されている場合にのみ有効になります。
...
ネットワーク ACL を構成する
AlbConfig を構成して、ALB インスタンスのリスナーのネットワークアクセス制御リスト(ACL)を有効にできます。 ネットワーク ACL を構成して、特定の IP アドレスまたは CIDR ブロックからのアクセスを許可または拒否できます。 これにより、クライアントリクエストに対してきめ細かいアクセス制御を実装できます。 詳細については、「ACL を構成する」をご参照ください。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
#...
listeners:
- port: 80
protocol: HTTP
aclConfig:
aclEntries:
- 127.0.0.1/32
aclType: White
#...
パラメーター:
aclType
:ネットワーク ACL のタイプ。有効な値:Black
およびWhite
。 Black の値はブラックリストを指定します。 White の値はホワイトリストを指定します。aclEntries
:アクセス制御のために ACL ルールに追加する CIDR ブロック。例:127.0.0.1/32。
リスナーを削除する
ALB インスタンスには複数のリスナーが存在する場合があります。 ALB インスタンスのリスナーを削除するには、kubectl edit albconfig <Albconfig_Name>
コマンドを実行して、ALB インスタンスの構成に使用する AlbConfig を変更します。 その後、albconfig.spec.listeners
パラメーターからリスナーを削除します。
リスナーを削除する前に、すべての Ingress をリスナーから関連付けを解除する必要があります。 そうしないと、リスナーの削除に失敗し、システムからエラーがプロンプト表示されます。
# 削除前の構成。
listeners:
- port: 8001
protocol: HTTP
- port: 8002 # リスニングポート 8002 を削除します。
protocol: HTTP
# 削除後の構成。
listeners:
- port: 8001
protocol: HTTP