准备您的环境


Red Hat OpenShift Service on AWS 4

为 Red Hat OpenShift Service on AWS 规划、限制和可扩展性

Red Hat OpenShift Documentation Team

摘要

本文档为 Red Hat OpenShift Service on AWS (ROSA)集群部署提供了规划注意事项,包括集群限制和可扩展性的信息。

这是在 AWS 集群上创建 Red Hat OpenShift Service 所需的高级别先决条件清单。

运行安装过程的机器必须有权访问以下内容:

  • Amazon Web Services API 和身份验证服务端点
  • Red Hat OpenShift API 和身份验证服务端点(api.openshift.comsso.redhat.com)
  • 互联网连接,以在部署期间获取安装工件

1.1. 帐户和权限

确保您有以下帐户、凭证和权限。

1.1.1. AWS 帐户

1.1.2. 红帽帐户

  • 如果您还没有红帽混合云控制台,请为 红帽混合云控制台 创建一个红帽帐户。
  • 收集登录到您的红帽帐户所需的凭证。

1.2. CLI 要求

您需要下载并安装几个 CLI (命令行界面)工具才能部署集群。

1.2.1. AWS CLI (aws)

  1. 安装 AWS 命令行界面
  2. 使用 AWS CLI 登录 AWS 帐户: 通过 AWS CLI 登录
  3. 验证您的帐户身份:

     $ aws sts get-caller-identity
    Copy to Clipboard Toggle word wrap
  4. 检查 ELB (Elastic Load Balancing)的服务角色是否存在:

    $ aws iam get-role --role-name "AWSServiceRoleForElasticLoadBalancing"
    Copy to Clipboard Toggle word wrap

    如果角色不存在,请运行以下命令来创建它:

    $ aws iam create-service-linked-role --aws-service-name "elasticloadbalancing.amazonaws.com"
    Copy to Clipboard Toggle word wrap

1.2.2. ROSA CLI (rosa)

  1. 通过 Web 控制台安装 ROSA CLI。
  2. 运行 rosa 登录并遵循命令输出中的 说明登录到您的红帽帐户:

    $ rosa login
    To login to your Red{nbsp}Hat account, get an offline access token at https://console.redhat.com/openshift/token/rosa
    ? Copy the token and paste it here:
    Copy to Clipboard Toggle word wrap

    或者,您可以复制完整的 $ rosa login --token=abc…​ 命令,并粘贴到终端中:

    $ rosa login --token=<abc..>
    Copy to Clipboard Toggle word wrap
  3. 确认您已经使用正确的帐户和凭证登录:

    $ rosa whoami
    Copy to Clipboard Toggle word wrap

1.2.3. OpenShift CLI (oc)

OpenShift CLI (oc)不需要在 AWS 集群上部署 Red Hat OpenShift Service,而是在部署后与集群交互的有用工具。

  1. 从 OpenShift Cluster Manager 命令行界面(CLI)工具 页面下载并安装 oc,或按照 OpenShift CLI 入门 中的内容进行操作。
  2. 运行以下命令验证 OpenShift CLI 是否已正确安装:

    $ rosa verify openshift-client
    Copy to Clipboard Toggle word wrap

1.3. AWS 基础架构先决条件

  • 另外,请确保您的 AWS 帐户有足够的配额来部署集群。

    $ rosa verify quota
    Copy to Clipboard Toggle word wrap

    这个命令只检查分配给您的帐户的总配额 ; 它没有反映该配额中已使用的配额量。运行此命令是可选的,因为您的配额在集群部署期间被验证。但是,红帽建议提前运行这个命令确认您的配额,以便部署不会中断配额可用性的问题。

  • 如需有关在 AWS 集群部署期间置备的资源的更多信息,请参阅置备 AWS 基础架构
  • 有关所需 AWS 服务配额的更多信息,请参阅 所需的 AWS 服务配额

1.4. 服务控制策略(SCP)先决条件

Red Hat OpenShift Service on AWS 集群在 AWS 机构单元中的 AWS 帐户中托管。创建 服务控制策略(SCP) 并应用到 AWS 机构单元,该单元管理 AWS 子帐户可访问的服务。

  • 确保机构的 SCP 不比集群所需的角色和策略更严格。如需更多信息,请参阅 SCP 的最小有效权限集
  • 当您创建 Red Hat OpenShift Service on AWS 集群时,会创建一个关联的 AWS OpenID Connect (OIDC)身份提供程序。

1.5. 网络先决条件

从网络角度来说,需要先决条件。

1.5.1. 最小带宽

在集群部署期间,Red Hat OpenShift Service on AWS 需要集群基础架构和公共互联网或专用网络位置之间的 120 Mbps 带宽,以提供部署工件和资源。当网络连接比 120 Mbps 慢时(例如,当通过代理进行连接时)集群安装过程会超时,部署会失败。

集群部署后,网络要求由您的工作负载决定。但是,最小带宽 120 Mbps 有助于确保及时地升级集群和操作程序。

1.5.2. 防火墙

1.5.3. 在集群部署前创建 VPC

Red Hat OpenShift Service on AWS 集群必须部署到现有的 AWS Virtual Private Cloud (VPC)中。

注意

不支持将新的 Red Hat OpenShift Service on AWS 集群安装到 VPC 中,它由安装程序为不同的集群自动创建。

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

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

VPC 名称

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

CIDR 范围

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

可用区

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

公共子网

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

DNS 主机名和解析

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

1.5.4. 其他自定义安全组

在集群创建过程中,您可以向具有现有非管理的 VPC 的集群添加额外的自定义安全组。要做到这一点,请在创建集群时完成这些先决条件:

  • 在创建集群时,在 AWS 中创建自定义安全组。
  • 将自定义安全组与您用于创建集群的 VPC 关联。不要将自定义安全组与任何其他 VPC 关联。
  • 您可能需要为每个网络接口为 安全组 请求额外的 AWS 配额。

