23.4. Security Token Service クラスターへの AWS Load Balancer Operator のインストール
Security Token Service (STS) クラスターに AWS Load Balancer Operator をインストールできます。
AWS Load Balancer Operator は CredentialsRequest に依存して Operator をブートストラップし、各 AWSLoadBalancerController インスタンスを処理します。AWS Load Balancer Operator は、必要なシークレットが作成されて利用可能になるまで待機します。Cloud Credential Operator は、STS クラスターでシークレットを自動的にプロビジョニングしません。ccoctl バイナリーを使用して、クレデンシャルシークレットを手動で設定する必要があります。
Cloud Credential Operator を使用して認証情報シークレットをプロビジョニングしたくない場合は、AWS ロードバランサーコントローラーのカスタムリソース (CR) で認証情報シークレットを指定することにより、STS クラスターで AWSLoadBalancerController インスタンスを設定できます。
23.4.1. Security Token Service クラスターでの AWS Load Balancer Operator のブートストラップ
前提条件
-
ccoctlバイナリーを抽出して準備する必要があります。
手順
次のコマンドを実行して、
aws-load-balancer-operatornamespace を作成します。$ oc create namespace aws-load-balancer-operator
AWS Load Balancer Operator の
CredentialsRequestカスタムリソース (CR) をダウンロードし、次のコマンドを実行して格納するディレクトリーを作成します。$ curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
次のコマンドを実行して、
ccoctlツールを使用して AWS Load Balancer Operator のCredentialsRequestオブジェクトを処理します。$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>次のコマンドを実行して、クラスターのマニフェストディレクトリーに生成されたシークレットを適用します。
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}次のコマンドを実行して、AWS Load Balancer Operator の認証情報シークレットが作成されていることを確認します。
$ oc -n aws-load-balancer-operator get secret aws-load-balancer-operator --template='{{index .data "credentials"}}' | base64 -d出力例
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-operator web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
23.4.2. 管理された CredentialsRequest オブジェクトを使用して、Security Token Service クラスターで AWS Load Balancer Operator を設定する
前提条件
-
ccoctlバイナリーを抽出して準備する必要があります。
手順
AWS Load Balancer Operator は、各
AWSLoadBalancerControllerカスタムリソース (CR) のopenshift-cloud-credential-operatornamespaceにCredentialsRequestオブジェクトを作成します。次のコマンドを実行すると、作成されたCredentialsRequestオブジェクトを抽出してディレクトリーに保存できます。$ oc get credentialsrequest -n openshift-cloud-credential-operator \ aws-load-balancer-controller-<cr-name> -o yaml > <path-to-credrequests-dir>/cr.yaml 1- 1
aws-load-balancer-controller-<cr-name>パラメーターは、AWS Load Balancer Operator によって作成された認証情報リクエスト名を指定します。cr-nameは、AWS Load Balancer Controller インスタンスの名前を指定します。
次のコマンドを実行し、
ccoctlツールを使用してcredrequestsディレクトリー内のすべてのCredentialsRequestオブジェクトを処理します。$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>次のコマンドを実行して、マニフェストディレクトリーで生成されたシークレットをクラスターに適用します。
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}aws-load-balancer-controllerPod が作成されたことを確認します。$ oc -n aws-load-balancer-operator get pods NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-9b766d6-gg82c 1/1 Running 0 137m aws-load-balancer-operator-controller-manager-b55ff68cc-85jzg 2/2 Running 0 3h26m
23.4.3. 特定の認証情報を使用して Security Token Service クラスターで AWS Load Balancer Operator を設定する
認証情報シークレットは、AWS Load Balancer Controller カスタムリソース (CR) の spec.credentials フィールドを使用して指定できます。コントローラーの定義済みの CredentialsRequest オブジェクトを使用して、必要なロールを知ることができます。
前提条件
-
ccoctlバイナリーを抽出して準備する必要があります。
手順
AWS Load Balancer Controller の CredentialsRequest カスタムリソース (CR) をダウンロードし、次のコマンドを実行して格納するディレクトリーを作成します。
$ curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
ccoctlツールを使用して、コントローラーのCredentialsRequestオブジェクトを処理します。$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>クラスターにシークレットを適用します。
$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}コントローラーで使用するためにクレデンシャルシークレットが作成されていることを確認します。
$ oc -n aws-load-balancer-operator get secret aws-load-balancer-controller-manual-cluster --template='{{index .data "credentials"}}' | base64 -d出力例
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-controller web_identity_token_file = /var/run/secrets/openshift/serviceaccount/tokenAWSLoadBalancerControllerリソース YAML ファイル (例:sample-aws-lb-manual-creds.yaml) を次のように作成します。apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController 1 metadata: name: cluster 2 spec: credentials: name: <secret-name> 3