×

如果您正在寻找 ROSA Classic 的快速入门指南,请参阅 AWS 上的 Red Hat OpenShift 服务快速入门指南

具有托管控制平面 (HCP) 的 AWS 上的 Red Hat OpenShift 服务 (ROSA) 为创建 AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群提供了更高效、更可靠的架构。使用带有 HCP 的 ROSA,每个集群都有一个专用控制平面,该平面隔离在一个 ROSA 服务帐户中。

使用默认选项和自动 AWS 身份和访问管理 (IAM) 资源创建,快速创建一个带有 HCP 的 ROSA 集群。您可以使用 ROSA CLI (rosa) 部署集群。

由于无法将现有 ROSA 集群升级或转换为托管控制平面架构,因此您必须创建一个新集群才能使用带有 HCP 的 ROSA 功能。

目前不支持 跨多个 AWS 帐户共享 VPC 用于带有 HCP 的 ROSA。请勿将带有 HCP 的 ROSA 集群安装到从另一个 AWS 帐户共享的子网中。有关更多信息,请参阅 "单个 VPC 中是否支持多个 ROSA 集群?"

带有 HCP 的 ROSA 集群仅支持 AWS 安全令牌服务 (STS) 身份验证。

进一步阅读
其他资源

有关支持的证书的完整列表,请参阅“了解 AWS 上 Red Hat OpenShift 服务的流程和安全性”的 合规性 部分。

关于自动创建模式的注意事项

本文档中的过程使用 ROSA CLI 中的auto模式立即使用当前 AWS 帐户创建所需的 IAM 资源。所需的资源包括帐户范围的 IAM 角色和策略、集群特定的 Operator 角色和策略以及 OpenID Connect (OIDC) 身份提供程序。

或者,您可以使用manual模式,该模式输出创建 IAM 资源所需的aws命令,而不是自动部署它们。

后续步骤

默认集群规范概述

您可以使用默认安装选项快速创建使用安全令牌服务 (STS) 的 AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群。以下摘要描述了默认集群规范。

表 1. 带有 STS 集群的默认 ROSA 规范
组件 默认规范

帐户和角色

  • 默认 IAM 角色前缀:ManagedOpenShift

  • 未创建集群管理员角色

集群设置

  • 默认集群版本:最新版本

  • 使用 Red Hat OpenShift 集群管理器混合云控制台进行安装的默认 AWS 区域:us-east-1(美国东部,弗吉尼亚北部)

  • 可用性:数据平面的单区域

  • 启用了 EC2 实例元数据服务 (IMDS),并允许使用 IMDSv1 或 IMDSv2(令牌可选)

  • 用户定义项目的监控:已启用

加密

  • 云存储在静态时加密

  • 未启用附加 etcd 加密

  • 默认 AWS 密钥管理服务 (KMS) 密钥用作持久数据的加密密钥

控制平面节点配置

  • 控制平面节点实例类型:m5.2xlarge(8 个 vCPU,32 GiB RAM)

  • 控制平面节点数量:3

基础架构节点配置

  • 基础架构节点实例类型:r5.xlarge(4 个 vCPU,32 GiB RAM)

  • 基础架构节点数量:2

计算节点机器池

  • 计算节点实例类型:m5.xlarge(4 个 vCPU,16 GiB RAM)

  • 计算节点数量:2

  • 自动缩放:未启用

  • 无其他节点标签

网络配置

  • 集群隐私:公共

  • 您必须已配置您自己的虚拟私有云 (VPC)

  • 未配置集群范围的代理

无类别域间路由 (CIDR) 范围

  • 机器 CIDR:10.0.0.0/16

  • 服务 CIDR:172.30.0.0/16

  • Pod CIDR:10.128.0.0/16

  • 主机前缀:/23

集群角色和策略

  • 用于创建 Operator 角色和 OpenID Connect (OIDC) 提供程序的模式:auto

    对于使用混合云控制台上的 OpenShift 集群管理器的安装,auto模式需要一个具有管理员权限的 OpenShift 集群管理器角色。

  • 默认 Operator 角色前缀:<cluster_name>-<4_digit_random_string>

集群更新策略

  • 个别更新

  • 1 小时的节点排空宽限期

带有 HCP 的 ROSA 先决条件

要创建带有 HCP 的 ROSA 集群,您必须具备以下项目:

  • 已配置的虚拟私有云 (VPC)

  • 帐户范围的角色

  • OIDC 配置

  • Operator 角色

为您的带有 HCP 的 ROSA 集群创建虚拟私有云

您必须拥有虚拟私有云 (VPC) 才能创建带有 HCP 的 ROSA 集群。您可以使用以下方法创建 VPC:

  • 使用 Terraform 模板创建 VPC

  • 在 AWS 控制台中手动创建 VPC 资源

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

使用 Terraform 创建虚拟私有云

Terraform 是一种允许您使用已建立的模板创建各种资源的工具。以下过程使用创建带有 HCP 的 ROSA 集群所需的默认选项。有关使用 Terraform 的更多信息,请参阅其他资源。

先决条件
  • 您已在您的机器上安装了 Terraform 1.4.0 或更高版本。

  • 您已在您的机器上安装了 Git。

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

    $ git clone https://github.com/openshift-cs/terraform-vpc-example
  2. 通过运行以下命令导航到已创建的目录:

    $ cd terraform-vpc-example
  3. 通过运行以下命令启动 Terraform 文件:

    $ terraform init

    此过程完成后,将显示一条确认初始化的消息。

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

    $ terraform plan -out rosa.tfplan -var region=<region>
  5. 运行以下命令应用此计划文件以构建您的 VPC

    $ terraform apply rosa.tfplan
    1. 可选:您可以将 Terraform 配置的私有、公共和机器池子网 ID 的值捕获为环境变量,在使用 HCP 集群创建 ROSA 时使用,方法是运行以下命令

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

      $ echo $SUBNET_IDS
      示例输出
      $ subnet-0a6a57e0f784171aa,subnet-078e84e5b10ecf5b0
其他资源
  • 请参阅Terraform VPC仓库,了解在根据您的需求自定义 VPC 时可用的所有选项的详细列表。

手动创建虚拟私有云

如果您选择手动创建虚拟私有云 (VPC) 而不是使用 Terraform,请转到AWS 控制台中的 VPC 页面。您的 VPC 必须满足下表中显示的要求。

表 2. VPC 要求
要求 详情

VPC 名称

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

CIDR 范围

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

可用区

单区域需要一个可用区,多区域需要三个可用区。

公共子网

对于公共集群,您必须拥有一个具有互联网网关的公共子网。

私有子网

您必须在每个可用区 (AZ) 中都拥有一个私有子网,用于在 ROSA HCP 集群中安装机器池。可以将 NAT 网关与该子网关联,以便为实例允许出站互联网访问。私有集群不需要公共子网。

DNS 主机名和解析

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

标记您的子网

在您可以使用您的 VPC 创建 ROSA 与 HCP 集群之前,您必须标记您的 VPC 子网。自动服务预检检查会在您使用这些资源之前验证这些资源是否已正确标记。下表显示了您的资源应如何标记:

资源

公共子网

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
    2. 对于私有子网,运行

      $ aws ec2 create-tags --resources <private-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
验证
  • 通过运行以下命令验证标签是否已正确应用

    $ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
    示例输出
    TAGS    Name                    <subnet-id>        subnet  <prefix>-subnet-public1-us-east-1a
    TAGS    kubernetes.io/role/elb  <subnet-id>        subnet  1

创建帐户范围的 STS 角色和策略

在使用 Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) 创建具有托管控制平面 (HCP) 集群的 Red Hat OpenShift Service on AWS (ROSA) 之前,请创建所需的帐户范围角色和策略,包括 Operator 策略。

ROSA 与 HCP 集群需要附加了 AWS 托管策略的帐户和 Operator 角色。不支持客户管理的策略。有关 ROSA 与 HCP 集群的 AWS 托管策略的更多信息,请参阅ROSA 帐户角色的 AWS 托管策略