如需了解更多详细信息,请参阅 安全组 的详细要求。

1.5.5. 自定义 DNS 和域

您可以为集群配置自定义域名服务器和自定义域名。要做到这一点,请在创建集群前完成以下先决条件:

  • 默认情况下,Red Hat OpenShift Service on AWS 集群需要将 域名服务器 选项设置为 AmazonProvidedDNS,以确保集群创建和操作成功。
  • 要为集群使用自定义 DNS 服务器和域名,Red Hat OpenShift Service on AWS 安装程序必须能够使用带有默认 DHCP 选项的 VPC DNS,以便它能够解析内部 IP 和服务。这意味着,您必须创建一个自定义 DHCP 选项,将 DNS 查找转发到 DNS 服务器,并在创建集群时将此选项与 VPC 关联。
  • 运行以下命令,确认您的 VPC Resolver 正在使用 VPC Resolver:

    $ aws ec2 describe-dhcp-options
    Copy to Clipboard Toggle word wrap

Red Hat OpenShift Service on AWS 提供了一个模型,它允许红帽将集群部署到客户的现有 Amazon Web Service (AWS)帐户中。

在安装集群前,请确保满足以下先决条件。

在部署 Red Hat OpenShift Service on AWS 集群前,您必须完成以下先决条件。

2.2. AWS 帐户

  • 您的 AWS 帐户必须允许有足够的配额来部署集群。
  • 如果您的组织应用并强制实施 SCP 策略,则这些策略必须比集群所需的角色和策略更严格。
  • 您可以在同一 AWS 帐户内部署原生 AWS 服务。
  • 您的帐户必须具有服务链接的角色,以便安装程序能够配置 Elastic Load Balancing (ELB)。如需更多信息,请参阅"创建 Elastic Load Balancing (ELB)服务链接的角色"。

2.2.1. 支持要求

  • 红帽建议客户至少具有 AWS 的商业支持
  • 红帽可能有权代表客户请求 AWS 支持。
  • 红帽可能客户有权请求 AWS 资源限制来增加客户的帐户。
  • 除非在此要求部分中另有指定,否则红帽会以相同的方式管理所有 Red Hat OpenShift Service on AWS 集群的限制、限制、预期和默认值。

2.2.2. 安全要求

  • 红帽必须具有来自允许 IP 地址的对 EC2 主机和 API 服务器的入口访问权限。
  • 红帽必须具有在"防火墙先决条件"部分中记录的域的出口。具有出口零的集群会受到这个要求的影响。

2.3. 使用 OpenShift Cluster Manager 的要求

只有在使用 OpenShift Cluster Manager 管理集群时才需要以下配置详情。如果您只使用 CLI 工具,则可以忽略这些要求。

2.3.1. AWS 帐户关联

当使用 OpenShift Cluster Manager (console.redhat.com)置备 Red Hat OpenShift Service on AWS 时,您必须使用 Amazon Resource Name (ARN)将 ocm-roleuser-role IAM 角色与 AWS 帐户关联。此关联过程也称为 帐户链接

ocm-role ARN 作为标签存储在红帽机构中,而 user-role ARN 则作为红帽用户帐户中的标签存储。红帽使用这些 ARN 标签来确认用户是有效的帐户拥有者,并可使用正确的权限来执行 AWS 帐户中的置备任务。

2.3.2. 将您的 AWS 帐户与 IAM 角色关联

您可以使用 ROSA CLI rosa 将 AWS 帐户与现有 IAM 角色关联或连接。

先决条件

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

    $ rosa list ocm-role
    Copy to Clipboard Toggle word wrap
    $ rosa list user-role
    Copy to Clipboard Toggle word wrap

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

流程

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

    注意

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

    $ rosa link ocm-role --role-arn <arn>
    Copy to Clipboard Toggle word wrap

    输出示例

    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>'
    Copy to Clipboard Toggle word wrap

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

    $ rosa link user-role --role-arn <arn>
    Copy to Clipboard Toggle word wrap

    输出示例

    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>'
    Copy to Clipboard Toggle word wrap

其他资源

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

您可以将多个 AWS 帐户与红帽机构相关联。通过关联多个帐户,您可以从红帽机构在任何关联的 AWS 帐户上创建 Red Hat OpenShift Service on AWS 集群。

使用此功能,您可以根据对业务有意义的特征在不同的 AWS 配置集上创建集群,例如,为每个区域使用一个 AWS 配置集来创建区域密集型环境。

先决条件

  • 您有一个 AWS 帐户。
  • 您可以使用 OpenShift Cluster Manager 创建集群。
  • 您有安装 AWS 范围的角色所需的权限。
  • 您已在安装主机上安装和配置了最新的 AWS (aws) 和 ROSA (rosa) CLI。
  • 您已为 Red Hat OpenShift Service on AWS 创建了 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
    Copy to Clipboard Toggle word wrap
  • 在创建用户角色时指定 AWS 帐户配置集:

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

    $ rosa create --profile <aws_profile> account-roles
    Copy to Clipboard Toggle word wrap
注意

如果没有指定配置集,则使用默认 AWS 配置集及其关联的 AWS 区域。

2.4. 在 opt-in 区域部署集群的要求

AWS opt-in 区域是一个默认没有在 AWS 帐户中启用的区域。如果要在 opt-in 区域中部署使用 AWS 安全令牌服务(STS)的 Red Hat OpenShift Service on AWS 集群,您必须满足以下要求:

  • 区域必须在 AWS 帐户中启用。有关启用选择区域的更多信息,请参阅 AWS 文档中的管理 AWS 区域
  • AWS 帐户中的安全令牌版本必须设置为版本 2。对于选择的(opt-in)区域,您将不能使用版本 1 安全令牌。

    重要

    由于令牌长度增加,到安全令牌版本 2 可能会影响存储令牌的系统。如需更多信息,请参阅有关设置 STS 首选项的 AWS 文档

