×

您可以在共享的、集中管理的AWS虚拟私有云 (VPC) 中创建AWS上的Red Hat OpenShift Service (ROSA) 集群。

目前仅支持使用STS进行身份验证的ROSA经典集群跨多个AWS账户共享VPC

此过程需要属于同一AWS组织的两个独立的AWS账户。一个账户充当VPC所有者AWS账户 (VPC所有者),而另一个账户在集群创建者AWS账户 (集群创建者) 中创建集群。

372 OpenShift on AWS persona worflows 0923 all
VPC所有者的先决条件
  • 您拥有具有创建角色和共享资源的适当权限的AWS账户。

  • 集群创建者的AWS账户与VPC所有者的AWS账户不同。

  • 两个AWS账户都属于同一个AWS组织。

  • 您已从组织的管理账户启用资源共享。

  • 您可以访问AWS控制台

集群创建者的先决条件
  • 您已安装ROSA CLI (rosa) 1.2.26或更高版本。

  • 您已创建所有必要的ROSA账户角色以创建集群。

  • 集群创建者的AWS账户与VPC所有者的AWS账户不同。

  • 两个AWS账户都属于同一个AWS组织。

仅支持在共享VPC中安装OpenShift 4.12.34及更高版本、4.13.10及更高版本以及所有未来的4.y分支。

第一步 - VPC所有者:配置可在您的AWS组织内共享的VPC

如果另一个AWS用户账户在您当前的AWS组织内,则可以在已配置的VPC中与该账户共享子网。

372 OpenShift on AWS persona worflows 0923 1
步骤
  1. AWS控制台的VPC部分中创建或修改VPC以满足您的规格。

  2. 创建一个自定义策略文件以允许必要的共享VPC权限,并使用名称SharedVPCPolicy

    $ cat <<EOF > /tmp/shared-vpc-policy.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "route53:ChangeResourceRecordSets",
                    "route53:ListHostedZones",
                    "route53:ListHostedZonesByName",
                    "route53:ListResourceRecordSets",
                    "route53:ChangeTagsForResource",
                    "route53:GetAccountLimit",
                    "route53:GetChange",
                    "route53:GetHostedZone",
                    "route53:ListTagsForResource",
                    "route53:UpdateHostedZoneComment",
                    "tag:GetResources",
                    "tag:UntagResources"
                ],
                "Resource": "*"
            }
        ]
    }
    EOF
  3. 在AWS中创建策略

    $ aws iam create-policy \
        --policy-name SharedVPCPolicy \
        --policy-document file:///tmp/shared-vpc-policy.json

    您将把此策略附加到共享VPC权限所需的权限角色。

  4. 创建一个自定义信任策略文件,授予承担角色的权限

    $ cat <<EOF > /tmp/shared-vpc-role.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::<Account-ID>:root"  (1)
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    EOF
    1 集群创建者创建必要的集群角色后,主体范围将缩小。创建时,您必须使用集群创建者的AWS账户ID (arn:aws:iam::{Account}:root) 创建根用户占位符。
  5. 创建IAM角色

    $ aws iam create-role --role-name <role_name> \  (1)
        --assume-role-policy-document file:///tmp/shared-vpc-role.json
    1 <role_name>替换为您要创建的角色名称。
  6. 附加自定义SharedVPCPolicy权限策略

    $ aws iam attach-role-policy --role-name <role_name> --policy-arn \  (1)
        arn:aws:iam::<AWS_account_ID>:policy/SharedVPCPolicy  (2)
    1 <role_name>替换为您创建的角色名称。
    2 <AWS_account_ID>替换为VPC所有者的AWS账户ID。
  7. 集群创建者提供SharedVPCRole ARN以继续配置。

其他资源

第二步 - 集群创建者:预留您的DNS并创建集群操作员角色

VPC所有者创建虚拟私有云、子网和用于共享VPC资源的IAM角色后,预留一个openshiftapps.com DNS域名并创建操作员角色以与VPC所有者进行通信。

对于共享VPC集群,您可以选择在集群创建步骤之后创建操作员角色。在将Ingress Operator角色ARN添加到共享VPC角色信任关系之前,集群将处于等待状态。

372 OpenShift on AWS persona worflows 0923 2
先决条件
  • 您拥有来自VPC所有者SharedVPCRole ARN。