先决条件
  • 您已完成 ROSA 与 HCP 的 AWS 先决条件。

  • 您有可用的 AWS 服务配额。

  • 您已在 AWS 控制台中启用 ROSA 服务。

  • 您已在安装主机上安装并配置了最新的 ROSA CLI (rosa)。

  • 您已使用 ROSA CLI 登录到您的 Red Hat 帐户。

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

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

    $ export ACCOUNT_ROLES_PREFIX=<account_role_prefix>
    • 运行以下命令查看变量的值

      $ echo $ACCOUNT_ROLES_PREFIX
      示例输出
      ManagedOpenShift

有关 ROSA 的 AWS 托管 IAM 策略的更多信息,请参阅ROSA 的 AWS 托管 IAM 策略

创建 OpenID Connect 配置

使用 ROSA 与 HCP 集群时,必须在创建集群之前创建 OpenID Connect (OIDC) 配置。此配置已注册以与 OpenShift Cluster Manager 一起使用。

先决条件
  • 您已完成 ROSA 与 HCP 的 AWS 先决条件。

  • 您已完成 Red Hat OpenShift Service on AWS 的 AWS 先决条件。

  • 您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI,rosa

步骤
  1. 要与 AWS 资源一起创建您的 OIDC 配置,请运行以下命令

    $ rosa create oidc-config --mode=auto --yes

    此命令返回以下信息。

    示例输出
    ? 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'

    创建集群时,您必须提供 OIDC 配置 ID。CLI 输出为--mode auto提供此值,否则您必须根据--mode manualaws CLI 输出确定这些值。

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

    $ export OIDC_ID=<oidc_config_id>(1)
    1 在上例输出中,OIDC 配置 ID 为 13cdr6b。
    • 运行以下命令查看变量的值

      $ echo $OIDC_ID
      示例输出
      13cdr6b
验证
  • 您可以列出与您的用户组织关联的集群可用的 OIDC 配置。运行以下命令

    $ rosa list oidc-config
    示例输出
    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
    

创建 Operator 角色和策略

使用具有托管控制平面 (HCP) 部署的 Red Hat OpenShift Service on AWS (ROSA) 时,必须创建 Red Hat OpenShift Service on AWS (ROSA) 所需的 Operator IAM 角色。集群 Operator 使用 Operator 角色来获取执行集群操作(例如管理后端存储、云提供商凭据和对集群的外部访问)所需的临时权限。

先决条件
  • 您已完成 ROSA 与 HCP 的 AWS 先决条件。

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

  • 您已创建帐户范围的 AWS 角色。

步骤
  1. 使用以下命令将您的前缀名称设置为环境变量

    $ export OPERATOR_ROLES_PREFIX=<prefix_name>
  2. 要创建您的 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

    以下细分提供了 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)
    1 创建这些 Operator 角色时,您必须提供前缀。否则会产生错误。有关 Operator 前缀的信息,请参阅本节的其他资源。
    2 此值为为您与 HCP 集群的 ROSA 创建的 OIDC 配置 ID。
    3 此值为创建 ROSA 帐户角色时创建的安装程序角色 ARN。

    您必须包含--hosted-cp参数才能为与 HCP 集群的 ROSA 创建正确的角色。此命令将返回以下信息。

    示例输出
    ? 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
    1 此字段已预先填充了您在初始创建命令中设置的前缀。
    2 此字段要求您选择为您的 ROSA 与 HCP 集群创建的 OIDC 配置。

    操作员角色现已创建并可用于创建您的 ROSA 与 HCP 集群。

验证
  • 您可以列出与您的 ROSA 帐户关联的操作员角色。运行以下命令

    $ rosa list operator-roles
    示例输出
    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
    1 命令运行后,它将显示与您的 AWS 帐户关联的所有前缀,并说明有多少个角色与该前缀关联。如果您需要查看所有这些角色及其详细信息,请在详细信息提示符中输入“Yes”以列出这些角色的详细信息。
其他资源

使用 CLI 创建 ROSA 与 HCP 集群

使用 Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) 创建集群时,您可以选择默认选项以快速创建集群。

先决条件
  • 您已完成 ROSA 与 HCP 的 AWS 先决条件。

  • 您有可用的 AWS 服务配额。

  • 您已在 AWS 控制台中启用 ROSA 服务。

  • 您已在安装主机上安装并配置了最新的 ROSA CLI (rosa)。运行rosa version以查看您当前安装的 ROSA CLI 版本。如果可用更新版本,CLI 将提供下载此更新的链接。

  • 您已使用 ROSA CLI 登录到您的 Red Hat 帐户。

  • 您已创建 OIDC 配置。

  • 您已验证 AWS Elastic Load Balancing (ELB) 服务角色存在于您的 AWS 帐户中。

步骤
  1. 使用以下命令之一创建您的 ROSA 与 HCP 集群

    创建 ROSA 与 HCP 集群时,默认机器无类别域间路由 (CIDR) 为10.0.0.0/16。如果这与您的 VPC 子网的 CIDR 范围不符,请将--machine-cidr <address_block>添加到以下命令中。要了解有关 Red Hat OpenShift Service on AWS 的默认 CIDR 范围的更多信息,请参阅 CIDR 范围定义。

    • 如果您未设置环境变量,请运行以下命令

      $ rosa create cluster --cluster-name=<cluster_name> \ (1)
          --mode=auto --hosted-cp [--private] \ (2)
          --operator-roles-prefix <operator-role-prefix> \ (3)
          --oidc-config-id <id-of-oidc-configuration> \
          --subnet-ids=<public-subnet-id>,<private-subnet-id>
      1 指定集群的名称。如果您的集群名称超过 15 个字符,它将包含一个自动生成的域名前缀作为您在 openshiftapps.com 上配置的集群的子域名。要自定义子域名,请使用--domain-prefix标志。域名前缀不能超过 15 个字符,必须唯一,并且在集群创建后不能更改。
      2 可选:--private参数用于创建私有 ROSA 与 HCP 集群。如果您使用此参数,请确保仅对--subnet-ids使用您的私有子网 ID。
      3 默认情况下,特定于集群的操作员角色名称以集群名称和一个随机的 4 位哈希值作为前缀。您可以选择指定自定义前缀来替换角色名称中的<cluster_name>-<hash>。在创建特定于集群的操作员 IAM 角色时应用此前缀。有关前缀的信息,请参阅关于自定义操作员 IAM 角色前缀

      如果您在创建关联的帐户范围角色时指定了自定义 ARN 路径,则会自动检测自定义路径。在以后的步骤中创建特定于集群的操作员角色时,将应用自定义路径。

    • 如果您设置了环境变量,请使用公开或私有可用的 API 和公开或私有可用的 Ingress 创建具有单个初始机器池的集群,并运行以下命令

      $ rosa create cluster --private --cluster-name=<cluster_name> \
          --mode=auto --hosted-cp --operator-roles-prefix=$OPERATOR_ROLES_PREFIX \
          --oidc-config-id=$OIDC_ID --subnet-ids=$SUBNET_IDS
    • 如果您设置了环境变量,请使用公开可用的 API 和公开可用的 Ingress 创建具有单个初始机器池的集群,并运行以下命令

      $ rosa create cluster --cluster-name=<cluster_name> --mode=auto \
          --hosted-cp --operator-roles-prefix=$OPERATOR_ROLES_PREFIX \
          --oidc-config-id=$OIDC_ID --subnet-ids=$SUBNET_IDS
  2. 运行以下命令检查集群的状态

    $ rosa describe cluster --cluster=<cluster_name>

    集群安装进度中,输出中列出了以下State字段的更改

    • pending (准备帐户)

    • installing (DNS 设置正在进行中)

    • installing

    • ready

      如果安装失败或State字段在 10 分钟后未更改为ready,请检查安装故障排除文档以获取详细信息。有关更多信息,请参阅安装故障排除。有关联系 Red Hat 支持以获取帮助的步骤,请参阅获取 Red Hat OpenShift Service on AWS 的支持

  3. 通过监视 Red Hat OpenShift Service on AWS 安装程序日志来跟踪集群创建的进度。要检查日志,请运行以下命令

    $ rosa logs install --cluster=<cluster_name> --watch \ (1)
    1 可选:要随着安装进度监视新的日志消息,请使用--watch参数。

其他资源