2.4.1. 设置 AWS 安全令牌版本

如果要在 AWS opt-in 区域中使用 AWS 安全令牌服务(STS)创建 Red Hat OpenShift Service on AWS 集群,您必须在 AWS 帐户中将安全令牌版本设置为版本 2。

先决条件

  • 您已在安装主机上安装并配置了最新的 AWS CLI。

流程

  1. 列出 AWS CLI 配置中定义的 AWS 帐户 ID:

    $ aws sts get-caller-identity --query Account --output json
    Copy to Clipboard Toggle word wrap

    确保输出与相关 AWS 帐户的 ID 匹配。

  2. 列出 AWS 帐户中设置的安全令牌版本:

    $ aws iam get-account-summary --query SummaryMap.GlobalEndpointTokenVersion --output json
    Copy to Clipboard Toggle word wrap

    输出示例

    1
    Copy to Clipboard Toggle word wrap

  3. 要将 AWS 帐户中的所有区域的安全令牌版本更新为版本 2,请运行以下命令:

    $ aws iam set-security-token-service-preferences --global-endpoint-token-version v2Token
    Copy to Clipboard Toggle word wrap
    重要

    由于令牌长度增加,到安全令牌版本 2 可能会影响存储令牌的系统。如需更多信息,请参阅有关设置 STS 首选项的 AWS 文档

2.5. Red Hat managed IAM for AWS 的引用

红帽不负责创建和管理 Amazon Web Services (AWS) IAM 策略、IAM 用户或 IAM 角色。有关创建这些角色和策略的详情,请参考 IAM 角色的以下部分。

2.6. 置备的 AWS 基础架构

这是在部署的 Red Hat OpenShift Service on AWS 集群中置备的 Amazon Web Services (AWS)组件的概述。

2.6.1. EC2 实例

在 AWS 上部署 Red Hat OpenShift Service 需要 AWS EC2 实例。

至少部署了两个 m5.xlarge EC2 实例,用作 worker 节点。

worker 节点显示的实例类型是默认值,但您可以根据工作负载需求自定义 worker 节点的实例类型。

2.6.2. Amazon Elastic Block Store 存储

Amazon Elastic Block Store (Amazon EBS)块存储用于本地节点存储和持久性卷存储。默认情况下,为每个 EC2 实例置备以下存储:

  • 节点卷

    • 类型: AWS EBS GP3
    • 默认大小:300 GiB (可在创建时调整)
    • 最小大小:75 GiB
  • 工作负载持久性卷

    • 默认存储类: gp3-csi
    • provisioner: ebs.csi.aws.com
    • 动态持久性卷置备

2.6.3. Elastic Load Balancing

默认情况下,会创建一个 Network Load Balancer,供默认入口控制器使用。您可以根据工作负载需求创建以下类型的额外负载均衡器:

  • Classic Load Balancer
  • Network Load Balancer
  • Application Load Balancer

如需更多信息,请参阅 AWS 的 ELB 文档

2.6.4. S3 存储

镜像 registry 由 AWS S3 存储支持。定期修剪资源以优化 S3 使用量和集群性能。

注意

每个典型的大小为 2TB 时,需要两个存储桶。

2.6.5. VPC

根据以下要求配置 VPC:

  • 子网 :每个集群都需要每个可用区最少有一个私有子网。例如,单区集群需要 1 个专用子网,并且具有 3 个可用区的集群需要 3 个专用子网。

    如果您的集群需要直接访问集群外部的网络,包括公共互联网,则需要至少一个公共子网。

    红帽强烈建议为每个集群使用不同的子网。不建议在多个集群间共享子网。

    注意

    公共子网通过互联网网关直接连接到互联网。

    专用子网通过网络地址转换 (NAT) 网关连接到互联网。

  • 路由器表 :每个专用子网一个路由器表,每个集群一个额外表。
  • Internet 网关 :每个集群一个互联网网关。
  • NAT 网关 :每个公共子网一个 NAT 网关。

2.6.6. 安全组

AWS 安全组在协议和端口访问级别提供安全性;它们与 EC2 实例和 Elastic Load Balancing (ELB)负载均衡器相关联。每个安全组包含一组规则,它们过滤进出一个或多个 EC2 实例的流量。

确保在网络上打开集群安装和操作所需的端口,并配置为允许主机间的访问。默认安全组的要求列在默认安全组 的必要端口中。

Expand
表 2.1. 默认安全组所需的端口
类型IP 协议端口范围

WorkerSecurityGroup

AWS::EC2::SecurityGroup

icmp

0

tcp

22

2.6.6.1. 其他自定义安全组

您可以在集群创建过程中添加额外的自定义安全组。自定义安全组受以下限制:

  • 在创建集群时,您必须在 AWS 中创建自定义安全组。如需更多信息,请参阅适用于 Linux 实例的 Amazon EC2 安全组
  • 您必须将自定义安全组与集群要安装的 VPC 关联。您的自定义安全组不能与另一个 VPC 关联。
  • 如果要添加额外的自定义安全组,您可能需要为 VPC 请求额外的配额。有关 Red Hat OpenShift Service on AWS 的 AWS 配额要求的详情,请参考 准备环境 中的 AWS 服务配额。有关请求 AWS 配额增加的详情,请参阅请求配额增加

2.7. 网络先决条件

2.7.1. 最小带宽

在集群部署期间,Red Hat OpenShift Service on AWS 需要集群基础架构和公共互联网或专用网络位置之间的 120 Mbps 带宽,以提供部署工件和资源。当网络连接比 120 Mbps 慢时(例如,当通过代理进行连接时)集群安装过程会超时,部署会失败。

集群部署后,网络要求由您的工作负载决定。但是,最小带宽 120 Mbps 有助于确保及时地升级集群和操作程序。

  • 如果您使用防火墙来控制 AWS 上的 Red Hat OpenShift Service 的出口流量,您的 Virtual Private Cloud (VPC)必须能够从集群完成请求到 Amazon S3 服务,例如通过 Amazon S3 网关。
  • 您还必须配置防火墙以授予以下域和端口组合的访问权限。
2.7.3.1. 安装软件包和工具的域
Expand
端口功能

quay.io

443

提供核心容器镜像。

cdn01.quay.io

443

提供核心容器镜像。

cdn02.quay.io

443

提供核心容器镜像。

cdn03.quay.io

443

提供核心容器镜像。

cdn04.quay.io

443

提供核心容器镜像。

cdn05.quay.io

443

提供核心容器镜像。

cdn06.quay.io

443

提供核心容器镜像。

quayio-production-s3.s3.amazonaws.com

443

提供核心容器镜像。

registry.redhat.io

443

提供核心容器镜像。

registry.access.redhat.com

443

必需。托管存储在 Red Hat Ecosytem Catalog 中的所有容器镜像。另外,registry 提供了对 odo CLI 工具的访问,可帮助开发人员在 OpenShift 和 Kubernetes 上进行构建。

access.redhat.com

443

必需。在从 registry.access.redhat.com 中拉取镜像时,托管容器客户端需要验证镜像所需的签名存储。

api.openshift.com

443

必需。用于检查集群的可用更新。

mirror.openshift.com

443

必需。用于访问镜像安装内容和镜像。此站点也是发行版本镜像签名的来源,但 Cluster Version Operator (CVO) 只需要一个可正常工作的源。

2.7.3.2. 遥测的域
Expand
端口功能

infogw.api.openshift.com

443

遥测是必需的。

console.redhat.com

443

必需。允许集群和 OpenShift Console Manager 之间的交互以启用功能,如调度升级。

sso.redhat.com

443

必需。https://console.redhat.com/openshift 站点使用 sso.redhat.com 中的身份验证下载 pull secret,并使用 Red Hat SaaS 解决方案来帮助监控您的订阅、集群清单、计费报告等。

受管集群需要启用遥测功能,以便红帽可以更快地对问题做出反应,更好地支持客户,并更好地了解产品升级对集群的影响。有关如何使用红帽远程健康监控数据的更多信息,请参阅关于远程健康监控

2.7.3.3. Amazon Web Services (AWS) API 的域
Expand
端口功能

sts.<aws_region>.amazonaws.com [1]

443

必需。用于访问 AWS 安全令牌服务(STS)区域端点。确保将 &lt ;aws-region > 替换为集群要部署到的区域。

  1. 这也可以通过在 AWS Virtual Private Cloud (VPC)到区域 AWS STS 端点中配置私有接口端点来实现。
2.7.3.4. 工作负载的域

您的工作负载可能需要访问为编程语言或框架提供资源的其他站点。

2.7.3.5. 可选域以启用第三方内容
Expand
端口功能

registry.connect.redhat.com

443

可选。所有第三方镜像和认证操作器是必需的。

rhc4tp-prod-z8cxf-image-registry-us-east-1-evenkyleffocxqvofrk.s3.dualstack.us-east-1.amazonaws.com

443

可选。提供对托管在 registry.connect.redhat.com 上的容器镜像的访问。

oso-rhc4tp-docker-registry.s3-us-west-2.amazonaws.com

443

可选。对于 Sonatype Nexus, F5 Big IP operator 是必需的。

后续步骤

其他资源

第 3 章 所需的 IAM 角色和资源

您必须在 AWS 帐户上创建几个角色资源,才能创建和管理 Red Hat OpenShift Service on AWS 集群。

3.1. 所需的角色概述

要在 AWS 集群上创建和管理 Red Hat OpenShift Service,您必须创建几个集群范围的角色和集群范围的角色。如果要使用 OpenShift Cluster Manager 创建和管理集群,则需要一些额外的角色。

创建和管理集群

在 AWS 集群上创建和管理 Red Hat OpenShift Service 需要几个集群范围的角色。这些角色只需要为每个 AWS 帐户创建一次,不需要为每个集群创建新角色。每个角色会附加一个或多个 AWS 管理策略,为该角色授予所需的功能。您可以指定自己的前缀,或使用默认前缀(ManagedOpenShift)。

注意

角色名称限制为 AWS IAM 中的最大长度为 64 个字符。当集群的用户指定的前缀超过 20 个字符时,角色名称会被截断,以便在 AWS IAM 中观察此 64 个字符的最大值。

对于 Red Hat OpenShift Service on AWS 集群,您必须创建以下集群范围的角色,并附加指定的 AWS 受管策略:

Expand
表 3.1. Red Hat OpenShift Service on AWS 所需的帐户角色和 AWS 策略
角色名称AWS 策略名称

<prefix>-HCP-ROSA-Worker-Role

ROSAWorkerInstancePolicyAmazonEC2ContainerRegistryReadOnly

<prefix>-HCP-ROSA-Support-Role

ROSASRESupportPolicy

<prefix>-HCP-ROSA-Installer-Role

ROSAInstallerPolicy

注意

角色创建不会请求 AWS 访问或 secret 密钥。AWS 安全令牌服务(STS)用作此工作流的基础。AWS STS 使用临时的、有有限权限的凭证来提供身份验证。

使用 Operator 管理的集群功能

有些集群功能(包括默认提供的一些功能)通过 Operator 进行管理。要使用这些功能,需要特定于集群的 Operator角色(ROSA CLI 中的 operator 角色)。这些角色用于获取执行集群操作所需的临时权限,如管理后端存储、入口和 registry。获取这些权限需要配置 OpenID Connect (OIDC)供应商,该供应商连接到 AWS 安全令牌服务(STS)以验证 Operator 对 AWS 资源的访问。

