您可以在共享的、集中管理的AWS虚拟私有云 (VPC) 中创建AWS上的Red Hat OpenShift Service (ROSA) 集群。
目前仅支持使用STS进行身份验证的ROSA经典集群跨多个AWS账户共享VPC。 |
此过程需要属于同一AWS组织的两个独立的AWS账户。一个账户充当VPC所有者AWS账户 (VPC所有者),而另一个账户在集群创建者AWS账户 (集群创建者) 中创建集群。 |
您拥有具有创建角色和共享资源的适当权限的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分支。 |
如果另一个AWS用户账户在您当前的AWS组织内,则可以在已配置的VPC中与该账户共享子网。
在AWS控制台的VPC部分中创建或修改VPC以满足您的规格。
创建一个自定义策略文件以允许必要的共享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
在AWS中创建策略
$ aws iam create-policy \
--policy-name SharedVPCPolicy \
--policy-document file:///tmp/shared-vpc-policy.json
您将把此策略附加到共享VPC权限所需的权限角色。
创建一个自定义信任策略文件,授予承担角色的权限
$ 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 ) 创建根用户占位符。 |
创建IAM角色
$ aws iam create-role --role-name <role_name> \ (1)
--assume-role-policy-document file:///tmp/shared-vpc-role.json
1 | 将<role_name>替换为您要创建的角色名称。 |
附加自定义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。 |
向集群创建者提供SharedVPCRole
ARN以继续配置。
请参阅AWS文档,了解共享您的AWS资源。
在VPC所有者创建虚拟私有云、子网和用于共享VPC资源的IAM角色后,预留一个openshiftapps.com
DNS域名并创建操作员角色以与VPC所有者进行通信。
对于共享VPC集群,您可以选择在集群创建步骤之后创建操作员角色。在将Ingress Operator角色ARN添加到共享VPC角色信任关系之前,集群将处于 |
您拥有来自VPC所有者的SharedVPCRole
ARN。
使用以下命令预留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'
创建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
通过输入以下命令来创建操作员角色
$ 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角色创建一个帐户角色集。 |
创建操作员角色后,请与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
在集群创建者提供DNS域名和IAM角色后,创建一个私有托管区域并更新为共享VPC而创建的IAM角色的信任策略。
您拥有来自集群创建者的完整域名。
您拥有来自集群创建者的Ingress Operator Cloud Credentials角色的ARN。
您拥有来自集群创建者的Installer角色的ARN。
在AWS控制台的资源访问管理器中,创建一个资源共享,以便与集群创建者的AWS账户ID共享先前创建的公共和私有子网。
更新VPC共享IAM角色并将Installer和Ingress 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"
}
]
}
在AWS控制台的Route 53部分创建一个私有托管区域。在托管区域配置中,域名是<cluster_name>.<reserved_dns_domain>
。私有托管区域必须与已创建的VPC关联。
托管区域创建并与VPC关联后,请提供以下信息给集群创建者以继续配置
托管区域ID
AWS区域
子网ID
要在共享VPC中创建集群,请完成以下步骤。
仅支持在共享VPC中安装OpenShift 4.12.34及更高版本、4.13.10及更高版本以及所有未来的4.y分支。 |
您已从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个字符,它将包含一个自动生成的域名前缀作为您在 要自定义子域名,请使用 |