步骤
  1. 使用以下命令预留openshiftapps.com DNS域名

    $ rosa create dns-domain

    该命令创建一个预留的openshiftapps.com DNS域名。

    I: DNS domain '14eo.p1.openshiftapps.com' has been created.
    I: To view all DNS domains, run 'rosa list dns-domains'
  2. 创建OIDC配置。

    查看本文以了解更多关于OIDC配置过程的信息。以下命令会生成您需要的OIDC配置ID

    $ rosa create oidc-config

    您将收到确认,表明该命令已创建OIDC配置

    I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice:
    	rosa create operator-roles --prefix <user-defined> --oidc-config-id 25tu67hq45rto1am3slpf5lq6jargg
  3. 通过输入以下命令来创建操作员角色

    $ rosa create operator-roles --oidc-config-id <oidc-config-ID> (1)
        --installer-role-arn <Installer_Role> (2)
        --shared-vpc-role-arn <Created_VPC_Role_Arn> (3)
        --prefix <operator-prefix> (4)
    
    1 提供您在上一步中创建的OIDC配置ID。
    2 提供作为rosa create account-roles过程一部分创建的安装程序ARN。
    3 提供VPC所有者创建的角色的ARN。
    4 为操作员角色提供前缀。

    安装程序帐户角色和共享VPC角色必须具有一对一关系。如果您想创建多个共享VPC角色,则应为每个共享VPC角色创建一个帐户角色集。

  4. 创建操作员角色后,请与VPC所有者共享完整的域名(使用<intended_cluster_name>.<reserved_dns_domain>创建)、您的Ingress Operator Cloud Credentials角色的ARN和您的Installer角色的ARN以继续配置。

    共享信息类似于以下示例

    • my-rosa-cluster.14eo.p1.openshiftapps.com

    • arn:aws:iam::111122223333:role/ManagedOpenShift-Installer-Role

    • arn:aws:iam::111122223333:role/my-rosa-cluster-openshift-ingress-operator-cloud-credentials

第三步 - VPC所有者:更新共享VPC角色并创建托管区域

集群创建者提供DNS域名和IAM角色后,创建一个私有托管区域并更新为共享VPC而创建的IAM角色的信任策略。

372 OpenShift on AWS persona worflows 0923 3
先决条件
  • 您拥有来自集群创建者的完整域名。

  • 您拥有来自集群创建者Ingress Operator Cloud Credentials角色的ARN。

  • 您拥有来自集群创建者Installer角色的ARN。

步骤
  1. AWS控制台的资源访问管理器中,创建一个资源共享,以便与集群创建者的AWS账户ID共享先前创建的公共和私有子网。

  2. 更新VPC共享IAM角色并将InstallerIngress Operator Cloud Credentials角色添加到信任策略的主体部分。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
    	  "Sid": "Statement1",
    	  "Effect": "Allow",
    	  "Principal": {
    	  	"AWS": [
              "arn:aws:iam::<Cluster-Creator's-AWS-Account-ID>:role/<prefix>-ingress-operator-cloud-credentials",
              "arn:aws:iam::<Cluster-Creator's-AWS-Account-ID>:role/<prefix>-Installer-Role"
            ]
    	  },
    	  "Action": "sts:AssumeRole"
    	}
      ]
    }
  3. 在AWS控制台的Route 53部分创建一个私有托管区域。在托管区域配置中,域名是<cluster_name>.<reserved_dns_domain>。私有托管区域必须与已创建的VPC关联。

  4. 托管区域创建并与VPC关联后,请提供以下信息给集群创建者以继续配置

    • 托管区域ID

    • AWS区域

    • 子网ID

步骤四 - 集群创建者:在共享VPC中创建您的集群

要在共享VPC中创建集群,请完成以下步骤。

仅支持在共享VPC中安装OpenShift 4.12.34及更高版本、4.13.10及更高版本以及所有未来的4.y分支。

372 OpenShift on AWS persona worflows 0923 4
先决条件
  • 您已从VPC所有者处获得托管区域ID。

  • 您已从VPC所有者处获得AWS区域。

  • 您已从VPC所有者处获得子网ID。

  • 您已从VPC所有者处获得SharedVPCRole ARN。

步骤
  • 在终端中,输入以下命令以创建共享VPC

    rosa create cluster --cluster-name <cluster_name> --sts --operator-roles-prefix <prefix> --oidc-config-id <oidc_config_id> --region us-east-1 --subnet-ids <subnet_ids> --private-hosted-zone-id <hosted_zone_ID> --shared-vpc-role-arn <vpc-role-arn> --base-domain <dns-domain>

如果您的集群名称超过15个字符,它将包含一个自动生成的域名前缀作为您在*.openshiftapps.com上配置的集群的子域名。

要自定义子域名,请使用--domain-prefix标志。域名前缀不能超过15个字符,必须唯一,并且在集群创建后不能更改。