对于 Red Hat OpenShift Service on AWS 集群,您必须创建以下 Operator 角色并附加指定的 AWS Managed 策略:

Expand
表 3.2. 使用 HCP 的 ROSA 所需的 Operator 角色和 AWS 管理策略
角色名称AWS 管理的策略名称

openshift-cloud-network-config-controller-c

ROSACloudNetworkConfigOperatorPolicy

openshift-image-registry-installer-cloud-credentials

ROSAImageRegistryOperatorPolicy

kube-system-kube-controller-manager

ROSAKubeControllerPolicy

kube-system-capa-controller-manager

ROSANodePoolManagementPolicy

kube-system-control-plane-operator

ROSAControlPlaneOperatorPolicy

kube-system-kms-provider

ROSAKMSProviderPolicy

openshift-ingress-operator-cloud-credentials

ROSAIngressOperatorPolicy

openshift-cluster-csi-drivers-ebs-cloud-credentials

ROSAAmazonEBSCSIDriverOperatorPolicy

使用 rosa create operator-role 命令创建 Operator 角色时,创建的角色将使用 < cluster_name>-<hash>-<role_name> 格式 命名,例如 test-abc1-kube-system-control-plane-operator。当集群名称超过 15 个字符时,角色名称会被截断。

使用 OpenShift Cluster Manager

Web 用户界面 OpenShift Cluster Manager 要求您在 AWS 帐户和 OpenShift Cluster Manager 中创建附加角色。

此信任关系通过 ocm-role AWS IAM 角色的创建和关联来实现。此角色有一个信任策略,AWS 安装程序将您的红帽帐户链接到 AWS 帐户。另外,您还需要为每个 Web UI 用户提供一个 user-role AWS IAM 角色,用于识别这些用户。这个 user-role AWS IAM 角色没有权限。

使用 OpenShift Cluster Manager 需要以下 AWS IAM 角色:

  • ocm-role
  • user-role

3.2. 创建和管理集群所需的角色

需要几个集群范围的角色(ROSA CLI 中的account-roles )来创建和管理 Red Hat OpenShift Service on AWS 集群。这些角色必须使用 ROSA CLI (rosa)创建,无论您通常使用 OpenShift Cluster Manager 还是 ROSA CLI 来创建和管理集群。这些角色只需要创建一次,不需要为安装的每个集群创建。

3.2.1. 创建集群范围的 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 策略

3.3. OIDC 身份验证所需的资源

Red Hat OpenShift Service on AWS 集群使用 OIDC 和 AWS 安全令牌服务(STS)来验证对执行其功能的 AWS 资源的 Operator 访问。每个生产环境集群都需要自己的 OIDC 配置。

3.3.1. 创建 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

3.4. Operator 受管集群功能所需的角色

有些集群功能(包括默认提供的一些功能)通过 Operator 进行管理。集群特定的 Operator 角色(ROSA CLI 中的 Operator角色 )使用 OpenID Connect (OIDC)供应商来临时验证 Operator 对 AWS 资源的访问。

3.4.1. 集群特定 Operator IAM 角色参考

Operator 角色用于获取执行集群操作所需的临时权限,如管理后端存储、云入口控制器和对集群的外部访问权限。

在创建 Operator 角色时,匹配的集群版本的 account-wide Operator 策略会附加到角色中。AWS 管理的 Operator 策略在 AWS IAM 中进行了版本化。始终使用 AWS 管理策略的最新版本,因此您不需要为 ROSA 与 HCP 使用的 AWS 管理策略管理或调度升级。

注意

如果您的帐户中提供了多个匹配策略,则创建角色时会提供一个交互式选项列表。

Expand
表 3.3. 使用 HCP 的 ROSA 所需的 Operator 角色和 AWS 管理策略
角色名称AWS Managed 策略名称角色描述

openshift-cloud-network-config-controller-credentials

ROSACloudNetworkConfigOperatorPolicy

云网络配置控制器所需的 IAM 角色,用于管理集群的云网络凭证。

openshift-image-registry-installer-cloud-credentials

ROSAImageRegistryOperatorPolicy

ROSA Image Registry Operator 所需的 IAM 角色,用于管理集群的 AWS S3 中的 OpenShift 镜像 registry 存储。

kube-system-kube-controller-manager

ROSAKubeControllerPolicy

在 HCP 集群上管理 OpenShift 所需的 IAM 角色。

kube-system-capa-controller-manager

ROSANodePoolManagementPolicy

HCP 集群上节点管理所需的 IAM 角色。

kube-system-control-plane-operator

ROSAControlPlaneOperatorPolicy

在 HCP 集群上管理 IAM 角色需要 control plane 管理。

kube-system-kms-provider

ROSAKMSProviderPolicy

在 HCP 集群上管理 OpenShift 所需的 IAM 角色。

openshift-ingress-operator-cloud-credentials

ROSAIngressOperatorPolicy

ROSA Ingress Operator 所需的 IAM 角色来管理集群的外部访问。

openshift-cluster-csi-drivers-ebs-cloud-credentials

ROSAAmazonEBSCSIDriverOperatorPolicy

ROSA 需要的 IAM 角色,以通过 Container Storage Interface (CSI) 管理后端存储。

3.4.2. 创建 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 帐户关联的所有前缀,并记录与这个前缀关联的角色数量。如果您需要查看所有这些角色及其详情,请在详情提示符处输入"是",使这些角色以特定形式列出。

3.5. 使用 OpenShift Cluster Manager 所需的角色

本节中的角色只有在您要使用 OpenShift Cluster Manager 来创建和管理集群时才需要。如果您只打算使用 ROSA CLI (rosa)和 OpenShift CLI (oc)创建和管理集群,则不需要这些角色。

3.5.1. 创建 ocm-role IAM 角色

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

前提条件

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

