2.3. AWS Load Balancer Operator 用に AWS STS クラスターを準備する
Security Token Service (STS) を使用するクラスターに Amazon Web Services (AWS) ロードバランサー Operator をインストールするには、CredentialsRequest オブジェクトを設定してクラスターを準備します。これにより、Operator は AWS Load Balancer Controller を起動し、必要なシークレットにアクセスできるようになります。
AWS Load Balancer Operator は、必要なシークレットが作成されて利用可能になるまで待機します。
Security Token Service (STS) の手順を開始する前に、以下の前提条件を満たしていることを確認してください。
-
OpenShift CLI (
oc) がインストールされている。 クラスターのインフラストラクチャー ID がわかっている。この ID を表示するには、CLI で次のコマンドを実行します。
$ oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}"クラスターの OpenID Connect (OIDC) の DNS 情報がわかっている。この情報を表示するには、CLI で次のコマンドを入力します。
$ oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"ここでは、以下のようになります。
{.spec.serviceAccountIssuer}-
OIDC DNS URL を指定します。URL の例は
https://rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t4fです。
-
AWS 管理コンソールにログインし、IAM
アクセス管理 アイデンティティープロバイダー に移動して、OIDC Amazon Resource Name (ARN) 情報を見つけました。OIDC の ARN の例は、 arn:aws:iam::777777777777:oidc-provider/<oidc_dns_url>です。
2.3.1. AWS Load Balancer Operator の IAM ロール リンクのコピーリンクがクリップボードにコピーされました!
STS を使用してクラスターに Amazon Web Services (AWS) ロードバランサー Operator をインストールするには、追加のアイデンティティーロールとアクセス管理 (IAM) ロールを設定します。このロールにより、Operator はサブネットおよび仮想プライベートクラウド (VPC) と連携できるようになり、オペレーターはブートストラップに必要な CredentialsRequest オブジェクトを生成できます。
IAM ロールは次の方法で作成できます。
-
Cloud Credential Operator ユーティリティー (
ccoctl) と、事前定義されたCredentialsRequestオブジェクトを使用します。 - AWS CLI と事前定義された AWS マニフェストを使用します。
環境が ccoctl コマンドをサポートしていない場合は、AWS CLI を使用します。
2.3.1.1. Cloud Credential Operator ユーティリティーを使用して AWS IAM ロールを作成する リンクのコピーリンクがクリップボードにコピーされました!
AWS Load Balancer Operator がサブネットや VPC とやり取りできるようにするには、Cloud Credential Operator ユーティリティー (ccoctl) を使用して AWS IAM ロールを作成します。この作業を行うことで、オペレーターがクラスター環境内で正しく機能するために必要な認証情報を生成できます。
前提条件
-
ccoctlバイナリーを抽出して準備する必要があります。
手順
次のコマンドを実行して、
CredentialsRequestカスタムリソース (CR) をダウンロードし、ディレクトリーに保存します。$ curl --create-dirs -o <credentials_requests_dir>/operator.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yamlccoctlユーティリティーを使用して次のコマンドを実行し、AWS IAM ロールを作成します。$ ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>出力例
2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator created 2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-operator-credentials.yaml 2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-operator createdここでは、以下のようになります。
<name>AWS Load Balancer Operator 用に作成された AWS IAM ロールの Amazon Resource Name (ARN) を指定します。例
: arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator。注記AWS IAM ロール名の長さは 12 文字以下にする必要があります。
2.3.1.2. AWS CLI を使用して AWS IAM ロールを作成する リンクのコピーリンクがクリップボードにコピーされました!
AWS Load Balancer Operator がサブネットおよび VPC と連携できるようにするには、AWS CLI を使用して AWS IAM ロールを作成します。これにより、Operator はクラスター内の必要なネットワークリソースにアクセスし、管理できるようになります。
前提条件
-
AWS コマンドラインインターフェイス (
aws) にアクセスできる。
手順
次のコマンドを実行して、アイデンティティープロバイダーを使用して信頼ポリシーファイルを生成します。
$ cat <<EOF > albo-operator-trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "<oidc_arn>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "<cluster_oidc_endpoint>:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager" } } } ] } EOFここでは、以下のようになります。
<oidc_arn>-
OIDC アイデンティティープロバイダーの Amazon Resource Name (ARN) (例:
arn:aws:iam::777777777777:oidc-provider/rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t4f) を指定します。 serviceaccount-
AWS Load Balancer Controller のサービスアカウントを指定します。
<cluster_oidc_endpoint>の例は、rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t4fです。
次のコマンドを実行して、生成された信頼ポリシーを使用して IAM ロールを作成します。
$ aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trust-policy.json出力例
ROLE arn:aws:iam::<aws_account_number>:role/albo-operator 2023-08-02T12:13:22Z1 ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-manager PRINCIPAL arn:aws:iam:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>ここでは、以下のようになります。
<aws_account_number>-
AWS Load Balancer Operator 用に作成された AWS IAM ロールの ARN を指定します。例
: arn:aws:iam::777777777777:role/albo-operator。
次のコマンドを実行して、AWS Load Balancer Operator の権限ポリシーをダウンロードします。
$ curl -o albo-operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-permission-policy.json次のコマンドを実行して、AWS Load Balancer Controller の権限ポリシーを IAM ロールに割り当てます。
$ aws iam put-role-policy --role-name albo-operator --policy-name perms-policy-albo-operator --policy-document file://albo-operator-permission-policy.json