AlbConfigは、Container Service for Kubernetes (ACK) がApplication Load Balancer (ALB) Ingressコントローラーに提供するCustomResourceDefinition (CRD) です。 ALB Ingressコントローラーは、AlbConfigsを使用してALBインスタンスとリスナーを設定します。 このトピックでは、AlbConfigを作成、変更、および更新する方法、およびSimple Log Service (SLS) を有効にする方法について説明します。
目次
カテゴリ | 機能 | 関連ドキュメント |
ALBインスタンス設定 | ALB管理 | |
再利用されたALBインスタンス管理 | ||
詳細構成 | ||
ALBリスナーの設定 | リスナー管理 | |
詳細構成 | ||
セキュリティ設定 |
前提条件
ALB Ingressコントローラーがクラスターにインストールされています。 詳細については、「ALB Ingressコントローラーの管理」をご参照ください。
説明ALB Ingressを使用してACK専用クラスターにデプロイされたサービスにアクセスするには、まずALB Ingressコントローラーが必要とする権限をクラスターに付与する必要があります。 詳細については、「ACK専用クラスターにALB Ingressコントローラーへのアクセスを許可する」をご参照ください。
異なるゾーンに存在する2つのvSwitchが作成され、ACKクラスターと同じ仮想プライベートクラウド (VPC) にデプロイされます。 詳細については、「vSwitchの作成と管理」をご参照ください。
注釈使用法ノート
リソース設定を変更または更新するには、
kubectl editコマンドを使用することを推奨します。kubectl applyコマンドを使用してリソースを変更または更新する必要がある場合は、kubectl applyコマンドを実行する前に、まずkubectl diffコマンドを実行して変更をプレビューし、変更が期待どおりであることを確認する必要があります。 次に、kubectl applyコマンドを実行して、クラスター内のリソースに変更を適用します。Flannelネットワークプラグインを使用する場合、ALB IngressゲートウェイのバックエンドサービスはNodePortまたはLoadBalancerタイプである必要があります。
AlbConfigの作成
AlbConfigは、ALBインスタンスを設定するために使用されます。 複数のALBインスタンスを設定する場合は、複数のAlbConfigsを作成する必要があります。 AlbConfigを作成するには、次の手順を実行します。
ALB Ingressコントローラーをインストールするときに、Gateway Sourceパラメーターとして [作成] または [既存の選択] を選択すると、コントローラーは自動的に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**** # Replace the value with the ID of the vSwitch that you want to use. allocationId: eip-asdfas**** # Replace the value with your elastic IP address (EIP) ID. The default option is to automatically assign a public IP address. - vSwitchId: vsw-uf6nun9tql5t8nh15**** allocationId: eip-dpfmss**** # Replace the value with the EIP ID. listeners: - port: 80 protocol: HTTPパラメーター
説明
spec.config.nameALBインスタンスの名前。
spec.config.addressTypeALBインスタンスがサービスの提供に使用するIPアドレスのタイプ。 有効な値:
インターネット: ALBインスタンスはパブリックIPアドレスを使用します。 Ingressのドメイン名はパブリックIPアドレスに解決されます。 したがって、ALBインスタンスはインターネット経由でアクセスできます。 デフォルト値です。イントラネット: ALBインスタンスはプライベートIPアドレスを使用します。 Ingressのドメイン名はプライベートIPアドレスに解決されます。 したがって、ALBインスタンスは、ALBインスタンスがデプロイされている仮想プライベートクラウド (VPC) 内でのみアクセス可能です。
重要AlbConfigの
addressTypeパラメーターは、AlbConfigを作成した場合にのみ有効になります。このパラメーターは、AlbConfigを更新するときには有効になりません。spec.config.zoneMappingsALB Ingressによって使用されるvSwitchのID。
少なくとも2つのvSwitch IDを指定する必要があり、vSwitchは異なるゾーンにデプロイする必要があります。 vSwitchのゾーンはALBでサポートされている必要があります。 サポートされているゾーンの詳細については、「ALBが利用可能なリージョンとゾーン」をご参照ください。
vSwitchはクラスターと同じVPCにあります。
重要1つのゾーンのみを含むリージョンでvSwitchを指定する場合は、1つのvSwitch IDを指定できます。
AlbConfigの
zoneMappingsパラメーターは、AlbConfigを作成した場合にのみ有効になります。このパラメーターは、AlbConfigを更新するときには有効になりません。
zoneMappingsパラメーターで、インターネットに接続するALBインスタンスが依存するEIPのIDを指定できます。
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: **** # The ID of the standard ALB instance or WAF-enabled ALB instance that is created in the SLB console.
forceOverride: false
listenerForceOverride: false次の表に、上記のパラメーターを示します。
パラメーター | 説明 |
|
重要 ALBインスタンスを再利用する場合は、リスナー名を変更しないことを推奨します。 そうでない場合、リスナーはACKで管理できません。 AlbConfigsを使用して作成または更新されたリスナーはACKで管理され、その名前はデフォルトで |
| ALBインスタンスの再利用時にALBインスタンス属性を強制的に上書きするかどうかを指定します。 有効な値:
|
| ALBインスタンスの再利用時にリスナー属性を強制的に上書きするかどうかを指定します。 有効な値:
|
EIP帯域幅プランの設定
この機能を有効にすると、AlbConfigsを使用してEIP (elastic IP address) 帯域幅プランを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*** # The ID of the EIP bandwidth plan.
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> # Replace <ALBCONFIG_NAME> with the name of the AlbConfig.ビジネス要件に基づいてAlbConfig構成ファイルを更新します。 たとえば、
spec.config.nameパラメーターを更新して、ALBインスタンスの名前をnew_albに変更できます。... spec: config: name: new_alb # The new name of the ALB instance. ...
IngressClassを使用して、AlbConfigをIngressに関連付ける
IngressClassを使用して、AlbConfigをALB Ingressに関連付けることができます。 これを行うには、IngressClass設定でAlbConfigを指定します。
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 # The name of the AlbConfig that you want to associate.1.19より前のバージョンのKubernetesを実行するクラスター
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 createdingress.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。
ingressClassNameパラメーターをalb IngressClassに設定します。Kubernetes 1.19以降を実行するクラスター
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb # Specify the name of the IngressClass that is used to associate the Ingress. rules: - http: paths: # Configure a context path. - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # Configure a context path. - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 801.19より前のバージョンのKubernetesを実行するクラスター
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - http: paths: # Configure a context path. - path: /tea backend: serviceName: tea-svc servicePort: 80 # Configure a context path. - 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パラメーターで異なるIngressClassesを指定します。
alb-2.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-2 spec: config: name: alb-2 # The name of an ALB instance. addressType: Internet # The ALB instance has a public IP address. zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # The ID of the vSwitch that you want to use. - vSwitchId: vsw-uf6nun9tql5t8nh15****次のコマンドを実行して、AlbConfigを作成します。
kubectl apply -f alb-2.yaml期待される出力:
AlbConfig.alibabacloud.com/alb-2 createdingress_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 # The name of the AlbConfig that you want to associate.1.19より前のバージョンのKubernetesを実行するクラスター
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 # The name of the AlbConfig that you want to associate.次のコマンドを実行してIngressClassを作成します。
kubectl apply -f ingress_class2.yaml期待される出力:
ingressclass.networking.k8s.io/alb-2 createdingress2.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。
ingressClassNameパラメーターを使用して、Ingressに関連付けるさまざまなALBインスタンスを指定できます。 次の例では、ingressClassNameパラメーターはalb-2に設定されています。 これにより、Ingressは、alb-2 albインスタンスに関連付けられているALB-2 IngressClassに関連付けられます。Kubernetes 1.19以降を実行するクラスター
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress2 spec: ingressClassName: alb-2 rules: - http: paths: # Configure a context path. - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # Configure a context path. - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 801.19より前のバージョンのKubernetesを実行するクラスター
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: cafe-ingress2 spec: ingressClassName: alb-2 rules: - http: paths: # Configure a context path. - path: /tea backend: serviceName: tea-svc servicePort: 80 # Configure a context path. - 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 # Enable IPv4/IPv6 dual stack.
...カスタム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 # Specify the ID of the security group.
#...SLSを有効にしてアクセスログを収集する
ALB Ingressのアクセスログを収集する場合は、AlbConfig設定でlogProjectおよびlogStoreパラメーターを設定します。
クラスターの作成時にクラスターに新規または既存のSLSプロジェクトを設定する場合は、次の手順を実行してプロジェクトを表示できます。 ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。 [クラスター] ページで、クラスターの名前をクリックします。 クラスターの詳細ページの左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。 [基本情報] タブで、クラスターに関連付けられているLog Serviceプロジェクトを表示できます。
logStoreパラメーターの値は、alb_で始まる必要があります。 指定されたLogstoreが存在しない場合、指定された名前の新しいLogstoreが作成されます。既存のALBインスタンスを再利用し、AlbConfigを使用してSLSを有効にする場合、ALBインスタンスの属性を強制的に上書きするには、
forceOverrideパラメーターをtrueに設定する必要があります。 詳細については、「既存のALBインスタンスの再利用」をご参照ください。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
accessLogConfig:
logProject: "k8s-log-xz92lvykqj1siwvif****"
logStore: "alb_****"
#...[基本情報] タブで、Log Service projectの右側にあるプロジェクト名をクリックして、収集したログをSLSコンソールで表示できます。
AlbConfigの削除
AlbConfigは、ALBインスタンスを設定するために使用されます。 したがって、対応するAlbConfigを削除することで、ALBインスタンスを削除できます。
AlbConfigを削除する前に、AlbConfigに関連付けられているすべてのIngressを削除する必要があります。
次のコマンドを実行して、AlbConfigを削除します。
kubectl delete AlbConfig <AlbConfig_NAME> # Replace <AlbConfig_NAME> with the name of the AlbConfig that you want to delete.再利用されたALBインスタンスのAlbConfigの削除
再利用されたALBインスタンスのAlbConfigを削除しても、ALBインスタンスは削除されません。 再利用されたALBインスタンスのAlbConfigを削除するには、次の手順を実行します。
kubectl editコマンドを実行して、AlbConfigを変更し、spec.listenersパラメーターのすべてのエントリを削除します。 これにより、AlbConfigで指定されたすべてのリスナーが削除されます。重要クラスターにインストールされているALB Ingressコントローラーのバージョンが2.10.0-aliyun.1以降の場合は、この手順をスキップしてください。
次のコマンドを実行して、AlbConfigを削除します。
重要AlbConfigを削除する前に、AlbConfigに関連付けられているすべてのIngressを削除する必要があります。
kubectl delete AlbConfig <AlbConfig_NAME> # Replace <AlbConfig_NAME> with the name of the AlbConfig that you want to delete.
Listenersパラメーターの説明
用語
オブジェクト設定ファイル: Kubernetesオブジェクトの設定を定義するファイル。
ライブオブジェクト設定ファイル: Kubernetesクラスターに適用されているオブジェクト設定ファイル。
last-applied-configuration: Kubernetesオブジェクトのアノテーション。 注釈は、オブジェクトの最新の構成の内容を記録する。 注釈は、オブジェクトの構成が更新されるときにリアルタイムで更新されない。
Listenersパラメーターの更新方法
Listenersパラメーターは配列型です。 ほとんどの場合、配列内のフィールドを置き換えることでListenersパラメーターを更新できます。 Listenersパラメーターを更新すると、フィールドは指定した新しいフィールドに置き換えられます。 次の表にルールを示します。
ステップ | 条件 | 結果 | ||
リスナーがオブジェクト構成ファイルにある | リスナーがライブオブジェクト構成ファイルにあります | リスナーは最後に適用された構成アノテーションにあります | ||
(1) | 対象 | 対象 | -(無関係) | リスナーはライブオブジェクト構成ファイルに保持されます。 |
(2) | 必須 | 非対象 | -(無関係) | リスナーがライブオブジェクト構成ファイルに追加されます。 |
(3) | 非対象 | -(無関係) | 対象 | リスナーがライブオブジェクト構成ファイルから削除されます。 ただし、リスナーのフィールドをデフォルト設定にリセットすることもできます。 |
(4) | 継続しない | 可 | 非対象 | リスナーがライブオブジェクト構成ファイルから削除されます。 |
例
次の例は、オブジェクト構成ファイル、ライブオブジェクト構成ファイル、およびlast-applied-configurationアノテーションの内容を示しています。
# The content of the object configuration file.
listeners:
- port: 8001
protocol: HTTP
- port: 8003
protocol: HTTP
- port: 8005 # Add port 8005.
protocol: HTTP
# The content of the live object configuration file.
listeners:
- port: 8001
protocol: HTTP
- port: 8002 # Delete port 8002.
protocol: HTTP
- port: 8003
protocol: HTTP
- port: 8004 # Delete port 8004.
protocol: HTTP
# The content of the last-applied-configuration annotation.
listeners:
- port: 8001
protocol: HTTP
- port: 8002 # Delete port 8002.
protocol: HTTP
- port: 8003
protocol: HTTP次のコードブロックは、更新後のListenersパラメーターの設定を示しています。
# The configuration of the Listeners parameter.
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パラメーターを設定します。リスナーのポート、プロトコル、またはその他のパラメーターを変更すると、元のリスナーが削除され、変更されたパラメーターに基づいて新しいリスナーが作成されます。
リスナーは、アプリケーション層で次のプロトコルをサポートします。HTTP、HTTPS、およびクイックUDPインターネット接続 (QUIC) 。
同時に異なるプロトコルを使用する複数のリスナーを設定できます。 この場合、複数のリスニングポートを指定するには、必要なアノテーションをIngress設定に追加する必要があります。 詳細については、「カスタムリスニングポートの設定」をご参照ください。
HTTPリスナーの作成
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP # Valid values: HTTP, HTTPS, and 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 # The certificate 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 # The default timeout period is 60 seconds.
...データ圧縮の設定
この機能を有効にすると、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。
次の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 # This parameter cannot be set to 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アドレスの指定
ALBインスタンスがX-Forwarded-ForヘッダーフィールドからクライアントIPアドレスを取得できるようにするには、AlbConfigの設定でXForwardedForClientSourceIpsEnabledパラメーターを指定します。 XForwardedForClientSourceIpsTrustedパラメーターを使用して、信頼できるプロキシサーバーのIPアドレスのリストを指定できます。 このようにして、ALBインスタンスは、右端のIPアドレスから左端のIPアドレスまで、X-Forwarded-Forヘッダーフィールド内のIPアドレスをトラバースします。 信頼済みIPアドレスリストにない最初のIPアドレスは、クライアントIPアドレスと見なされます。
たとえば、X-Forwarded-Forの値が <クライアントIP、プロキシサーバーIP-1、プロキシサーバーIP-2> の場合、XForwardedForClientSourceIpsTrustedパラメーターでプロキシサーバーIP-1とプロキシサーバーIP-2を指定できます。 このようにして、ALBインスタンスはクライアントIPアドレスを取得できます。
このパラメーターは、HTTPリスナーとHTTPSリスナーで使用できます。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForClientSourceIpsEnabled: true # A value of true allows the ALB instance to retrieve client IP addresses from the X-Forwarded-For header. If you set the value to true, you must configure the XForwardedForClientSourceIpsTrusted parameter in a valid format. A value of false forbids the ALB instance from retrieving client IP addresses from the X-Forwarded-For header.
XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16 # Enter a valid IP address or CIDR block. This parameter takes effect only when XForwardedForClientSourceIpsEnabled is set to true.
...ネットワークACLの設定
ALBインスタンスのリスナーのネットワークアクセス制御リスト (ACL) を有効にするようにAlbConfigを設定できます。 特定のIPアドレスまたはCIDRブロックからのアクセスを許可または拒否するようにネットワークACLを設定できます。 これにより、クライアント要求に対して詳細なアクセス制御を実装できます。 詳細については、「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の関連付けを解除する必要があります。 そうしないと、リスナーの削除に失敗し、エラーが表示されます。
# The configurations before the deletion.
listeners:
- port: 8001
protocol: HTTP
- port: 8002 # Delete listening port 8002.
protocol: HTTP
# The configurations after the deletion.
listeners:
- port: 8001
protocol: HTTP