流程

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

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

    $ rosa create ocm-role --admin
    Copy to Clipboard Toggle word wrap

    此命令允许您通过指定特定属性来创建角色。以下示例输出显示选择了"自动模式",它允许 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 Path (optional): 
4

? Role creation mode: auto 
5

I: Creating role using 'arn:aws:iam::<ARN>:user/<UserName>'
? Create the 'ManagedOpenShift-OCM-Role-182' role? Yes 
6

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 
7

? Link the 'arn:aws:iam::<ARN>:role/ManagedOpenShift-OCM-Role-182' role with organization '<AWS ARN>'? Yes 
8

I: Successfully linked role-arn 'arn:aws:iam::<ARN>:role/ManagedOpenShift-OCM-Role-182' with organization account '<AWS ARN>'
Copy to Clipboard Toggle word wrap

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

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

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

3.5.2. 创建 user-role IAM 角色

您可以使用命令行界面(CLI)创建用户角色 IAM 角色

前提条件

  • 您有一个 AWS 帐户。
  • 您已在安装主机上安装和配置了最新的 ROSA CLI rosa

流程

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

    $ rosa create user-role
    Copy to Clipboard Toggle word wrap

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

输出示例

I: Creating User role
? Role prefix: ManagedOpenShift 
1

? Permissions boundary ARN (optional): 
2

? Role Path (optional): 
3

? Role creation mode: auto 
4

I: Creating ocm user role using 'arn:aws:iam::2066:user'
? Create the 'ManagedOpenShift-User.osdocs-Role' role? Yes 
5

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 
6

I: Successfully linked role ARN 'arn:aws:iam::2066:role/ManagedOpenShift-User.osdocs-Role' with account '1AGE'
Copy to Clipboard Toggle word wrap

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

第 4 章 所需的 AWS 服务配额

查看此列表,其中列出了在 AWS 集群上运行 Red Hat OpenShift Service on AWS 集群所需的服务配额。

4.1. 所需的 AWS 服务配额

下表描述了创建并运行一个 Red Hat OpenShift Service on AWS 集群所需的 AWS 服务配额和级别。虽然大多数默认值适合大多数工作负载,但您可能需要为以下情况请求额外的配额:

  • Red Hat OpenShift Service on AWS 集群至少需要 32 个 vCPU 的 AWS EC2 服务配额,才能为集群创建、可用性和升级提供。分配给运行 On-Demand Standard Amazon EC2 实例的 vCPU 的默认最大值为 5。因此,如果您之前还没有使用相同的 AWS 帐户创建 ROSA 集群,您必须为 运行 On-Demand 标准(A、C、D、H、I、M、R、T、Z)实例 请求额外的 EC2 配额。
  • 有些可选集群配置功能,如自定义安全组,您可能需要请求额外的配额。例如,因为 ROSA 默认将 1 个安全组与 worker 机器池中的网络接口相关联,并且 每个网络接口的安全组的默认配额5,如果要添加 5 个自定义安全组,您必须请求额外的配额,因为这会将 worker 网络接口上的安全组总数引入到 6。
注意

AWS SDK 允许 ROSA 检查配额,但 AWS SDK 计算不考虑您现有的使用量。因此,因为缺少可用的配额,集群创建可能会失败,即使 AWS SDK 配额检查通过。要解决这个问题,请提高您的配额。

如果您需要修改或增加特定的 AWS 配额,请参阅 Amazon 文档中 请求配额会增加。向 Amazon 支持提交大型配额请求进行审核,可能需要一些时间才能批准。如果您的配额请求是紧急的,请联系 AWS 支持。

Expand
表 4.1. Red Hat OpenShift Service on AWS -required 服务配额
配额名称服务代码配额代码AWS 默认最低要求描述

运行按需标准(A、C、D、H、I、M、R、T、Z)实例

ec2

L-1216C47A

5

32

分配给运行按需标准(A、C、D、H、I、M、R、T、Z)实例的 vCPU 数量上限。5 个 vCPU 的默认值不足以创建 ROSA 集群。

以 TiB 为单位的通用目的 SSD (gp3)卷存储

ebs

L-7A658B76

50

1[a]

此区域中可以在跨 General Purpose SSD (gp3) 卷进行置备的最大聚合存储量(以 TiB 为单位)。对于最佳性能,至少需要 1 TiB 的存储。

[a] 默认配额为 50 TiB 大于 Red Hat OpenShift Service on AWS 集群,但因为 AWS 成本是基于使用量而不是配额,红帽建议使用默认配额。
Expand
表 4.2. 常规 AWS 服务配额
配额名称服务代码配额代码AWS 默认最低要求描述

EC2-VPC Elastic IP

ec2

L-0263D0A3

5

5

在此区域中可以为 EC2-VPC 分配的最大 Elastic IP 地址数量。

每个区域的 VPCs

vpc

L-F678F1CE

5

5

每个区域的 VPC 数量上限。此配额与每个区域的最大互联网网关数直接关联。

每个区域的互联网网关

vpc

L-A4707A72

5

5

每个区域的最大互联网网关数。这个配额与每个区域的最大 VPC 数量直接关联。要增加这个配额,请增加每个区域的 VPC 数量。

每个区域的网络接口

vpc

L-DF5E4CA3

5,000

5,000

每个区域的最大网络接口数。

每个网络接口的安全组

vpc

L-2AFB9258

5

5

每个网络接口的最大安全组数量。这个配额乘以每个安全组的规则的配额不能超过 1000。

每个区域的应用程序负载均衡器

elasticloadbalancing

L-53DA6B97

50

50

每个区域可以存在的最大 Application Load Balancer 数量。

4.2. 后续步骤

第 5 章 设置环境

满足 AWS 的先决条件后,设置您的环境并在 AWS 上安装 Red Hat OpenShift Service。

5.1. 安装和配置所需的 CLI 工具

部署和使用集群需要几个命令行界面(CLI)工具。

