2.3. 为 AWS Load Balancer Operator 准备 AWS STS 集群
您可以在使用安全令牌服务 (STS) 的集群中安装 Amazon Web Services (AWS) Load Balancer Operator。在安装 Operator 前,按照以下步骤准备集群。
				AWS Load Balancer Operator 依赖于 CredentialsRequest 对象来引导 Operator 和 AWS Load Balancer Controller。AWS Load Balancer Operator 等待所需的 secret 创建并可用。
			
2.3.1. 先决条件
- 
							已安装 OpenShift CLI(oc)。
- 您知道集群的基础架构 ID。要显示此 ID,请在 CLI 中运行以下命令: - oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}"- $ oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 您知道集群的 OpenID Connect (OIDC) DNS 信息。要显示此信息,请在 CLI 中输入以下命令: - oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"- $ oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- https://rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t4f是 OIDC DNS 的一个示例。
 
- 
							已登陆到 AWS Web 控制台,进入到 IAM Access management Identity provider,以及 OIDC Amazon Resource Name (ARN) 信息。一个 OIDC ARN 示例为 arn:aws:iam::777777777777:oidc-provider/<oidc_dns_url>。
2.3.2. 为 AWS Load Balancer Operator 创建 IAM 角色
					需要额外的 Amazon Web Services (AWS) Identity 和 Access Management (IAM) 角色,才能在使用 STS 的集群中安装 AWS Load Balancer Operator。需要 IAM 角色与子网和虚拟私有云(VPC)交互。AWS Load Balancer Operator 使用 IAM 角色生成 CredentialsRequest 对象来引导其自身。
				
您可以使用以下选项创建 IAM 角色:
- 
							使用 Cloud Credential Operator 实用程序 (ccoctl) 和预定义的CredentialsRequest对象。
- 使用 AWS CLI 和预定义的 AWS 清单。
					如果您的环境不支持 ccoctl 命令,请使用 AWS CLI。
				
2.3.2.1. 使用 Cloud Credential Operator 实用程序创建 AWS IAM 角色
						您可以使用 Cloud Credential Operator 实用程序(ccoctl) 为 AWS Load Balancer Operator 创建 AWS IAM 角色。AWS IAM 角色与子网和虚拟私有云 (VPC) 交互。
					
先决条件
- 
								您必须提取并准备 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.yaml - $ curl --create-dirs -o <credentials_requests_dir>/operator.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,使用 - ccoctl实用程序创建 AWS IAM 角色:- ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>- $ ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - 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 - 2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator created- 1 - 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- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 请注意为 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.2.2. 使用 AWS CLI 创建 AWS IAM 角色
您可以使用 AWS 命令行界面为 AWS Load Balancer Operator 创建 IAM 角色。IAM 角色用于与子网和虚拟私有云 (VPC) 交互。
先决条件
- 
								您必须有权访问 AWS 命令行界面 (aws)。
流程
- 运行以下命令,使用身份提供程序生成信任策略文件: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,使用生成的信任策略创建 IAM 角色: - aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trust-policy.json - $ aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trust-policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - ROLE arn:aws:iam::<aws_account_number>:role/albo-operator 2023-08-02T12:13:22Z 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> - ROLE arn:aws:iam::<aws_account_number>:role/albo-operator 2023-08-02T12:13:22Z- 1 - 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>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 为 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 - $ curl -o albo-operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-permission-policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,将 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 - $ aws iam put-role-policy --role-name albo-operator --policy-name perms-policy-albo-operator --policy-document file://albo-operator-permission-policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.3.3. 为 AWS Load Balancer Operator 配置 ARN 角色
您可以将 AWS Load Balancer Operator 的 Amazon 资源名称 (ARN) 角色配置为环境变量。您可以使用 CLI 配置 ARN 角色。
先决条件
- 
							已安装 OpenShift CLI(oc)。
流程
- 运行以下命令来创建 - aws-load-balancer-operator项目:- oc new-project aws-load-balancer-operator - $ oc new-project aws-load-balancer-operator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 - OperatorGroup对象:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 - Subscription对象:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定CredentialsRequest中使用的 ARN 角色,以便为 AWS Load Balancer Operator 置备 AWS 凭证。一个<albo_role_arn>示例是arn:aws:iam::<aws_account_number>:role/albo-operator。
 注意- AWS Load Balancer Operator 会在进入 - Available状态前等待创建 secret。
2.3.4. 为 AWS Load Balancer Controller 创建 IAM 角色
					AWS Load Balancer Controller 的 CredentialsRequest 对象必须使用手动置备的 IAM 角色设置。
				
您可以使用以下选项创建 IAM 角色:
- 
							使用 Cloud Credential Operator 实用程序 (ccoctl) 和预定义的CredentialsRequest对象。
- 使用 AWS CLI 和预定义的 AWS 清单。
					如果您的环境不支持 ccoctl 命令,请使用 AWS CLI。
				
						您可以使用 Cloud Credential Operator 实用程序(ccoctl) 为 AWS Load Balancer Controller 创建 AWS IAM 角色。AWS IAM 角色用于与子网和虚拟私有云 (VPC) 交互。
					
先决条件
- 
								您必须提取并准备 ccoctl二进制文件。
流程
- 运行以下命令,下载 - CredentialsRequest自定义资源 (CR) 并将其存储在目录中:- curl --create-dirs -o <credentials_requests_dir>/controller.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml - $ curl --create-dirs -o <credentials_requests_dir>/controller.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,使用 - ccoctl实用程序创建 AWS IAM 角色:- ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>- $ ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - 2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller created 2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-controller-credentials.yaml 2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-controller created - 2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller created- 1 - 2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-controller-credentials.yaml 2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-controller created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 请注意为 AWS Load Balancer Controller 创建的 AWS IAM 角色的 Amazon Resource Name (ARN),如arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller。
 注意- AWS IAM 角色名称的长度必须小于或等于 12 个字符。 
2.3.4.2. 使用 AWS CLI 为控制器创建 AWS IAM 角色
您可以使用 AWS 命令行界面为 AWS Load Balancer Controller 创建 AWS IAM 角色。AWS IAM 角色用于与子网和虚拟私有云 (VPC) 交互。
先决条件
- 
								您必须有权访问 AWS 命令行界面 (aws)。
流程
- 运行以下命令,使用身份提供程序生成信任策略文件: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,使用生成的信任策略创建 AWS IAM 角色: - aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trust-policy.json - $ aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trust-policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - ROLE arn:aws:iam::<aws_account_number>:role/albo-controller 2023-08-02T12:13:22Z 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> - ROLE arn:aws:iam::<aws_account_number>:role/albo-controller 2023-08-02T12:13:22Z- 1 - 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>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 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 - $ curl -o albo-controller-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/assets/iam-policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,将 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.json - $ aws iam put-role-policy --role-name albo-controller --policy-name perms-policy-albo-controller --policy-document file://albo-controller-permission-policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建定义 - AWSLoadBalancerController对象的 YAML 文件:- sample-aws-lb-manual-creds.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow