21.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
インスタンスを設定できます。
21.4.1. Security Token Service クラスターでの AWS Load Balancer Operator のブートストラップ
前提条件
-
ccoctl
バイナリーを抽出して準備する必要があります。
手順
次のコマンドを実行して、
aws-load-balancer-operator
namespace を作成します。$ 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
21.4.2. 管理された CredentialsRequest
オブジェクトを使用して、Security Token Service クラスターで AWS Load Balancer Operator を設定する
前提条件
-
ccoctl
バイナリーを抽出して準備する必要があります。
手順
AWS Load Balancer Operator は、各
AWSLoadBalancerController
カスタムリソース (CR) のopenshift-cloud-credential-operator
namespaceに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-controller
Pod が作成されたことを確認します。$ 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
21.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/token
AWSLoadBalancerController
リソース 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