2.3.3.2. AWS CLI を使用してコントローラー用の AWS IAM ロールを作成する
AWS Load Balancer Controller がサブネットおよび仮想プライベートクラウド (VPC) と連携できるようにするには、AWS CLI を使用して IAM ロールを作成します。これにより、コントローラーがクラスター内のネットワークリソースを管理するために必要な特定の権限を確実に取得できます。
前提条件
-
AWS コマンドラインインターフェイス (
aws) にアクセスできる。
手順
次のコマンドを実行して、アイデンティティプロバイダーを使用して信頼ポリシーファイルを生成します。
$ cat <<EOF > albo-controller-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です。
次のコマンドを実行して、生成された信頼ポリシーを使用して AWS IAM ロールを作成します。
$ aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trust-policy.json出力例
ROLE arn:aws:iam::<aws_account_number>:role/albo-controller 2023-08-02T12:13:22Z1 ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager PRINCIPAL arn:aws:iam:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>ここでは、以下のようになります。
<aws_account_number>-
AWS Load Balancer Controller の AWS IAM ロールの ARN を指定します。例
: arn:aws:iam::777777777777:role/albo-controller。
次のコマンドを実行して、AWS Load Balancer Controller の権限ポリシーをダウンロードします。
$ curl -o albo-controller-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/assets/iam-policy.json次のコマンドを実行して、AWS Load Balancer Controller の権限ポリシーを AWS IAM ロールに割り当てます。
$ aws iam put-role-policy --role-name albo-controller --policy-name perms-policy-albo-controller --policy-document file://albo-controller-permission-policy.jsonAWSLoadBalancerControllerオブジェクトを定義する YAML ファイルを作成します。sample-aws-lb-manual-creds.yamlファイルの例apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController metadata: name: cluster spec: credentialsRequestConfig: stsIAMRoleARN: <albc_role_arn>ここでは、以下のようになります。
kind-
AWSLoadBalancerControllerオブジェクトを指定します。 メタデータ名- AWS Load Balancer Controller の名前を指定します。このインスタンス名は、関連するすべてのリソースの接尾辞として使用されます。
stsIAMRoleARN-
AWS Load Balancer Controller の ARN ロールを指定します。
CredentialsRequestオブジェクトは、この ARN ロールを使用して AWS 認証情報をプロビジョニングします。<albc_role_arn>の例は、arn:aws:iam::777777777777:role/albo-controllerです。