先决条件

  • 您有一个 AWS 帐户。
  • 您有红帽帐户。

流程

  1. 登录到您的红帽帐户和 AWS 帐户,访问每个所需工具的下载页面。

    1. console.redhat.com 中登录到您的红帽帐户。
    2. 登录到位于 aws.amazon.com 的 AWS 帐户。
  2. 安装和配置最新的 AWS CLI (aws)。

    1. 按照适用于您的工作站的 AWS 命令行接口 文档安装 AWS CLI。
    2. 通过在 .aws/credentials 文件中指定 aws_access_key_idaws_secret_access_keyregion 来配置 AWS CLI。如需更多信息,请参阅 AWS 文档中的 AWS 配置基础知识

      注意

      您可以选择使用 AWS_DEFAULT_REGION 环境变量设置默认 AWS 区域。

    3. 查询 AWS API 以验证是否已安装并配置了 AWS CLI:

      $ aws sts get-caller-identity  --output text
      Copy to Clipboard Toggle word wrap

      输出示例

      <aws_account_id>    arn:aws:iam::<aws_account_id>:user/<username>  <aws_user_id>
      Copy to Clipboard Toggle word wrap

  3. 安装和配置最新的 ROSA CLI。

    1. 导航到 Downloads
    2. 在工具列表中找到 Red Hat OpenShift Service on AWS 命令行界面(rosa),然后点 Download

      rosa-linux.tar.gz 文件下载到您的默认下载位置。

    3. 从下载的存档中提取 rosa 二进制文件。以下示例从 Linux tar 归档中提取二进制文件:

      $ tar xvf rosa-linux.tar.gz
      Copy to Clipboard Toggle word wrap
    4. rosa 二进制文件移到执行路径的目录中。在以下示例中,/usr/local/bin 目录包含在用户的路径中:

      $ sudo mv rosa /usr/local/bin/rosa
      Copy to Clipboard Toggle word wrap
    5. 通过查询 rosa 版本来验证 ROSA CLI 是否已正确安装:

      $ rosa version
      Copy to Clipboard Toggle word wrap

      输出示例

      1.2.47
      Your ROSA CLI is up to date.
      Copy to Clipboard Toggle word wrap

  4. 使用离线访问令牌登录到 ROSA CLI。

    1. 运行 login 命令:

      $ rosa login
      Copy to Clipboard Toggle word wrap

      输出示例

      To login to your Red Hat account, get an offline access token at https://console.redhat.com/openshift/token/rosa
      ? Copy the token and paste it here:
      Copy to Clipboard Toggle word wrap

    2. 导航到命令输出中列出的 URL,以查看您的离线访问令牌。
    3. 在命令行提示符处输入离线访问令牌以进行登录。

      ? Copy the token and paste it here: *******************
      [full token length omitted]
      Copy to Clipboard Toggle word wrap
      注意

      以后,您可以在运行 rosa login 命令时使用-- token="<offline_access_token >" 参数指定离线访问令牌。

    4. 在继续操作前,验证您是否已登录并确认您的凭证正确:

      $ rosa whoami
      Copy to Clipboard Toggle word wrap

      输出示例

      AWS Account ID:               <aws_account_number>
      AWS Default Region:           us-east-1
      AWS ARN:                      arn:aws:iam::<aws_account_number>:user/<aws_user_name>
      OCM API:                      https://api.openshift.com
      OCM Account ID:               <red_hat_account_id>
      OCM Account Name:             Your Name
      OCM Account Username:         you@domain.com
      OCM Account Email:            you@domain.com
      OCM Organization ID:          <org_id>
      OCM Organization Name:        Your organization
      OCM Organization External ID: <external_org_id>
      Copy to Clipboard Toggle word wrap

  5. 安装和配置最新的 OpenShift CLI (oc)。

    1. 使用 ROSA CLI 下载 oc CLI。

      以下命令将 CLI 的最新版本下载到当前工作目录:

      $ rosa download openshift-client
      Copy to Clipboard Toggle word wrap
    2. 从下载的存档中提取 oc 二进制文件。以下示例从 Linux tar 归档中提取文件:

      $ tar xvf openshift-client-linux.tar.gz
      Copy to Clipboard Toggle word wrap
    3. oc 二进制文件移到执行路径的目录中。在以下示例中,/usr/local/bin 目录包含在用户的路径中:

      $ sudo mv oc /usr/local/bin/oc
      Copy to Clipboard Toggle word wrap
    4. 验证 oc CLI 是否已正确安装:

      $ rosa verify openshift-client
      Copy to Clipboard Toggle word wrap

      输出示例

      I: Verifying whether OpenShift command-line tool is available...
      I: Current OpenShift Client Version: 4.17.3
      Copy to Clipboard Toggle word wrap

5.2. 后续步骤

第 6 章 规划集群中的资源使用量

6.1. 基于经过测试的集群最大值规划您的环境

本文档论述了如何根据经过测试的集群最大值规划 Red Hat OpenShift Service on AWS 环境。

在节点上过度订阅物理资源会影响 Kubernetes 调度程序在 pod 放置过程中制作的资源保证。了解可以采取什么措施避免内存交换。

某些限制只在单一维度中扩展。当很多对象在集群中运行时,它们会有所不同。

本文档中给出的数字基于红帽测试方法、设置、配置和调整。这些数字会根据您自己的设置和环境而有所不同。

在规划您的环境时,使用以下公式确定每个节点应该有多少个 pod:

required pods per cluster / pods per node = total number of nodes needed
Copy to Clipboard Toggle word wrap

每个节点上的 Pod 数量做多为 250。而在某个节点中运行的 pod 的具体数量取决于应用程序本身。参照根据应用程序要求规划您的环境的内容,考虑应用程序的内存、CPU 和存储要求。

示例情境

如果想把集群的规模限制在没有集群可以有 2200 个 pod,则需要至少有九个节点,假设每个节点最多有 250 个 pod:

2200 / 250 = 8.8
Copy to Clipboard Toggle word wrap

如果将节点数量增加到 20,那么 pod 的分布情况将变为每个节点有 110 个 pod:

2200 / 20 = 110
Copy to Clipboard Toggle word wrap

其中:

required pods per cluster / total number of nodes = expected pods per node
Copy to Clipboard Toggle word wrap

6.2. 根据应用程序要求规划您的环境

本文档论述了如何根据应用程序要求规划 Red Hat OpenShift Service on AWS 环境。

考虑应用程序环境示例:

Expand
pod 类型pod 数量最大内存CPU 内核持久性存储

Apache

100

500 MB

0.5

1 GB

node.js

200

1 GB

1

1 GB

postgresql

100

1 GB

2

10 GB

JBoss EAP

100

1 GB

1

1 GB

提取要求:550 个 CPU 内核、450 GB RAM 和 1.4 TB 存储。

根据您的具体情况,节点的实例大小可以被增大或降低。在节点上通常会使用资源过度分配。在这个部署场景中,您可以选择运行多个额外的较小节点,或数量更少的较大节点来提供同样数量的资源。在做出决定前应考虑一些因素,如操作的灵活性以及每个实例的成本。

Expand
节点类型数量CPURAM (GB)

节点(选择 1)

100

4

16

节点(选择 2)

50

8

32

节点(选择 3)

25

16

64

有些应用程序很适合于过度分配的环境,有些则不适合。大多数 Java 应用程序以及使用巨页的应用程序都不允许使用过度分配功能。它们的内存不能用于其他应用程序。在上面的例子中,环境大约会出现 30% 过度分配的情况,这是一个常见的比例。

应用程序 pod 可以使用环境变量或 DNS 访问服务。如果使用环境变量,当 pod 在节点上运行时,对于每个活跃服务,则 kubelet 的变量都会注入。集群感知 DNS 服务器监视 Kubernetes API 提供了新服务,并为每个服务创建一组 DNS 记录。如果整个集群中启用了 DNS,则所有 pod 都应自动根据其 DNS 名称解析服务。如果您必须超过 5000 服务,可以使用 DNS 进行服务发现。当使用环境变量进行服务发现时,如果参数列表超过命名空间中 5000 服务后允许的长度,则 pod 和部署将启动失败。

要解决这个问题,请禁用部署的服务规格文件中的服务链接:

示例

Kind: Template
apiVersion: template.openshift.io/v1
metadata:
  name: deploymentConfigTemplate
  creationTimestamp:
  annotations:
    description: This template will create a deploymentConfig with 1 replica, 4 env vars and a service.
    tags: ''
objects:
  - kind: DeploymentConfig
    apiVersion: apps.openshift.io/v1
    metadata:
      name: deploymentconfig${IDENTIFIER}
    spec:
      template:
        metadata:
          labels:
            name: replicationcontroller${IDENTIFIER}
        spec:
          enableServiceLinks: false
          containers:
          - name: pause${IDENTIFIER}
            image: "${IMAGE}"
            ports:
            - containerPort: 8080
              protocol: TCP
            env:
            - name: ENVVAR1_${IDENTIFIER}
              value: "${ENV_VALUE}"
            - name: ENVVAR2_${IDENTIFIER}
              value: "${ENV_VALUE}"
            - name: ENVVAR3_${IDENTIFIER}
              value: "${ENV_VALUE}"
            - name: ENVVAR4_${IDENTIFIER}
              value: "${ENV_VALUE}"
            resources: {}
            imagePullPolicy: IfNotPresent
            capabilities: {}
            securityContext:
              capabilities: {}
              privileged: false
          restartPolicy: Always
          serviceAccount: ''
      replicas: 1
      selector:
        name: replicationcontroller${IDENTIFIER}
      triggers:
      - type: ConfigChange
      strategy:
        type: Rolling
  - kind: Service
    apiVersion: v1
    metadata:
      name: service${IDENTIFIER}
    spec:
      selector:
        name: replicationcontroller${IDENTIFIER}
      ports:
      - name: serviceport${IDENTIFIER}
        protocol: TCP
        port: 80
        targetPort: 8080
      portalIP: ''
      type: ClusterIP
      sessionAffinity: None
    status:
      loadBalancer: {}
  parameters:
  - name: IDENTIFIER
    description: Number to append to the name of resources
    value: '1'
    required: true
  - name: IMAGE
    description: Image to use for deploymentConfig
    value: gcr.io/google-containers/pause-amd64:3.0
    required: false
  - name: ENV_VALUE
    description: Value to use for environment variables
    generate: expression
    from: "[A-Za-z0-9]{255}"
    required: false
  labels:
template: deploymentConfigTemplate
Copy to Clipboard Toggle word wrap

可在命名空间中运行的应用程序 pod 数量取决于服务数量以及环境变量用于服务发现时的服务名称长度。系统上的 ARG_MAX 定义新进程的最大参数长度,默认设置为 2097152 字节 (2 MiB)。kubelet 将环境变量注入到要在命名空间中运行的每个 pod 中,包括:

  • <SERVICE_NAME>_SERVICE_HOST=<IP>
  • <SERVICE_NAME>_SERVICE_PORT=<PORT>
  • <SERVICE_NAME>_PORT=tcp://<IP>:<PORT>
  • <SERVICE_NAME>_PORT_<PORT>_TCP=tcp://<IP>:<PORT>
  • <SERVICE_NAME>_PORT_<PORT>_TCP_PROTO=tcp
  • <SERVICE_NAME>_PORT_<PORT>_TCP_PORT=<PORT>
  • <SERVICE_NAME>_PORT_<PORT>_TCP_ADDR=<ADDR>

如果参数长度超过允许的值,服务名称中的字符数会受到影响,命名空间中的 pod 将开始失败。

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat