2.2. Red Hat OpenShift Service on AWS 的先决条件


要创建 Red Hat OpenShift Service on AWS 集群,您必须有以下项目:

  • 配置的虚拟私有云(VPC)
  • 集群范围的角色
  • OIDC 配置
  • Operator 角色

您必须具有 Virtual Private Cloud (VPC)才能在 AWS 集群上创建 Red Hat OpenShift Service。您可以使用以下方法创建 VPC:

  • 使用 ROSA CLI 创建 VPC
  • 使用 Terraform 模板创建 VPC
  • 在 AWS 控制台中手动创建 VPC 资源
注意

Terraform 指令用于测试和演示目的。您自己的安装需要对 VPC 的一些修改才能自行使用。您还应确保使用此 Terraform 配置时,它位于您要安装集群的同一区域。在这些示例中,使用了 us-east-2

使用 ROSA CLI 创建 AWS VPC

rosa create network 命令在 ROSA CLI 的 v.1.2.48 或更高版本中提供。命令使用 AWS CloudFormation 创建 VPC 以及在 AWS 集群上安装 Red Hat OpenShift Service 所需的相关网络组件。CloudFormation 是一个原生 AWS 基础架构即代码工具,与 AWS CLI 兼容。

如果没有指定模板,CloudFormation 将使用以下参数来创建资源的默认模板:

Expand
VPC 参数value

可用区

1

区域

us-east-1

VPC CIDR

10.0.0.0/16

您可以创建和自定义 CloudFormation 模板,以用于 rosa create network 命令。如需有关默认 VPC 模板的信息,请参阅本节的其他资源。

先决条件

  • 您已配置了 AWS 帐户
  • 您已配置了您的红帽帐户
  • 已安装 ROSA CLI 并将其配置为最新版本

流程

  1. 运行以下命令,使用默认的 CloudFormations 模板创建 AWS VPC:

    $ rosa create network
    Copy to Clipboard Toggle word wrap
  2. 可选:通过指定附加参数来自定义 VPC。

    您可以使用- -param 标志指定对默认 VPC 模板的更改。以下示例命令为 regionNameAvailabilityZoneCountVpcCidr 指定自定义值。

    $ rosa create network --param Region=us-east-2 --param Name=quickstart-stack --param AvailabilityZoneCount=3 --param VpcCidr=10.0.0.0/16
    Copy to Clipboard Toggle word wrap

    该命令需要大约 5 分钟来运行,并在创建资源时从 AWS 提供常规状态更新。如果 CloudFormation 存在问题,则会尝试回滚。对于遇到的所有其他错误,请按照错误消息说明或联系 AWS 支持。

验证

  • 完成后,您会收到创建的资源概述:

    INFO[0140] Resources created in stack:
    INFO[0140] Resource: AttachGateway, Type: AWS::EC2::VPCGatewayAttachment, ID: <gateway_id>
    INFO[0140] Resource: EC2VPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id>
    INFO[0140] Resource: EcrApiVPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id>
    INFO[0140] Resource: EcrDkrVPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id>
    INFO[0140] Resource: ElasticIP1, Type: AWS::EC2::EIP, ID: <IP>
    INFO[0140] Resource: ElasticIP2, Type: AWS::EC2::EIP, ID: <IP>
    INFO[0140] Resource: InternetGateway, Type: AWS::EC2::InternetGateway, ID: igw-016e1a71b9812464e
    INFO[0140] Resource: KMSVPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id>
    INFO[0140] Resource: NATGateway1, Type: AWS::EC2::NatGateway, ID: <nat-gateway_id>
    INFO[0140] Resource: PrivateRoute, Type: AWS::EC2::Route, ID: <route_id>
    INFO[0140] Resource: PrivateRouteTable, Type: AWS::EC2::RouteTable, ID: <route_id>
    INFO[0140] Resource: PrivateSubnetRouteTableAssociation1, Type: AWS::EC2::SubnetRouteTableAssociation, ID: <route_id>
    INFO[0140] Resource: PublicRoute, Type: AWS::EC2::Route, ID: <route_id>
    INFO[0140] Resource: PublicRouteTable, Type: AWS::EC2::RouteTable, ID: <route_id>
    INFO[0140] Resource: PublicSubnetRouteTableAssociation1, Type: AWS::EC2::SubnetRouteTableAssociation, ID: <route_id>
    INFO[0140] Resource: S3VPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id>
    INFO[0140] Resource: STSVPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id>
    INFO[0140] Resource: SecurityGroup, Type: AWS::EC2::SecurityGroup, ID: <security-group_id>
    INFO[0140] Resource: SubnetPrivate1, Type: AWS::EC2::Subnet, ID: <private_subnet_id-1> \ 
    1
    
    INFO[0140] Resource: SubnetPublic1, Type: AWS::EC2::Subnet, ID: <public_subnet_id-1> \ 
    2
    
    INFO[0140] Resource: VPC, Type: AWS::EC2::VPC, ID: <vpc_id>
    INFO[0140] Stack rosa-network-stack-5555 created \ 
    3
    Copy to Clipboard Toggle word wrap
    1 2
    使用 rosa create cluster 命令时,这两个子网 ID 用于创建集群。
    3
    网络堆栈名称用于稍后删除资源。
