AlbConfigは、Container Service for Kubernetes (ACK) がApplication Load Balancer (ALB) Ingressコントローラーに提供するCustomResourceDefinition (CRD) です。 ALB Ingressコントローラーは、AlbConfigsを使用してALBインスタンスとリスナーを設定します。 このトピックでは、AlbConfigを作成、変更、および更新する方法、およびSimple Log Service (SLS) を有効にする方法について説明します。
目次
カテゴリ | 参照 |
ALBインスタンス設定 | |
リスナーの設定 |
前提条件
ALB Ingressコントローラーがクラスターにインストールされています。 詳細については、「ALB Ingressコントローラーの管理」をご参照ください。
説明ALB Ingressを使用してACK専用クラスターにデプロイされたサービスにアクセスするには、まずALB Ingressコントローラーが必要とする権限をクラスターに付与する必要があります。 詳細については、「ACK専用クラスターにALB Ingressコントローラーへのアクセスを許可する」をご参照ください。
異なるゾーンに存在する2つのvSwitchが作成され、ACKクラスターと同じ仮想プライベートクラウド (VPC) にデプロイされます。 詳細については、「vSwitchの作成と管理」をご参照ください。
kubectlクライアントがACKクラスターに接続されています。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
使用上の注意
リソース設定を変更または更新するには、
kubectl edit
コマンドを使用することを推奨します。kubectl apply
コマンドを使用してリソースを変更または更新する必要がある場合は、kubectl apply
コマンドを実行する前に、まずkubectl diff
コマンドを実行して変更をプレビューし、変更が期待どおりであることを確認する必要があります。 次に、kubectl apply
コマンドを実行して、クラスター内のリソースに変更を適用します。以前のバージョンのNGINX Ingressコントローラーは、Ingressリソースの
spec:ingressClassName
フィールドを認識できません。 NGINX IngressとALB Ingressの両方がACKクラスターに設定されている場合、ALB Ingressは以前のバージョンのNGINX Ingressコントローラーによって調整される可能性があります。 この問題を回避するには、できるだけ早くNGINX Ingressコントローラーを更新するか、アノテーションを使用してALB IngressのIngressClassesを指定します。 詳細については、「NGINX Ingressコントローラーの更新」または「高度なALB Ingress設定」をご参照ください。
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. - vSwitchId: vsw-uf6nun9tql5t8nh15**** listeners: - port: 80 protocol: HTTP
パラメーター
説明
spec.config.name
ALBインスタンスの名前。
spec.config.addressType
ALBインスタンスがサービスの提供に使用するIPアドレスのタイプ。 有効な値:
インターネット
: ALBインスタンスはパブリックIPアドレスを使用します。 Ingressのドメイン名はパブリックIPアドレスに解決されます。 したがって、ALBインスタンスはインターネット経由でアクセスできます。 デフォルト値です。イントラネット
: ALBインスタンスはプライベートIPアドレスを使用します。 Ingressのドメイン名はプライベートIPアドレスに解決されます。 したがって、ALBインスタンスは、ALBインスタンスがデプロイされている仮想プライベートクラウド (VPC) 内でのみアクセス可能です。
重要AlbConfigの
addressType
パラメーターは、AlbConfigを作成した場合にのみ有効になります。このパラメーターは、AlbConfigを更新するときには有効になりません。spec.config.zoneMappings
ALB Ingressによって使用されるvSwitchのID。 複数のゾーンを含むリージョンでvSwitchを指定する場合は、異なるゾーンで少なくとも2つのvSwitch IDを指定する必要があります。 1つのゾーンのみを含むリージョンでvSwitchを指定する場合は、vSwitch IDを1つだけ指定できます。 指定されたvSwitchは、ALBインスタンスでサポートされているゾーンにデプロイされ、クラスターと同じVPCにデプロイされている必要があります。 ALB Ingressでサポートされているリージョンとゾーンの詳細については、「ALBが利用可能なリージョンとゾーン」をご参照ください。
重要複数のゾーンを含むリージョンでvSwitchを指定する場合は、異なるゾーンで少なくとも2つのvSwitch IDを指定する必要があります。
AlbConfigの
zoneMappings
パラメーターは、AlbConfigを作成した場合にのみ有効になります。このパラメーターは、AlbConfigを更新するときには有効になりません。
クラスターに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インスタンスの再利用時にリスナー属性を強制的に上書きするかどうかを指定します。 有効な値:
|
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 created
ingress.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: 80
1.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 uses 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 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 # 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 created
ingress2.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: 80
1.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のaddressIpVerison
パラメーターは、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が作成されます。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
accessLogConfig:
logProject: "k8s-log-xz92lvykqj1siwvif****"
logStore: "alb_****"
#...
[基本情報] タブで、Log Service projectの右側にあるプロジェクト名をクリックして、収集したログをSLSコンソールで表示できます。
ALBインスタンスの削除
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.
リスナーの作成
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のサポート」をご参照ください。
リスナーの接続タイムアウト時間を設定する
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 # XForwardedForEnabled cannot be disabled.
#...
クライアントが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
(ホワイトリスト) 。aclEntries
: アクセス制御のためにACLルールに追加するCIDRブロック。 例: 127.0.0.1/32。