3.4. 集群特定 Operator IAM 角色参考
本节详细介绍了使用 STS 的 AWS (ROSA) 部署的 Red Hat OpenShift Service 所需的 Operator IAM 角色。集群 Operator 使用 Operator 角色获取执行集群操作所需的临时权限,如管理后端存储、云供应商凭证和对集群的外部访问权限。
在创建 Operator 角色时,匹配的集群版本的 account-wide Operator 策略会附加到角色中。Operator 策略使用 Operator 标记,以及它们与之兼容的版本。Operator 角色的正确策略通过使用标签来决定。
如果您的帐户中有多个匹配策略,则创建 Operator 时会提供一个交互式选项列表。
资源 | 描述 |
---|---|
| ROSA 需要的 IAM 角色,以通过 Container Storage Interface (CSI) 管理后端存储。 |
| ROSA Machine Config Operator 所需的 IAM 角色,以执行核心集群功能。 |
| ROSA Cloud Credential Operator 所需的 IAM 角色来管理云供应商凭证。 |
| 云网络配置控制器所需的 IAM 角色,用于管理集群的云网络配置。 |
| ROSA Image Registry Operator 所需的 IAM 角色,用于管理集群的 AWS S3 中的 OpenShift 镜像 registry 存储。 |
| ROSA Ingress Operator 所需的 IAM 角色来管理集群的外部访问。 |
| 云网络配置控制器所需的 IAM 角色,用于管理集群的云网络凭证。 |
3.4.1. Operator IAM 角色 AWS CLI 参考
本节列出了在使用手动
模式运行以下 rosa
命令时在终端中显示的 aws
CLI 命令:
$ rosa create operator-roles --mode manual --cluster <cluster_name>
使用手动
模式时,aws
命令会被打印到终端中,供您查看。查看 aws
命令后,您必须手动运行它们。另外,您可以使用 rosa create
命令指定 --mode auto
来立即运行 aws
命令。
命令输出
aws iam create-role \ --role-name <cluster_name>-<hash>-openshift-cluster-csi-drivers-ebs-cloud-credent \ --assume-role-policy-document file://operator_cluster_csi_drivers_ebs_cloud_credentials_policy.json \ --tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=<openshift_version> Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-cluster-csi-drivers Key=operator_name,Value=ebs-cloud-credentials aws iam attach-role-policy \ --role-name <cluster_name>-<hash>-openshift-cluster-csi-drivers-ebs-cloud-credent \ --policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-cluster-csi-drivers-ebs-cloud-credent aws iam create-role \ --role-name <cluster_name>-<hash>-openshift-machine-api-aws-cloud-credentials \ --assume-role-policy-document file://operator_machine_api_aws_cloud_credentials_policy.json \ --tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=<openshift_version> Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-machine-api Key=operator_name,Value=aws-cloud-credentials aws iam attach-role-policy \ --role-name <cluster_name>-<hash>-openshift-machine-api-aws-cloud-credentials \ --policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-machine-api-aws-cloud-credentials aws iam create-role \ --role-name <cluster_name>-<hash>-openshift-cloud-credential-operator-cloud-crede \ --assume-role-policy-document file://operator_cloud_credential_operator_cloud_credential_operator_iam_ro_creds_policy.json \ --tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=<openshift_version> Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-cloud-credential-operator Key=operator_name,Value=cloud-credential-operator-iam-ro-creds aws iam attach-role-policy \ --role-name <cluster_name>-<hash>-openshift-cloud-credential-operator-cloud-crede \ --policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-cloud-credential-operator-cloud-crede aws iam create-role \ --role-name <cluster_name>-<hash>-openshift-image-registry-installer-cloud-creden \ --assume-role-policy-document file://operator_image_registry_installer_cloud_credentials_policy.json \ --tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=<openshift_version> Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-image-registry Key=operator_name,Value=installer-cloud-credentials aws iam attach-role-policy \ --role-name <cluster_name>-<hash>-openshift-image-registry-installer-cloud-creden \ --policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-image-registry-installer-cloud-creden aws iam create-role \ --role-name <cluster_name>-<hash>-openshift-ingress-operator-cloud-credentials \ --assume-role-policy-document file://operator_ingress_operator_cloud_credentials_policy.json \ --tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=<openshift_version> Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-ingress-operator Key=operator_name,Value=cloud-credentials aws iam attach-role-policy \ --role-name <cluster_name>-<hash>-openshift-ingress-operator-cloud-credentials \ --policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-ingress-operator-cloud-credentials
表中提供的命令示例包括使用 ManagedOpenShift
前缀的 Operator 角色。如果您在创建集群范围的角色和策略(包括 Operator 策略)时定义了自定义前缀,您必须在创建 Operator 角色时使用 --prefix <prefix_name>
选项来引用它。
3.4.2. 关于自定义 Operator IAM 角色前缀
每个使用 AWS 安全令牌服务 (STS) 的 Red Hat OpenShift Service on AWS (ROSA )都需要集群特定的 Operator IAM 角色。
默认情况下,Operator 角色名称使用集群名称和随机 4 位的哈希作为前缀。例如,名为 mycluster
的集群的 Cloud Credential Operator IAM 角色具有默认名称 mycluster-<hash>-openshift-cloud-credential-operator-cloud-credentials
,其中 <hash>
是一个随机 4 位字符串。
通过这个默认命名惯例,您可以在 AWS 帐户中轻松识别集群的 Operator IAM 角色。
当您为集群创建 Operator 角色时,您可以选择指定要使用的自定义前缀,而不是 <cluster_name>-<hash>
。通过使用自定义前缀,您可以在 Operator 角色名称前添加逻辑标识符来满足您的环境的要求。例如,您可以为集群名称和环境类型添加前缀,如 mycluster-dev
。在本例中,带有自定义前缀的 Cloud Credential Operator 角色名称为 mycluster-dev-openshift-cloud-credential-operator-cloud-credenti
。
角色名称被截断为 64 个字符。
其他资源
For steps to create the cluster-specific Operator IAM roles using a custom prefix, see link:https://docs.redhat.com/en/documentation/red_hat_openshift_service_on_aws/4/html-single/install_rosa_classic_clusters/#rosa-sts-creating-cluster-customizations-cli_rosa-sts-creating-a-cluster-with-customizations[Creating a cluster with customizations using the CLI] or link:https://docs.redhat.com/en/documentation/red_hat_openshift_service_on_aws/4/html-single/install_rosa_classic_clusters/#rosa-sts-creating-cluster-customizations-ocm_rosa-sts-creating-a-cluster-with-customizations[Creating a cluster with customizations by using {cluster-manager}].