使用 Terraform 创建虚拟私有云

Terraform 是一个工具,可让您使用已建立的模板创建各种资源。以下流程根据需要使用默认选项在 AWS 集群上创建 Red Hat OpenShift Service。有关使用 Terraform 的更多信息,请参阅其他资源。

先决条件

  • 您已在机器上安装 Terraform 版本 1.4.0 或更新版本。
  • 您已在机器上安装了 Git。

流程

  1. 运行以下命令,打开 shell 提示符并克隆 Terraform VPC 存储库:

    $ git clone https://github.com/openshift-cs/terraform-vpc-example
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来进入创建的目录:

    $ cd terraform-vpc-example
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令来启动 Terraform 文件:

    $ terraform init
    Copy to Clipboard Toggle word wrap

    在此过程完成后会显示确认初始化的消息。

  4. 要根据现有的 Terraform 模板构建 VPC Terraform 计划,请运行 plan 命令。您必须包含 AWS 区域。您可以选择指定集群名称。在 terraform plan 完成后,一个 rosa.tfplan 文件会被添加到 hypershift-tf 目录。有关更详细的选项,请参阅 Terraform VPC 存储库的 README 文件

    $ terraform plan -out rosa.tfplan -var region=<region>
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令应用此计划文件来构建 VPC:

    $ terraform apply rosa.tfplan
    Copy to Clipboard Toggle word wrap
    1. 可选:您可以通过运行以下命令捕获在创建 Red Hat OpenShift Service on AWS 集群时要使用的 Terraform-provisioned private、public 和 machinepool 子网 ID 的值:

      $ export SUBNET_IDS=$(terraform output -raw cluster-subnets-string)
      Copy to Clipboard Toggle word wrap
    2. 使用以下命令验证变量是否已正确设置:

      $ echo $SUBNET_IDS
      Copy to Clipboard Toggle word wrap

      输出示例

      $ subnet-0a6a57e0f784171aa,subnet-078e84e5b10ecf5b0
      Copy to Clipboard Toggle word wrap

手动创建 AWS Virtual Private Cloud

如果您选择手动创建 AWS Virtual Private Cloud (VPC)而不是使用 Terraform,请访问 AWS 控制台中的 VPC 页面

您的 VPC 必须满足下表中显示的要求。

Expand
表 2.2. VPC 的要求
要求详情

VPC 名称

创建集群时,您需要具有特定的 VPC 名称和 ID。

CIDR 范围

您的 VPC CIDR 范围应该与您的机器 CIDR 匹配。

可用区

您需要一个区域的可用区,并且需要三个用于多区的可用区。

公共子网

您必须有一个公共子网,其中包含公共集群的 NAT 网关。私有集群不需要公共子网。

