20.4. AWS Security Token Service を使用したクラスター上の AWS Load Balancer Operator の準備
STS を使用するクラスターに AWS Load Balancer Operator をインストールできます。Operator をインストールする前に、次の手順に従ってクラスターを準備します。
AWS Load Balancer Operator は、CredentialsRequest
オブジェクトに依存して Operator と AWS Load Balancer Controller をブートストラップします。AWS Load Balancer Operator は、必要なシークレットが作成されて利用可能になるまで待機します。Cloud Credential Operator は、STS クラスターでシークレットを自動的にプロビジョニングしません。ccoctl
バイナリーを使用して、クレデンシャルシークレットを手動で設定する必要があります。
Cloud Credential Operator を使用して認証情報シークレットをプロビジョニングしたくない場合は、AWS ロードバランサーコントローラーのカスタムリソース (CR) で認証情報シークレットを指定することにより、STS クラスターで AWSLoadBalancerController
インスタンスを設定できます。
20.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
20.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
20.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