第 4 章 IAM 角色故障排除

4.1. 解决 ocm-roles 和 user-role IAM 资源的问题

当尝试使用 Red Hat OpenShift Service on AWS (ROSA) CLI ( rosa )创建集群时,您可能会收到错误。

输出示例

E: Failed to create cluster: The sts_user_role is not linked to account '1oNl'. Please create a user role and link it to the account.

此错误意味着 user-role IAM 角色没有链接到 AWS 帐户。此错误的最常见原因是红帽机构中的其他用户创建了 ocm-role IAM 角色。需要创建您的 user-role IAM 角色。

注意

在任何用户设置链接到红帽帐户的 ocm-role IAM 资源后,任何希望在该红帽机构中创建集群的后续用户都必须具有 user-role IAM 角色来置备集群。

流程

  • 使用以下命令评估 ocm-roleuser-role IAM 角色的状态:

    $ rosa list ocm-role

    输出示例

    I: Fetching ocm roles
    ROLE NAME                           ROLE ARN                                          LINKED  ADMIN
    ManagedOpenShift-OCM-Role-1158  arn:aws:iam::2066:role/ManagedOpenShift-OCM-Role-1158   No      No

    $ rosa list user-role

    输出示例

    I: Fetching user roles
    ROLE NAME                                   ROLE ARN                                        LINKED
    ManagedOpenShift-User.osdocs-Role  arn:aws:iam::2066:role/ManagedOpenShift-User.osdocs-Role  Yes

在这些命令的结果中,您可以创建并链接缺少的 IAM 资源。

4.1.1. 创建 ocm-role IAM 角色

您可以使用命令行界面(CLI)创建 ocm-role IAM 角色。

前提条件

  • 您有一个 AWS 帐户。
  • 在 OpenShift Cluster Manager 组织中具有红帽机构管理员权限。
  • 您有安装 AWS 范围的角色所需的权限。
  • 您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI rosa

流程

  • 要使用基本权限创建 ocm-role IAM 角色,请运行以下命令:

    $ rosa create ocm-role
  • 要使用 admin 权限创建 ocm-role IAM 角色,请运行以下命令:

    $ rosa create ocm-role --admin

    此命令允许您通过指定特定属性来创建角色。以下示例输出显示选择了"自动模式",它允许 ROSA CLI (rosa)创建 Operator 角色和策略。如需更多信息,请参阅附加资源中的"集群范围的角色创建"。

输出示例

I: Creating ocm role
? Role prefix: ManagedOpenShift 1
? Enable admin capabilities for the OCM role (optional): No 2
? Permissions boundary ARN (optional):  3
? Role creation mode: auto 4
I: Creating role using 'arn:aws:iam::<ARN>:user/<UserName>'
? Create the 'ManagedOpenShift-OCM-Role-182' role? Yes 5
I: Created role 'ManagedOpenShift-OCM-Role-182' with ARN  'arn:aws:iam::<ARN>:role/ManagedOpenShift-OCM-Role-182'
I: Linking OCM role
? OCM Role ARN: arn:aws:iam::<ARN>:role/ManagedOpenShift-OCM-Role-182 6
? Link the 'arn:aws:iam::<ARN>:role/ManagedOpenShift-OCM-Role-182' role with organization '<AWS ARN'? Yes 7
I: Successfully linked role-arn 'arn:aws:iam::<ARN>:role/ManagedOpenShift-OCM-Role-182' with organization account '<AWS ARN>'

1
所有创建的 AWS 资源的前缀值。在本例中,ManagedOpenShift 会预先填充所有 AWS 资源。
2
如果您希望此角色具有额外的 admin 权限,请选择。
注意

如果使用 --admin 选项,则不会显示此提示。

3
用于设置权限边界的策略的 Amazon 资源名称 (ARN)。
4
选择如何创建 AWS 角色的方法。使用 auto 时,ROSA CLI 生成并链接角色和策略。在 auto 模式中,您收到一些不同的提示来创建 AWS 角色。
5
auto 方法询问您是否要使用您的前缀创建特定的 ocm-role
6
确认您要将 IAM 角色与 OpenShift Cluster Manager 关联。
7
将创建的角色与 AWS 组织相关联。

4.1.2. 创建 user-role IAM 角色

您可以使用命令行界面(CLI)创建 user-role IAM 角色。

前提条件

  • 您有一个 AWS 帐户。
  • 您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI rosa

流程

  • 要使用基本权限创建 user-role IAM 角色,请运行以下命令:

    $ rosa create user-role

    此命令允许您通过指定特定属性来创建角色。以下示例输出显示选择了"自动模式",它允许 ROSA CLI (rosa)创建 Operator 角色和策略。如需更多信息,请参阅附加资源中的"了解自动和手动部署模式"。

输出示例

I: Creating User role
? Role prefix: ManagedOpenShift 1
? Permissions boundary ARN (optional): 2
? Role creation mode: auto 3
I: Creating ocm user role using 'arn:aws:iam::2066:user'
? Create the 'ManagedOpenShift-User.osdocs-Role' role? Yes 4
I: Created role 'ManagedOpenShift-User.osdocs-Role' with ARN 'arn:aws:iam::2066:role/ManagedOpenShift-User.osdocs-Role'
I: Linking User role
? User Role ARN: arn:aws:iam::2066:role/ManagedOpenShift-User.osdocs-Role
? Link the 'arn:aws:iam::2066:role/ManagedOpenShift-User.osdocs-Role' role with account '1AGE'? Yes 5
I: Successfully linked role ARN 'arn:aws:iam::2066:role/ManagedOpenShift-User.osdocs-Role' with account '1AGE'

1
所有创建的 AWS 资源的前缀值。在本例中,ManagedOpenShift 会预先填充所有 AWS 资源。
2
用于设置权限边界的策略的 Amazon 资源名称 (ARN)。
3
选择如何创建 AWS 角色的方法。使用 auto 时,ROSA CLI 生成角色,并将角色链接到 AWS 帐户。在 auto 模式中,您收到一些不同的提示来创建 AWS 角色。
4
auto 方法询问您是否要使用您的前缀创建特定的 user-role
5
将创建的角色与 AWS 组织相关联。

4.1.3. 链接 AWS 帐户

您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI rosa 将 AWS 帐户链接到现有的 IAM 角色。

前提条件

  • 您有一个 AWS 帐户。
  • 您可以使用 OpenShift Cluster Manager Hybrid Cloud Console 创建集群。
  • 您有安装 AWS 范围的角色所需的权限。如需更多信息,请参阅本节的"附加资源"。
  • 您已在安装主机上安装和配置了最新的 AWS (aws) 和 ROSA (rosa) CLI。
  • 您已创建了 ocm-roleuser-role IAM 角色,但还没有将它们链接到 AWS 帐户。您可以运行以下命令来检查您的 IAM 角色是否已链接:

    $ rosa list ocm-role
    $ rosa list user-role

    如果这两个角色的 Linked 列中显示了 Yes,您已将角色链接到 AWS 帐户。

流程

  1. 在 CLI 中,使用 Amazon Resource Name (ARN) 将 ocm-role 资源链接到红帽机构:

    注意

    您必须具有红帽机构管理员权限才能运行 rosa link 命令。将 ocm-role 资源与 AWS 帐户链接后,对机构的所有用户可见。

    $ rosa link ocm-role --role-arn <arn>

    输出示例

    I: Linking OCM role
    ? Link the '<AWS ACCOUNT ID>` role with organization '<ORG ID>'? Yes
    I: Successfully linked role-arn '<AWS ACCOUNT ID>' with organization account '<ORG ID>'

  2. 在 CLI 中,使用您的 Amazon 资源名称 (ARN) 将您的 user-role 资源链接到您的红帽用户帐户:

    $ rosa link user-role --role-arn <arn>

    输出示例

    I: Linking User role
    ? Link the 'arn:aws:iam::<ARN>:role/ManagedOpenShift-User-Role-125' role with organization '<AWS ID>'? Yes
    I: Successfully linked role-arn 'arn:aws:iam::<ARN>:role/ManagedOpenShift-User-Role-125' with organization account '<AWS ID>'

4.1.4. 将多个 AWS 帐户与红帽机构相关联

您可以将多个 AWS 帐户与红帽机构相关联。通过关联多个帐户,您可以从您的红帽机构在 AWS (ROSA) 集群上创建 Red Hat OpenShift 服务。

使用此功能,您可以使用多个 AWS 配置集作为区域密集型环境在不同的 AWS 区域中创建集群。

前提条件

  • 您有一个 AWS 帐户。
  • 您可以使用 OpenShift Cluster Manager Hybrid Cloud Console 创建集群。
  • 您有安装 AWS 范围的角色所需的权限。
  • 您已在安装主机上安装和配置了最新的 AWS (aws) 和 ROSA (rosa) CLI。
  • 您已创建了 ocm-roleuser-role IAM 角色。

流程

要关联一个额外的 AWS 帐户,首先在本地 AWS 配置中创建配置集。然后,通过在其他 AWS 帐户中创建 ocm-role、用户帐户角色,将该帐户与您的红帽机构相关联。

要在附加区域中创建角色,在运行 rosa create 命令时指定 --profile <aws-profile> 参数,将 <aws_profile> 替换为附加帐户配置集名称:

  • 在创建 OpenShift Cluster Manager 角色时指定 AWS 帐户配置集:

    $ rosa create --profile <aws_profile> ocm-role
  • 在创建用户角色时指定 AWS 帐户配置集:

    $ rosa create --profile <aws_profile> user-role
  • 在创建帐户角色时指定 AWS 帐户配置集:

    $ rosa create --profile <aws_profile> account-roles
注意

如果没有指定配置集,则使用默认 AWS 配置集。