DNS 主机名和解析

您必须确保启用 DNS 主机名和解析。

2.2.2. 故障排除

如果集群无法安装,请排除这些常见问题:

  • 确保您的 DHCP 选项集 包含一个域名,并确保域名不包含任何空格或大写字母。
  • 如果您的 VPC 使用自定义 DNS 解析器(您的 DHCP 选项集 的域名 servers 字段不是 AmazonProvideDNS),请确保它能够正确解析在 Route53 中配置的专用托管区。

如需有关对 Red Hat OpenShift Service on AWS 集群安装 进行故障排除的更多信息,请参阅对 Red Hat OpenShift Service on AWS 集群安装 进行故障排除。

获得支持

如果您需要额外的 支持,请访问红帽客户门户网站查看知识库文章、提交支持问题单,以及查看其他产品文档和资源。

标记子网

在使用 VPC 创建 Red Hat OpenShift Service on AWS 集群前,您必须标记 VPC 子网。自动服务 preflight 检查会在将这些资源用于集群之前验证这些资源是否已正确标记。下表显示了如何标记您的资源:

Expand
资源value

公共子网

kubernetes.io/role/elb

1 ( 或无值)

专用子网

kubernetes.io/role/internal-elb

1 ( 或无值)

注意

您必须至少标记一个专用子网;如果适用,您必须只标记一个公共子网。

先决条件

  • 您已创建了 VPC。
  • 已安装 aws CLI。

流程

  1. 运行以下命令在终端中标记您的资源:

    1. 对于公共子网,请运行:

      $ aws ec2 create-tags --resources <public-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
      Copy to Clipboard Toggle word wrap
    2. 对于专用子网,请运行:

      $ aws ec2 create-tags --resources <private-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
      Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令验证标签是否已正确应用:

    $ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
    Copy to Clipboard Toggle word wrap

    输出示例

    TAGS    Name                    <subnet-id>        subnet  <prefix>-subnet-public1-us-east-1a
    TAGS    kubernetes.io/role/elb  <subnet-id>        subnet  1
    Copy to Clipboard Toggle word wrap

2.2.3. 创建集群范围的 STS 角色和策略

在 AWS 集群上创建 Red Hat OpenShift Service 前,您必须创建所需的帐户范围的角色和策略。

注意

Red Hat OpenShift Service on AWS 的特定 AWS 管理策略必须附加到每个角色。客户管理的策略不能与这些所需的帐户角色一起使用。有关 Red Hat OpenShift Service on AWS 集群的 AWS 管理策略的更多信息,请参阅 ROSA 的 AWS 受管策略

先决条件

  • 您已完成 Red Hat OpenShift Service on AWS 的 AWS 先决条件。
  • 您有可用的 AWS 服务配额。
  • 您已在 AWS 控制台中启用了 Red Hat OpenShift Service on AWS。
  • 您已在安装主机上安装和配置了最新的 ROSA CLI (rosa)。
  • 已使用 ROSA CLI 登录您的红帽帐户。

流程

  1. 如果您的 AWS 帐户不存在它们,请创建所需的账户范围 STS 角色,并通过运行以下命令来附加策略:

    $ rosa create account-roles --hosted-cp
    Copy to Clipboard Toggle word wrap
  2. 可选:运行以下命令,将您的前缀设置为环境变量:

    $ export ACCOUNT_ROLES_PREFIX=<account_role_prefix>
    Copy to Clipboard Toggle word wrap
    • 运行以下命令,查看变量的值:

      $ echo $ACCOUNT_ROLES_PREFIX
      Copy to Clipboard Toggle word wrap

      输出示例

      ManagedOpenShift
      Copy to Clipboard Toggle word wrap

如需有关 AWS 上 Red Hat OpenShift Service 的 AWS 管理的 IAM 策略的更多信息,请参阅 ROSA 的 AWS 管理的 IAM 策略

2.2.4. 创建 OpenID 连接配置

在 AWS 集群上创建 Red Hat OpenShift Service 时,您可以在创建集群前创建 OpenID Connect (OIDC)配置。此配置注册到 OpenShift Cluster Manager。

先决条件

  • 您已完成 Red Hat OpenShift Service on AWS 的 AWS 先决条件。
  • 您已在安装主机上安装和配置了最新的 ROSA CLI rosa

流程

  1. 要创建 OIDC 配置以及 AWS 资源,请运行以下命令:

    $ rosa create oidc-config --mode=auto --yes
    Copy to Clipboard Toggle word wrap

    此命令返回以下信息:

    输出示例

    ? Would you like to create a Managed (Red Hat hosted) OIDC Configuration Yes
    I: Setting up managed OIDC configuration
    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 13cdr6b
    If you are going to create a Hosted Control Plane cluster please include '--hosted-cp'
    I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName'
    ? Create the OIDC provider? Yes
    I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/13cdr6b'
    Copy to Clipboard Toggle word wrap

    在创建集群时,您必须提供 OIDC 配置 ID。CLI 输出为-- mode auto 提供了此值,否则您必须根据 aws CLI 输出用于- 模式手动 确定这些值。

  2. 可选: 您可以将 OIDC 配置 ID 保存为稍后使用的变量。运行以下命令来保存变量:

    $ export OIDC_ID=<oidc_config_id>
    1
    Copy to Clipboard Toggle word wrap
    1
    在上面的示例输出中,OIDC 配置 ID 是 13cdr6b。
    • 运行以下命令,查看变量的值:

      $ echo $OIDC_ID
      Copy to Clipboard Toggle word wrap

      输出示例

      13cdr6b
      Copy to Clipboard Toggle word wrap

验证

  • 您可以列出与您的用户机构关联的集群可用的 OIDC 配置。运行以下命令:

    $ rosa list oidc-config
    Copy to Clipboard Toggle word wrap

    输出示例

    ID                                MANAGED  ISSUER URL                                                             SECRET ARN
    2330dbs0n8m3chkkr25gkkcd8pnj3lk2  true     https://dvbwgdztaeq9o.cloudfront.net/2330dbs0n8m3chkkr25gkkcd8pnj3lk2
    233hvnrjoqu14jltk6lhbhf2tj11f8un  false    https://oidc-r7u1.s3.us-east-1.amazonaws.com                           aws:secretsmanager:us-east-1:242819244:secret:rosa-private-key-oidc-r7u1-tM3MDN
    Copy to Clipboard Toggle word wrap

2.2.5. 创建 Operator 角色和策略

在 AWS 集群上部署 Red Hat OpenShift Service 时,您必须创建 Operator IAM 角色。集群 Operator 使用 Operator 角色和策略获取执行集群操作所需的临时权限,如管理后端存储和对集群的外部访问权限。

先决条件

  • 您已完成 Red Hat OpenShift Service on AWS 的 AWS 先决条件。
  • 您已在安装主机上安装和配置了最新的 ROSA CLI (rosa)。
  • 您创建了集群范围的 AWS 角色。

流程

  1. 要创建 Operator 角色,请运行以下命令:

    $ rosa create operator-roles --hosted-cp --prefix=$OPERATOR_ROLES_PREFIX --oidc-config-id=$OIDC_ID --installer-role-arn arn:aws:iam::$AWS_ACCOUNT_ID:role/${ACCOUNT_ROLES_PREFIX}-HCP-ROSA-Installer-Role
    Copy to Clipboard Toggle word wrap

    以下分类提供了创建 Operator 角色的选项。

    $ rosa create operator-roles --hosted-cp
    	--prefix=$OPERATOR_ROLES_PREFIX 
    1
    
    	--oidc-config-id=$OIDC_ID 
    2
    
    	--installer-role-arn arn:aws:iam::$AWS_ACCOUNT_ID:role/$ACCOUNT_ROLES_PREFIX-HCP-ROSA-Installer-Role 
    3
    Copy to Clipboard Toggle word wrap
    1
    在创建这些 Operator 角色时,您必须提供一个前缀。如果不这样做,则会产生错误。如需有关 Operator 前缀的信息,请参阅本节的额外资源。
    2
    这个值是您为 Red Hat OpenShift Service on AWS 创建的 OIDC 配置 ID。
    3
    这个值是您在创建 Red Hat OpenShift Service on AWS 帐户角色时创建的安装程序角色 ARN。

    您必须包含 -hosted-cp 参数,以便为 Red Hat OpenShift Service on AWS 集群创建正确的角色。此命令返回以下信息:

    输出示例

    ? Role creation mode: auto
    ? Operator roles prefix: <pre-filled_prefix> 
    1
    
    ? OIDC Configuration ID: 23soa2bgvpek9kmes9s7os0a39i13qm4 | https://dvbwgdztaeq9o.cloudfront.net/23soa2bgvpek9kmes9s7os0a39i13qm4 
    2
    
    ? Create hosted control plane operator roles: Yes
    W: More than one Installer role found
    ? Installer role ARN: arn:aws:iam::4540112244:role/<prefix>-HCP-ROSA-Installer-Role
    ? Permissions boundary ARN (optional):
    I: Reusable OIDC Configuration detected. Validating trusted relationships to operator roles:
    I: Creating roles using 'arn:aws:iam::4540112244:user/<userName>'
    I: Created role '<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials'
    I: Created role '<prefix>-openshift-cloud-network-config-controller-cloud-credenti' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti'
    I: Created role '<prefix>-kube-system-kube-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager'
    I: Created role '<prefix>-kube-system-capa-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager'
    I: Created role '<prefix>-kube-system-control-plane-operator' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator'
    I: Created role '<prefix>-kube-system-kms-provider' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider'
    I: Created role '<prefix>-openshift-image-registry-installer-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials'
    I: Created role '<prefix>-openshift-ingress-operator-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials'
    I: To create a cluster with these roles, run the following command:
    	rosa create cluster --sts --oidc-config-id 23soa2bgvpek9kmes9s7os0a39i13qm4 --operator-roles-prefix <prefix> --hosted-cp
    Copy to Clipboard Toggle word wrap

    1
    此字段会预先填充您在初始创建命令中设置的前缀。
    2
    此字段要求您选择为 Red Hat OpenShift Service on AWS 集群创建的 OIDC 配置。

    现在,Operator 角色已创建并可用于创建 Red Hat OpenShift Service on AWS 集群。

验证

  • 您可以列出与 Red Hat OpenShift Service on AWS 帐户关联的 Operator 角色。运行以下命令:

    $ rosa list operator-roles
    Copy to Clipboard Toggle word wrap

    输出示例

    I: Fetching operator roles
    ROLE PREFIX  AMOUNT IN BUNDLE
    <prefix>      8
    ? Would you like to detail a specific prefix Yes 
    1
    
    ? Operator Role Prefix: <prefix>
    ROLE NAME                                                         ROLE ARN                                                                                         VERSION  MANAGED
    <prefix>-kube-system-capa-controller-manager                       arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager                       4.13     No
    <prefix>-kube-system-control-plane-operator                        arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator                        4.13     No
    <prefix>-kube-system-kms-provider                                  arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider                                  4.13     No
    <prefix>-kube-system-kube-controller-manager                       arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager                       4.13     No
    <prefix>-openshift-cloud-network-config-controller-cloud-credenti  arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti  4.13     No
    <prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials       arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials       4.13     No
    <prefix>-openshift-image-registry-installer-cloud-credentials      arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials      4.13     No
    <prefix>-openshift-ingress-operator-cloud-credentials              arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials              4.13     No
    Copy to Clipboard Toggle word wrap

    1
    命令运行后,它会显示与 AWS 帐户关联的所有前缀,并记录与这个前缀关联的角色数量。如果您需要查看所有这些角色及其详情,请在详情提示符处输入"是",使这些角色以特定形式列出。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat