准备您的环境
Red Hat OpenShift Service on AWS 的规划、限制和可扩展性
摘要
第 1 章 使用 STS 的 ROSA 的 AWS 先决条件
Red Hat OpenShift Service on AWS (ROSA)提供了一个模型,红帽可以将集群部署到客户的现有 Amazon Web Service (AWS)帐户中。
AWS 安全令牌服务 (STS) 是推荐的凭证模式,用于安装 Red Hat OpenShift Service on AWS (ROSA) 集群并与之交互,因为它提供了增强的安全性。
在使用 STS 安装 ROSA 前,请确保满足以下 AWS 先决条件。
1.1. 部署先决条件
要将 Red Hat OpenShift Service on AWS (ROSA) 部署到现有的 Amazon Web Services (AWS) 帐户中,红帽要求满足以下几个先决条件。
红帽建议使用 AWS 机构管理多个 AWS 帐户。由客户管理的 AWS 机构托管多个 AWS 帐户。机构中有一个 root 帐户,所有帐户都将在帐户层次结构中引用。
它是在 AWS 机构单元内托管在 AWS 帐户中的 ROSA 集群的最佳实践。创建服务控制策略 (SCP) 并应用到 AWS 机构单元,后者管理 AWS 子帐户可访问的服务。SCP 仅适用于单个 AWS 帐户内对机构单元中的所有 AWS 子帐户的可用权限。也可以将 SCP 应用到单个 AWS 帐户。客户 AWS 组织中的所有其他帐户以客户要求的任何方式进行管理。红帽站点可靠性工程师(SRE)对 AWS 机构内的 SCP 没有控制。
当使用 AWS STS 创建 ROSA 集群时,也会创建一个关联的 AWS OpenID Connect (OIDC)身份提供程序。此 OIDC 供应商配置依赖于位于 us-east-1 AWS 区域的公钥。具有 AWS SCP 的客户必须允许使用 us-east-1 AWS 区域,即使这些集群部署在不同的区域。
1.2. 使用 STS 进行部署时的客户要求
在部署使用 AWS 安全令牌服务(STS)的 Red Hat OpenShift Service on AWS (ROSA)集群前,需要完成以下先决条件。
1.2.1. 帐户
您必须确保 AWS 限制足以支持 AWS 帐户中置备的 Red Hat OpenShift Service on AWS。在 CLI 中运行
rosa verify quota命令会验证您是否具有运行集群所需的配额。注意配额验证检查 AWS 配额,但不会将您的消耗与 AWS 配额进行比较。如需更多信息,请参阅附加资源中的 "Limits and scalability" 链接。
- 如果应用并强制实施 SCP 策略,则这些策略必须比集群所需的角色和策略更严格。
- 您的 AWS 帐户不应转移到红帽。
- 除了红帽活动中定义的角色和策略外,您不应该实施额外的 AWS 使用限制。受损限制将严重阻碍红帽响应事件的能力。
- 您可以在同一 AWS 帐户内部署原生 AWS 服务。
您的帐户必须设置有 service-linked 角色,因为它需要配置 Elastic Load Balancing (ELB)。有关之前没有在 AWS 帐户中创建负载均衡器的信息,请参阅附加资源中的"创建弹性负载均衡(ELB)服务链接角色"链接角色"。
注意建议您在虚拟私有云(VPC)中部署资源,与在 AWS 上托管 Red Hat OpenShift Service on AWS 和其他支持的服务分开的 VPC 中部署资源。
1.2.2. 访问要求
- 红帽必须具有对客户提供的 AWS 帐户的 AWS 控制台访问权限。红帽保护并管理此访问权限。
- 您不能使用 AWS 帐户在 Red Hat OpenShift Service on AWS (ROSA)集群中提升权限。
-
ROSA CLI (
rosa)或 OpenShift Cluster Manager Hybrid Cloud Console 控制台中可用的操作不能直接在 AWS 帐户中执行。 - 您不需要有一个预配置的域来部署 ROSA 集群。如果要使用自定义域,请参阅附加资源以了解更多信息。
其他资源
- 请参阅 为应用程序配置自定义域
1.2.3. 支持要求
- 红帽建议客户从 AWS 至少有商业支持。
- 红帽可能客户有权代表他们获得 AWS 支持。
- 红帽可能客户有权请求 AWS 资源限制来增加客户的帐户。
- 除非本要求部分中另有指定,否则红帽以相同的方式管理所有 Red Hat OpenShift Service on AWS 集群上的限制、预期和默认值。
1.2.4. 安全要求
- 红帽必须具有来自允许 IP 地址的对 EC2 主机和 API 服务器的入口(ingress)访问权限。
- 红帽必须对记录的域有出口。有关指定域的"AWS 防火墙先决条件"部分。
其他资源
1.2.5. 使用 OpenShift Cluster Manager 的要求
以下小节描述了 OpenShift Cluster Manager 混合云控制台 的要求。如果您只使用 CLI 工具,您可以忽略要求。
要使用 OpenShift Cluster Manager,您必须链接 AWS 帐户。此链接概念也称为帐户关联。
1.2.5.1. AWS 帐户关联
Red Hat OpenShift Service on AWS (ROSA)集群置备任务需要使用 Amazon Resource Name (ARN)将 ocm-role 和 user-role IAM 角色链接到 AWS 帐户。
ocm-role ARN 作为标签存储在您的红帽机构中,而 user-role ARN 则作为红帽用户帐户中的标签保存。红帽使用这些 ARN 标签来确认用户是有效的帐户拥有者,并可使用正确的权限来执行 AWS 帐户中的必要任务。
1.2.5.2. 链接 AWS 帐户
您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI rosa 将 AWS 帐户链接到现有的 IAM 角色。
前提条件
- 您有一个 AWS 帐户。
- 您可以使用 OpenShift Cluster Manager Hybrid Cloud Console 创建集群。
- 您有安装 AWS 范围的角色所需的权限。如需更多信息,请参阅本节的"附加资源"。
-
您已在安装主机上安装和配置了最新的 AWS (
aws) 和 ROSA (rosa) CLI。 您已创建了
ocm-role和user-roleIAM 角色,但还没有将它们链接到 AWS 帐户。您可以运行以下命令来检查您的 IAM 角色是否已链接:$ rosa list ocm-role
$ rosa list user-role
如果这两个角色的
Linked列中显示了Yes,您已将角色链接到 AWS 帐户。
流程
在 CLI 中,使用 Amazon Resource Name (ARN) 将
ocm-role资源链接到红帽机构:注意您必须具有红帽机构管理员权限才能运行
rosa link命令。将ocm-role资源与 AWS 帐户链接后,对机构的所有用户可见。$ rosa link ocm-role --role-arn <arn>
输出示例
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>'
在 CLI 中,使用您的 Amazon 资源名称 (ARN) 将您的
user-role资源链接到您的红帽用户帐户:$ rosa link user-role --role-arn <arn>
输出示例
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>'
其他资源
1.2.5.3. 将多个 AWS 帐户与红帽机构相关联
您可以将多个 AWS 帐户与红帽机构相关联。通过关联多个帐户,您可以从您的红帽机构在 AWS (ROSA) 集群上创建 Red Hat OpenShift 服务。
使用此功能,您可以使用多个 AWS 配置集作为区域密集型环境在不同的 AWS 区域中创建集群。
前提条件
- 您有一个 AWS 帐户。
- 您可以使用 OpenShift Cluster Manager Hybrid Cloud Console 创建集群。
- 您有安装 AWS 范围的角色所需的权限。
-
您已在安装主机上安装和配置了最新的 AWS (
aws) 和 ROSA (rosa) CLI。 -
您已创建了
ocm-role和user-roleIAM 角色。
流程
要关联一个额外的 AWS 帐户,首先在本地 AWS 配置中创建配置集。然后,通过在其他 AWS 帐户中创建 ocm-role、用户帐户角色,将该帐户与您的红帽机构相关联。
要在附加区域中创建角色,在运行 rosa create 命令时指定 --profile <aws-profile> 参数,将 <aws_profile> 替换为附加帐户配置集名称:
在创建 OpenShift Cluster Manager 角色时指定 AWS 帐户配置集:
$ rosa create --profile <aws_profile> ocm-role
在创建用户角色时指定 AWS 帐户配置集:
$ rosa create --profile <aws_profile> user-role
在创建帐户角色时指定 AWS 帐户配置集:
$ rosa create --profile <aws_profile> account-roles
如果没有指定配置集,则使用默认 AWS 配置集。
1.3. 在 opt-in 区域部署集群的要求
AWS opt-in 区域是一个默认情况下不启用的区域。如果您需要在一个 opt-in 区域中部署带有 AWS Security Token Service (STS) 的 Red Hat OpenShift Service on AWS (ROSA),必须满足以下要求:
- 区域必须在 AWS 帐户中启用。有关启用 opt-in 区域的更多信息,请参阅 AWS 文档中的管理 AWS 区域。
AWS 帐户中的安全令牌版本必须设置为版本 2。对于选择的(opt-in)区域,您将不能使用版本 1 安全令牌。
重要由于令牌长度增加,到安全令牌版本 2 可能会影响存储令牌的系统。如需更多信息,请参阅有关设置 STS 首选项的 AWS 文档。
1.3.1. 设置 AWS 安全令牌版本
如果要在 AWS opt-in 区域中创建使用 AWS 安全令牌服务(STS) 的 Red Hat OpenShift Service (ROSA) 集群,您必须将安全令牌版本设置为 AWS 帐户中的 2 版本。
前提条件
- 您已在安装主机上安装并配置了最新的 AWS CLI。
流程
列出 AWS CLI 配置中定义的 AWS 帐户 ID:
$ aws sts get-caller-identity --query Account --output json
确保输出与相关 AWS 帐户的 ID 匹配。
列出 AWS 帐户中设置的安全令牌版本:
$ aws iam get-account-summary --query SummaryMap.GlobalEndpointTokenVersion --output json
输出示例
1
要将 AWS 帐户中的所有区域的安全令牌版本更新为版本 2,请运行以下命令:
$ aws iam set-security-token-service-preferences --global-endpoint-token-version v2Token
重要由于令牌长度增加,到安全令牌版本 2 可能会影响存储令牌的系统。如需更多信息,请参阅有关设置 STS 首选项的 AWS 文档。
1.4. Red Hat Managed IAM 参考
使用 STS 部署模型,红帽不再负责管理 Amazon Web Services (AWS) IAM 策略、IAM 用户或 IAM 角色。有关创建这些角色和策略的详情,请参考 IAM 角色的以下部分。
-
要使用
ocmCLI,您必须有一个ocm-role和user-role资源。请参阅 OpenShift Cluster Manager IAM 角色资源。 - 如果您有单个集群,请参阅 帐户范围的 IAM 角色和策略参考。
- 对于每个集群,您必须具有必要的 operator 角色。请参阅 特定于集群的 Operator IAM 角色参考。
1.5. 置备的 AWS 基础架构
这是在部署的 Red Hat OpenShift Service on AWS (ROSA) 中置备的 Amazon Web Services (AWS) 组件的概述。有关所有置备的 AWS 组件的详细列表,请参阅 OpenShift Container Platform 文档。
1.5.1. EC2 实例
在 AWS 公有云中部署 ROSA 的 control plane 和 data plane 功能需要 AWS EC2 实例。
根据 worker 节点数,实例类型可能会因 control plane 和基础架构节点而异。至少会部署以下 EC2 实例:
-
三个
m5.2xlargecontrol plane 节点 -
两个
r5.xlarge基础架构节点 -
两个
m5.xlarge自定义 worker 节点
有关 worker 节点计数的更多信息,请参阅此页面的"Limits and scalability"部分中有关初始规划注意事项的信息。
1.5.2. Amazon Elastic Block Store 存储
Amazon Elastic Block Store (Amazon EBS)块存储用于本地节点存储和持久性卷存储。
每个 EC2 实例的卷要求:
Control Plane 卷
- 大小:350GB
- 类型: io1
- 每秒输入/输出操作: 1000
基础架构卷
- 大小:300GB
- 类型: gp3
- 每秒输入/输出操作:900
Worker 卷
- 大小:300GB
- 类型: gp3
- 每秒输入/输出操作:900
在 OpenShift Container Platform 4.11 发布前部署的集群默认使用 gp2 类型存储。
1.5.3. Elastic Load Balancing
最多两个 Network Load Balancers for API,最多两个 Classic Load Balancers 用于应用程序路由器。如需更多信息,请参阅 AWS 的 ELB 文档。
1.5.4. S3 存储
镜像 registry 由 AWS S3 存储支持。定期修剪资源以优化 S3 使用量和集群性能。
需要两个存储桶,每个 bucket 典型的大小为 2TB。
1.5.5. VPC
客户应该希望看到每个集群一个 VPC。另外,VPC 需要以下配置:
子网 :一个具有单一可用区的集群的两个子网,或具有多个可用区的集群 6 个子网。
注意公共子网 通过互联网网关直接连接到互联网。专用子网 通过网络地址转换(NAT)网关连接到互联网。
- 路由表 :每个专用子网一个路由表,每个集群有一个额外的表。
- Internet 网关 :每个集群一个互联网网关。
- NAT 网关 :每个公共子网一个 NAT 网关。
1.5.5.1. VPC 架构示例

1.5.6. 安全组
AWS 安全组在协议和端口访问级别提供安全性;它们与 EC2 实例和 Elastic Load Balancing (ELB)负载均衡器关联。每个安全组包含一组规则,这些规则过滤进出一个或多个 EC2 实例的流量。您必须确保在网络上打开 OpenShift 安装所需的端口,并配置为允许主机间的访问。
| 组 | 类型 | IP 协议 | 端口范围 |
|---|---|---|---|
| MasterSecurityGroup |
|
|
|
|
|
| ||
|
|
| ||
|
|
| ||
| WorkerSecurityGroup |
|
|
|
|
|
| ||
| BootstrapSecurityGroup |
|
|
|
|
|
|
1.6. AWS 防火墙先决条件
只有使用 PrivateLink 部署的 ROSA 集群才能使用防火墙来控制出口流量。
本节提供了必要的详情,供您控制来自 Red Hat OpenShift Service on AWS 集群的出口流量。如果您使用防火墙来控制出口流量,您必须配置防火墙以便授予对域和端口组合的访问权限。Red Hat OpenShift Service on AWS 需要此访问权限来提供完全托管的 OpenShift 服务。
流程
允许列出用于安装和下载软件包和工具的以下 URL:
域 端口 功能 registry.redhat.io443
提供核心容器镜像。
quay.io443
提供核心容器镜像。
*.quay.io443
提供核心容器镜像。
sso.redhat.com443, 80
必需。
https://console.redhat.com/openshift站点使用sso.redhat.com中的身份验证下载 pull secret,并使用 Red Hat SaaS 解决方案来简化订阅、集群清单、销售报告等的监控。quay-registry.s3.amazonaws.com443
提供核心容器镜像。
ocm-quay-production-s3.s3.amazonaws.com443
提供核心容器镜像。
quayio-production-s3.s3.amazonaws.com443
提供核心容器镜像。
cart-rhcos-ci.s3.amazonaws.com443
提供 Red Hat Enterprise Linux CoreOS (RHCOS)镜像。
openshift.org443
提供 Red Hat Enterprise Linux CoreOS (RHCOS)镜像。
registry.access.redhat.com[1]443
托管存储在 Red Hat Ecosytem Catalog 中的所有容器镜像。另外,registry 提供了对
odoCLI 工具的访问,可帮助开发人员在 OpenShift 和 Kubernetes 上进行构建。registry.connect.redhat.com443, 80
所有第三方镜像和认证 Operator 都需要。
console.redhat.com443, 80
必需。允许集群和 OpenShift Console Manager 之间的交互以启用功能,如调度升级。
sso.redhat.com443
https://console.redhat.com/openshift站点使用来自sso.redhat.com的身份验证pull.q1w2.quay.rhcloud.com443
当 quay.io 不可用时,提供核心容器镜像作为回退。
.q1w2.quay.rhcloud.com443
当 quay.io 不可用时,提供核心容器镜像作为回退。
www.okd.io443
openshift.org站点通过www.okd.io重定向。www.redhat.com443, 80
sso.redhat.com站点通过www.redhat.com重定向。aws.amazon.com443
iam.amazonaws.com和sts.amazonaws.com站点通过aws.amazon.com重定向。catalog.redhat.com443
registry.access.redhat.com和https://registry.redhat.io站点通过catalog.redhat.com重定向。-
在防火墙环境中,确保
access.redhat.com资源位于允许列表中。此资源托管容器客户端在从registry.access.redhat.com中拉取镜像时验证镜像所需的签名存储。
当您将
quay.io等网站添加到 allowlist 中时,不要在您的 denylist 中添加通配符条目,如*.quay.io。在大多数情况下,镜像 registry 使用内容交付网络(CDN)来提供镜像。如果防火墙阻止访问,那么当初始下载请求重定向到一个主机名(如cdn01.quay.io)时,则不能下载镜像。当您在允许列表中添加通配符条目(如
.quay.io)时,将涵盖 CDN 主机名,如cdn01.quay.io。-
在防火墙环境中,确保
将以下遥测 URL 列入允许列表:
域 端口 功能 cert-api.access.redhat.com443
遥测是必需的。
api.access.redhat.com443
遥测是必需的。
infogw.api.openshift.com443
遥测是必需的。
console.redhat.com443
遥测(telemetry)和 Red Hat Insights 需要。
cloud.redhat.com/api/ingress443
遥测(telemetry)和 Red Hat Insights 需要。
observatorium-mst.api.openshift.com443
受管 OpenShift 遥测需要。
observatorium.api.openshift.com443
受管 OpenShift 遥测需要。
受管集群需要让红帽能够更快速地对问题做出反应,更好地支持客户,并更好地了解产品升级对集群的影响。如需有关如何为红帽使用远程健康监控数据的更多信息,请参阅关于远程健康监控。
允许以下 Amazon Web Services (AWS) API URls:
域 端口 功能 .amazonaws.com443
需要此项以访问 AWS 服务和资源。
或者,如果您选择不为 Amazon Web Services (AWS) API 使用通配符,则必须允许列出以下 URL:
域 端口 功能 ec2.amazonaws.com443
用于在 AWS 环境中安装和管理集群。
events.amazonaws.com443
用于在 AWS 环境中安装和管理集群。
iam.amazonaws.com443
用于在 AWS 环境中安装和管理集群。
route53.amazonaws.com443
用于在 AWS 环境中安装和管理集群。
sts.amazonaws.com443
用于在 AWS 环境中安装和管理集群,用于配置为使用 AWS STS 的全局端点。
sts.<aws_region>.amazonaws.com443
用于在 AWS 环境中安装和管理集群,用于配置为使用 AWS STS 的区域端点的集群。如需更多信息,请参阅 AWS STS 区域端点。
tagging.us-east-1.amazonaws.com443
用于在 AWS 环境中安装和管理集群。此端点始终为 us-east-1,无论集群要部署到的区域。
ec2.<aws_region>.amazonaws.com443
用于在 AWS 环境中安装和管理集群。
elasticloadbalancing.<aws_region>.amazonaws.com443
用于在 AWS 环境中安装和管理集群。
servicequotas.<aws_region>.amazonaws.com443, 80
必需。用于确认用于部署该服务的配额。
tagging.<aws_region>.amazonaws.com443, 80
允许以标签的形式分配 AWS 资源的元数据。
将以下 OpenShift URL 列入允许列表:
域 端口 功能 mirror.openshift.com443
用于访问镜像安装内容和镜像。此站点也是发行版本镜像签名的来源,但 Cluster Version Operator (CVO)只需要一个可正常工作的源。
storage.googleapis.com/openshift-release(推荐)443
mirror.openshift.com/ 的替代站点。用于下载集群用来从 quay.io 中拉取哪些镜像的平台发行版本签名。
api.openshift.com443
用于检查集群是否有可用的更新。
将以下站点可靠性工程(SRE)和管理 URL 列入允许:
域 端口 功能 api.pagerduty.com443
集群内 alertmanager 使用此警报发送警报,通知 Red Hat SRE 要对其执行操作的事件通知。
events.pagerduty.com443
集群内 alertmanager 使用此警报发送警报,通知 Red Hat SRE 要对其执行操作的事件通知。
api.deadmanssnitch.com443
Red Hat OpenShift Service on AWS 用来发送定期 ping 的警报服务,以指示集群是否可用并在运行。
nosnch.in443
Red Hat OpenShift Service on AWS 用来发送定期 ping 的警报服务,以指示集群是否可用并在运行。
*.osdsecuritylogs.splunkcloud.comORinputs1.osdsecuritylogs.splunkcloud.cominputs2.osdsecuritylogs.splunkcloud.cominputs4.osdsecuritylogs.splunkcloud.cominputs5.osdsecuritylogs.splunkcloud.cominputs6.osdsecuritylogs.splunkcloud.cominputs7.osdsecuritylogs.splunkcloud.cominputs8.osdsecuritylogs.splunkcloud.cominputs9.osdsecuritylogs.splunkcloud.cominputs10.osdsecuritylogs.splunkcloud.cominputs11.osdsecuritylogs.splunkcloud.cominputs12.osdsecuritylogs.splunkcloud.cominputs13.osdsecuritylogs.splunkcloud.cominputs14.osdsecuritylogs.splunkcloud.cominputs15.osdsecuritylogs.splunkcloud.com9997
splunk-forwarder-operator使用为一个日志转发端点,供 Red Hat SRE 用于基于日志的警报。http-inputs-osdsecuritylogs.splunkcloud.com443
必需。
splunk-forwarder-operator使用为一个日志转发端点,供 Red Hat SRE 用于基于日志的警报。sftp.access.redhat.com(Recommended)22
must-gather-operator使用的 SFTP 服务器上传诊断日志,以帮助排除集群中的问题。如果您不允许为 Amazon Web Services (AWS) API 通配符,还必须允许用于内部 OpenShift registry 的 S3 存储桶。要检索该端点,在集群成功置备后运行以下命令:
$ oc -n openshift-image-registry get pod -l docker-registry=default -o json | jq '.items[].spec.containers[].env[] | select(.name=="REGISTRY_STORAGE_S3_BUCKET")'
S3 端点的格式应为:'<cluster-name>-<random-string>-image-registry-<cluster-region>-<random-string>.s3.dualstack.<cluster-region>.amazonaws.com'。
- 将提供构建所需语言或框架资源的任何站点列入允许列表。
- 允许允许任何依赖于 OpenShift 中使用的语言和框架的出站 URL。如需防火墙或代理上允许的推荐 URL 列表,请参阅 OpenShift 出站 URL。
1.7. 后续步骤
1.8. 其他资源
第 2 章 ROSA IAM 角色资源
Red Hat OpenShift Service on AWS (ROSA) Web UI 要求您在 AWS 帐户上具有特定权限,以创建信任关系,以便在 OpenShift Cluster Manager Hybrid Cloud Console 和 rosa 命令行界面(CLI)中提供最终用户体验。
此信任关系通过 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
无论您是使用 ROSA CLI (rosa)或 OpenShift Cluster Manager Web UI 管理集群,您必须使用 ROSA CLI 创建集群范围的角色,在 ROSA CLI 中称为 account-roles。这些帐户角色是第一个集群所必需的,这些角色可以在多个集群中使用。这些所需的帐户角色有:
-
Worker-Role -
support-Role -
installer-Role -
controlPlane-Role
角色创建不会请求 AWS 访问或 secret 密钥。AWS 安全令牌服务(STS)用作此工作流的基础。AWS STS 使用临时的、有有限权限的凭证来提供身份验证。
有关创建这些角色的更多信息,请参阅 帐户范围内的 IAM 角色和策略参考。
在 ROSA CLI 中,特定于集群的 Operator 角色(称为 operator-roles )获取执行集群操作所需的临时权限,如管理后端存储、入口和 registry。您创建的集群需要这些角色。这些所需的 Operator 角色有:
-
<cluster_name>-<hash>-openshift-cluster-csi-drivers-ebs-cloud-credentials -
<cluster_name>-<hash>-openshift-cloud-network-config-controller-credentials -
<cluster_name>-<hash>-openshift-machine-api-aws-cloud-credentials -
<cluster_name>-<hash>-openshift-cloud-credential-operator-cloud-credentials -
<cluster_name>-<hash>-openshift-image-registry-installer-cloud-credentials -
<cluster_name>-<hash>-openshift-ingress-operator-cloud-credentials
有关创建这些角色的更多信息,请参阅 特定于集群的 Operator IAM 角色参考。
2.1. 关于 ocm-role IAM 资源
您必须创建 ocm-role IAM 资源,以便红帽机构在 AWS (ROSA)集群上创建 Red Hat OpenShift Service。在链接到 AWS 的上下文中,红帽机构是 OpenShift Cluster Manager 中的单个用户。
ocm-role IAM 资源的一些注意事项:
-
每个红帽机构只能链接一个
ocm-roleIAM 角色,但每个 AWS 帐户可以拥有任意数量的ocm-roleIAM 角色。Web UI 要求一次只能链接其中一个角色。 -
红帽机构中的任何用户都可以创建并链接
ocm-roleIAM 资源。 只有 Red Hat 机构管理员才能取消链接
ocm-roleIAM 资源。这个限制是防止其他红帽机构成员干扰其他用户的接口功能。注意如果您创建了一个不是现有机构一部分的红帽帐户,则此帐户也是红帽机构管理员。
-
有关基本和 admin
ocm-roleIAM 资源的 AWS 权限策略列表,请参阅本节的附加资源中的"识别 OpenShift Cluster Manager 角色"。
使用 ROSA CLI (rosa),您可以在创建时链接 IAM 资源。
将 IAM 资源与 AWS 帐户链接"链接"或"关联"您的 IAM 资源意味着使用 ocm-role IAM 角色和 Red Hat OpenShift Cluster Manager AWS 角色创建一个 trust-policy。创建并链接您的 IAM 资源后,您会看到 AWS 中的 ocm-role IAM 资源与 arn:aws:iam::7333:role/RH-Managed-OpenShift-Installer 资源之间的信任关系。
在 Red Hat 机构管理员创建和链接 ocm-role IAM 资源后,所有机构成员可能都希望创建并链接自己的 user-role IAM 角色。此 IAM 资源只需要为每个用户创建并只连接一次。如果红帽机构中的其他用户已经创建并链接了 ocm-role IAM 资源,则需要确保您已创建并链接您自己的 user-role IAM 角色。
其他资源
2.1.1. 创建 ocm-role IAM 角色
您可以使用命令行界面(CLI)创建 ocm-role IAM 角色。
前提条件
- 您有一个 AWS 帐户。
- 在 OpenShift Cluster Manager 组织中具有红帽机构管理员权限。
- 您有安装 AWS 范围的角色所需的权限。
-
您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa。
流程
要使用基本权限创建 ocm-role IAM 角色,请运行以下命令:
$ rosa create ocm-role
要使用 admin 权限创建 ocm-role IAM 角色,请运行以下命令:
$ rosa create ocm-role --admin
此命令允许您通过指定特定属性来创建角色。以下示例输出显示选择了"自动模式",它允许 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 creation mode: auto 4 I: Creating role using 'arn:aws:iam::<ARN>:user/<UserName>' ? Create the 'ManagedOpenShift-OCM-Role-182' role? Yes 5 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 6 ? Link the 'arn:aws:iam::<ARN>:role/ManagedOpenShift-OCM-Role-182' role with organization '<AWS ARN'? Yes 7 I: Successfully linked role-arn 'arn:aws:iam::<ARN>:role/ManagedOpenShift-OCM-Role-182' with organization account '<AWS ARN>'
- 1
- 所有创建的 AWS 资源的前缀值。在本例中,
ManagedOpenShift会预先填充所有 AWS 资源。 - 2
- 如果您希望此角色具有额外的 admin 权限,请选择。注意
如果使用
--admin选项,则不会显示此提示。 - 3
- 用于设置权限边界的策略的 Amazon 资源名称 (ARN)。
- 4
- 选择如何创建 AWS 角色的方法。使用
auto时,ROSA CLI 生成并链接角色和策略。在auto模式中,您收到一些不同的提示来创建 AWS 角色。 - 5
- auto 方法询问您是否要使用您的前缀创建特定的
ocm-role。 - 6
- 确认您要将 IAM 角色与 OpenShift Cluster Manager 关联。
- 7
- 将创建的角色与 AWS 组织相关联。
2.2. 关于 user-role IAM 角色
您需要为每个 Web UI 用户创建一个用户角色 IAM 角色,以便这些用户能够创建 ROSA 集群。
您的 user-role IAM 角色的一些注意事项:
-
每个红帽用户帐户只需要一个
user-roleIAM 角色,但您的红帽机构可以有许多 IAM 资源。 -
红帽机构中的任何用户都可以创建并链接用户角色 IAM
角色。 -
每个 Red Hat 机构每个 AWS 帐户可以有很多用户角色 IAM
角色。 -
红帽使用
user-roleIAM 角色来识别用户。此 IAM 资源没有 AWS 帐户权限。 -
您的 AWS 帐户可以有多个
user-roleIAM 角色,但您必须将每个 IAM 角色链接到您的红帽机构中的每个用户。用户不能有多个链接的user-roleIAM 角色。
将 IAM 资源与 AWS 帐户链接"链接"或"关联"您的 IAM 资源意味着使用您的 用户角色 IAM 角色和 Red Hat OpenShift Cluster Manager AWS 角色创建一个 trust- policy。创建并连接此 IAM 资源后,您会看到 AWS 中的 user-role IAM 角色与 arn:aws:iam::710019948333:role/RH-Managed-OpenShift-Installer 资源之间的信任关系。
2.2.1. 创建 user-role IAM 角色
您可以使用命令行界面(CLI)创建 user-role IAM 角色。
前提条件
- 您有一个 AWS 帐户。
-
您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa。
流程
要使用基本权限创建
user-roleIAM 角色,请运行以下命令:$ rosa create user-role
此命令允许您通过指定特定属性来创建角色。以下示例输出显示选择了"自动模式",它允许 ROSA CLI (
rosa)创建 Operator 角色和策略。如需更多信息,请参阅附加资源中的"了解自动和手动部署模式"。
输出示例
I: Creating User role ? Role prefix: ManagedOpenShift 1 ? Permissions boundary ARN (optional): 2 ? Role creation mode: auto 3 I: Creating ocm user role using 'arn:aws:iam::2066:user' ? Create the 'ManagedOpenShift-User.osdocs-Role' role? Yes 4 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 5 I: Successfully linked role ARN 'arn:aws:iam::2066:role/ManagedOpenShift-User.osdocs-Role' with account '1AGE'
如果您在删除集群前取消链接或删除 user-role IAM 角色,则会阻止您删除集群。您必须创建或修改此角色才能继续删除过程。如需更多信息 ,请参阅修复无法删除的集群。
2.3. AWS 帐户关联
Red Hat OpenShift Service on AWS (ROSA)集群置备任务需要使用 Amazon Resource Name (ARN)将 ocm-role 和 user-role IAM 角色链接到 AWS 帐户。
ocm-role ARN 作为标签存储在您的红帽机构中,而 user-role ARN 则作为红帽用户帐户中的标签保存。红帽使用这些 ARN 标签来确认用户是有效的帐户拥有者,并可使用正确的权限来执行 AWS 帐户中的必要任务。
2.3.1. 链接 AWS 帐户
您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI rosa 将 AWS 帐户链接到现有的 IAM 角色。
前提条件
- 您有一个 AWS 帐户。
- 您可以使用 OpenShift Cluster Manager Hybrid Cloud Console 创建集群。
- 您有安装 AWS 范围的角色所需的权限。如需更多信息,请参阅本节的"附加资源"。
-
您已在安装主机上安装和配置了最新的 AWS (
aws) 和 ROSA (rosa) CLI。 您已创建了
ocm-role和user-roleIAM 角色,但还没有将它们链接到 AWS 帐户。您可以运行以下命令来检查您的 IAM 角色是否已链接:$ rosa list ocm-role
$ rosa list user-role
如果这两个角色的
Linked列中显示了Yes,您已将角色链接到 AWS 帐户。
流程
在 CLI 中,使用 Amazon Resource Name (ARN) 将
ocm-role资源链接到红帽机构:注意您必须具有红帽机构管理员权限才能运行
rosa link命令。将ocm-role资源与 AWS 帐户链接后,对机构的所有用户可见。$ rosa link ocm-role --role-arn <arn>
输出示例
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>'
在 CLI 中,使用您的 Amazon 资源名称 (ARN) 将您的
user-role资源链接到您的红帽用户帐户:$ rosa link user-role --role-arn <arn>
输出示例
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>'
2.3.2. 将多个 AWS 帐户与红帽机构相关联
您可以将多个 AWS 帐户与红帽机构相关联。通过关联多个帐户,您可以从您的红帽机构在 AWS (ROSA) 集群上创建 Red Hat OpenShift 服务。
使用此功能,您可以使用多个 AWS 配置集作为区域密集型环境在不同的 AWS 区域中创建集群。
前提条件
- 您有一个 AWS 帐户。
- 您可以使用 OpenShift Cluster Manager Hybrid Cloud Console 创建集群。
- 您有安装 AWS 范围的角色所需的权限。
-
您已在安装主机上安装和配置了最新的 AWS (
aws) 和 ROSA (rosa) CLI。 -
您已创建了
ocm-role和user-roleIAM 角色。
流程
要关联一个额外的 AWS 帐户,首先在本地 AWS 配置中创建配置集。然后,通过在其他 AWS 帐户中创建 ocm-role、用户帐户角色,将该帐户与您的红帽机构相关联。
要在附加区域中创建角色,在运行 rosa create 命令时指定 --profile <aws-profile> 参数,将 <aws_profile> 替换为附加帐户配置集名称:
在创建 OpenShift Cluster Manager 角色时指定 AWS 帐户配置集:
$ rosa create --profile <aws_profile> ocm-role
在创建用户角色时指定 AWS 帐户配置集:
$ rosa create --profile <aws_profile> user-role
在创建帐户角色时指定 AWS 帐户配置集:
$ rosa create --profile <aws_profile> account-roles
如果没有指定配置集,则使用默认 AWS 配置集。
2.4. 其他资源
- 请参阅 IAM 角色故障排除
- 如需了解创建 集群所需的 IAM 角色列表,请参阅 帐户范围的 IAM 角色和策略引用。
第 3 章 限制和可扩展性
本文档详细描述了在 AWS (ROSA) 集群上为 Red Hat OpenShift Service 测试的集群最大值,以及用于测试最大测试环境和配置的信息。另外还提供了有关 control plane 和基础架构节点大小和扩展的信息。
3.1. ROSA 测试的集群最大值
在规划 Red Hat OpenShift Service on AWS (ROSA)集群安装时,请考虑以下测试的对象最大值。表指定(ROSA)集群中每个测试类型的最大限值。
这些指南基于多个可用区配置中 102 计算(也称为 worker)节点的集群。对于较小的集群,最大值限制会较低。
所有测试中使用的 OpenShift Container Platform 版本都是 OCP 4.8.0。
表 3.1. 测试的集群最大值
| 最大类型 | 4.8 测试的最大值 |
|---|---|
| 节点数 | 102 |
| pod 数量 [1] | 20,400 |
| 每个节点的 pod 数量 | 250 |
| 每个内核的 pod 数量 | 没有默认值 |
| 命名空间数量 [2] | 3,400 |
| 每个命名空间的 pod 数量 [3] | 20,400 |
| 服务数 [4] | 10,000 |
| 每个命名空间的服务数 | 10,000 |
| 每个服务中的后端数 | 10,000 |
| 每个命名空间的部署数量 [3] | 1,000 |
- 这里的 pod 数量是 test pod 的数量。实际的 pod 数量取决于应用程序的内存、CPU 和存储要求。
- 当有大量活跃的项目时,如果键空间增长过大并超过空间配额,etcd 的性能将会受到影响。强烈建议您定期维护 etcd 存储(包括整理碎片)来释放 etcd 存储。
- 系统中有一些控制循环,它们必须对给定命名空间中的所有对象进行迭代,以作为对一些状态更改的响应。在单一命名空间中有大量给定类型的对象可使这些循环的运行成本变高,并降低对给定状态变化的处理速度。限制假设系统有足够的 CPU 、内存和磁盘来满足应用程序的要求。
- 每个服务端口和每个服务后端在 iptables 中都有对应条目。给定服务的后端数量会影响端点对象的大小,这会影响到整个系统发送的数据大小。
在 OpenShift Container Platform 4.8 中,与以前的 OpenShift Container Platform 版本相比,系统会保留半个 CPU 内核(500 millicore)。
3.2. OpenShift Container Platform 测试环境和配置
下表列出了为 AWS 云平台测试集群最大值的 OpenShift Container Platform 环境和配置。
| 节点 | 类型 | vCPU | RAM(GiB) | 磁盘类型 | 磁盘大小(GiB)/IOPS | 数量 | 区域 |
|---|---|---|---|---|---|---|---|
| control plane/etcd [1] | m5.4xlarge | 16 | 64 | gp3 | 350 / 1,000 | 3 | us-west-2 |
| 基础架构节点 [2] | r5.2xlarge | 8 | 64 | gp3 | 300 / 900 | 3 | us-west-2 |
| Workload [3] | m5.2xlarge | 8 | 32 | gp3 | 350 / 900 | 3 | us-west-2 |
| Compute 节点 | m5.2xlarge | 8 | 32 | gp3 | 350 / 900 | 102 | us-west-2 |
- io1 磁盘用于 4.10 之前的版本中的 control plane/etcd 节点。
- 基础架构节点用于托管监控组件,因为 Prometheus 可以根据使用情况模式声明大量内存。
- 工作负载节点专用于运行性能和可扩展工作负载生成器。
更大的集群大小和更高的对象数量可能可以被访问。但是,基础架构节点的大小限制 Prometheus 可用的内存量。在创建、修改或删除对象时,Prometheus 会将指标存储在其内存中,时长大约 3 小时,然后再在磁盘上保留指标。如果创建、修改或删除对象的速率过高,Prometheus 可能会因为缺少内存资源而造成问题问题。
3.3. control plane 和基础架构节点大小和扩展
当您在 AWS (ROSA)集群上安装 Red Hat OpenShift Service 时,control plane 和基础架构节点的大小由计算节点计数自动决定。
如果您在安装后更改了集群中计算节点的数量,Red Hat Site Reliability Engineering (SRE) 团队会根据需要扩展 control plane 和基础架构节点,以便保持集群稳定性。
3.3.1. 安装过程中的节点大小
在安装过程中,control plane 和基础架构节点的大小会被动态计算。大小计算基于集群中计算节点的数量。
下表列出了在安装过程中应用的 control plane 和基础架构节点大小。
| 计算节点数量 | control plane 大小 | 基础架构节点大小 |
|---|---|---|
| 1 到 25 | m5.2xlarge | r5.xlarge |
| 26 到 100 | m5.4xlarge | r5.2xlarge |
| 101 到 180 [1] | m5.8xlarge | r5.4xlarge |
- ROSA 上的最大计算节点数量为 180。
3.3.2. 安装后节点扩展
如果您在安装后更改计算节点数量,则 control plane 和基础架构节点会根据需要由 Red Hat Site Reliability engineering (SRE) 团队扩展。节点已扩展以保持平台稳定性。
control plane 和基础架构节点安装后扩展要求会根据具体情况进行评估。考虑使用节点资源消耗和接收的警报。
control plane 节点重新定义警报大小的规则
当出现以下情况之一时,会为集群中的 control plane 节点触发警报大小:
- 每个 control plane 节点都小于 16GiB RAM,有超过 25 但少于 101 个计算节点。
每个 control plane 节点都小于 32GiB RAM,且超过 100 个计算节点。
注意ROSA 上的最大计算节点数量为 180。
基础架构节点大小警报的规则
当出现以下情况之一时,会为集群中的基础架构节点触发重新定义警报的大小:
- 每个基础架构节点小于 16GiB RAM 或少于 5 个 CPU,且有超过 25 个且少于 101 个计算节点。
每个基础架构节点小于 32GiB RAM,或少于 9 个 CPU,且多于 100 个计算节点。
注意ROSA 上的最大计算节点数量为 180。
SRE 团队可能会因为其他原因扩展 control plane 和基础架构节点,例如管理节点上资源消耗的增加。
应用缩放时,通过服务日志条目通知客户。有关服务日志的更多信息,请参阅 访问 ROSA 集群的服务日志。
3.3.3. 较大的集群的大小注意事项
对于较大的集群,基础架构节点大小可能会严重影响可扩展性。很多因素会影响指定的阈值,包括 etcd 版本或者存储数据格式。
超过这些限制并不一定意味着集群将失败。在大多数情况下,超过这些限制会降低整体性能。
3.4. 后续步骤
3.5. 其他资源
第 4 章 规划您的环境
4.1. 根据经过测试的集群限制规划您的环境
本文档论述了如何根据经过测试的集群最大值规划 Red Hat OpenShift Service on AWS 环境。
在节点中过度订阅物理资源会影响在 pod 放置过程中对 Kubernetes 调度程序的资源保证。了解可以采取什么措施避免内存交换。
某些限制只在单一维度中扩展。当很多对象在集群中运行时,它们会有所不同。
本文档中给出的数字基于红帽测试方法、设置、配置和调优。这些数字会根据您自己的设置和环境而有所不同。
在规划您的环境时,使用以下公式决定每个节点应该有多少个 pod:
required pods per cluster / pods per node = total number of nodes needed
每个节点上的 Pod 数量做多为 250。而在某个节点中运行的 pod 的具体数量取决于应用程序本身。参照根据应用程序要求规划您的环境的内容,考虑应用程序的内存、CPU 和存储要求。
示例情境
如果想把集群的规模限制在没有集群可以有 2200 个 pod,则需要至少有九个节点,假设每个节点最多有 250 个 pod:
2200 / 250 = 8.8
如果将节点数量增加到 20,那么 pod 的分布情况将变为每个节点有 110 个 pod:
2200 / 20 = 110
其中:
required pods per cluster / total number of nodes = expected pods per node
4.2. 根据应用程序要求规划您的环境
本文档论述了如何根据应用程序要求规划 Red Hat OpenShift Service on AWS 环境。
考虑应用程序环境示例:
| 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 存储。
根据您的具体情况,节点的实例大小可以被增大或降低。在节点上通常会使用资源过度分配。在这个部署场景中,您可以选择运行多个额外的较小节点,或数量更少的较大节点来提供同样数量的资源。在做出决定前应考虑一些因素,如操作的灵活性以及每个实例的成本。
| 节点类型 | 数量 | CPU | RAM (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
可在命名空间中运行的应用程序 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 将开始失败。
第 5 章 所需的 AWS 服务配额
查看此列表,其中列出了在 AWS 集群上运行 Red Hat OpenShift Service on AWS 集群所需的服务配额。
5.1. 所需的 AWS 服务配额
下表描述了创建和运行 Red Hat OpenShift Service on AWS 集群所需的 AWS 服务配额和级别。
AWS SDK 允许 ROSA 检查配额,但 AWS SDK 计算不会考虑您现有的用法。因此,配额检查可能会在 AWS SDK 中通过,但集群创建过程可能会失败。要解决这个问题,请提高配额。
如果您需要修改或增加特定配额,请参阅 Amazon 文档中有关请求配额 增加的内容。大型配额请求被提交到 Amazon 支持以进行审核,需要一些时间被批准。如果您的配额请求是紧急的,请联系 AWS 支持。
对于 On-Demand Standard (A、C、D、H、I、M、T、Z) Amazon EC2 实例,创建 ROSA 集群需要 100 个 vCPU 或更高版本。要请求提高配额,请在 AWS 控制台中打开 Service Quotas 控制台。
表 5.1. ROSA 需要的服务配额
| 配额名称 | 服务代码 | 配额代码 | 默认值 | 最低要求 | 描述 |
|---|---|---|---|---|---|
| 运行内部标准(A、C、D、H、I、M、R、T、Z)实例 | ec2 | L-1216C47A | 100 | 100 | 分配给 Running On-Demand Standard (A, C, D, H, I, M, R, T, Z)实例的最大 vCPU 数量。 默认值 5 个 vCPU 不足来创建 ROSA 集群。ROSA 的最低要求需要 100 个 vCPU 为集群创建。 |
| 通用目的 SSD (gp2)卷存储以 TiB 为单位 | ebs | L-D18FCD1D | 50 | 300 | 此区域中可以在跨 General Purpose SSD (gp2) 卷进行置备的最大聚合存储量(以 TiB 为单位)。 |
| 通用目的 SSD (gp3)卷存储以 TiB 为单位 | ebs | L-7A658B76 | 50 | 300 | 此区域中可以在跨 General Purpose SSD (gp3) 卷进行置备的最大聚合存储量(以 TiB 为单位)。 300 TiB 存储是最佳性能所需的最低容量。 |
| 以 TiB 为单位的置备 IOPS SSD (io1)卷存储 | ebs | L-FD252861 | 50 | 300 | 此区域中可以在跨 Provisioned IOPS SSD (io1) 卷进行置备的最大聚合存储量(以 TiB 为单位)。 300 TiB 存储是最佳性能所需的最低容量。 |
表 5.2. 常规 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 | 每个区域的最大网络接口数量。 |
| 每个区域的快照 | ebs | L-309BACF6 | 10,000 | 10,000 | 每个区域的最大快照数 |
| 置备 IOPS SSD (Io1)卷的 IOPS | ebs | L-B3A130E6 | 300,000 | 300,000 | 此区域中可在置备 IOPS SDD (io1)卷之间置备的 IOPS 数量上限。 |
| 每个区域的应用程序负载均衡 | elasticloadbalancing | L-53DA6B97 | 50 | 50 | |
| 每个区域的 Classic Load Balancers | elasticloadbalancing | L-E9E9831D | 20 | 20 |
5.1.1. 其他资源
5.2. 后续步骤
第 6 章 为使用 STS 设置环境
满足 AWS 的先决条件后,设置您的环境并安装 Red Hat OpenShift Service on AWS (ROSA)。
AWS 安全令牌服务 (STS) 是推荐的凭证模式,用于安装 Red Hat OpenShift Service on AWS (ROSA) 集群并与之交互,因为它提供了增强的安全性。
6.1. 为 STS 设置环境
在创建使用 AWS 安全令牌服务 (STS) 的 Red Hat OpenShift Service on AWS (ROSA) 集群前,请完成以下步骤来设置您的环境。
前提条件
- 检查并完成部署先决条件和策略。
- 如果还没有 红帽帐户,请创建一个。然后,检查您的电子邮件中的验证链接。您需要这些凭证来安装 ROSA。
流程
登录到您要使用的 Amazon Web Services (AWS)帐户。
建议您使用专用 AWS 帐户来运行生产环境集群。如果使用 AWS Organizations,您可以使用您所在机构的 AWS 帐户或创建一个新账户。
如果您使用 AWS 机构,且您需要有一个服务控制策略 (SCP) 应用于您计划使用的 AWS 帐户,则这些策略必须比集群所需的角色和策略更严格。
在 AWS 管理控制台中启用 ROSA 服务。
安装和配置 AWS CLI。
按照 AWS 命令行界面文档为您的操作系统 安装和配置 AWS CLI。
在
.aws/credentials文件中指定正确的aws_access_key_id和aws_secret_access_key。请参阅 AWS 文档中的 AWS 配置基础知识。设置默认 AWS 区域。
注意您可以使用环境变量设置默认的 AWS 区域。
ROSA 服务以以下优先级顺序评估区域:
-
使用
--region标志运行rosa命令时指定的区域。 -
AWS_DEFAULT_REGION环境变量中设置的区域。请参阅 AWS 文档中的配置 AWS CLI 的环境变量。 - AWS 配置文件中设置的默认区域。请参阅 AWS 文档中的使用 aws 配置的快速配置。
-
使用
可选:使用名为 profile 的 AWS CLI 设置和凭证配置 AWS CLI 设置和凭证。
ROSA按照以下优先级顺序评估 AWS 命名配置集:-
使用
--profile标志运行rosa命令时指定的配置集。 -
在
AWS_PROFILE环境变量中设置的配置集。请参阅 AWS 文档中的 名称配置集。
-
使用
运行以下命令查询 AWS API 来验证 AWS CLI 是否已正确安装和配置:
$ aws sts get-caller-identity
安装最新版本的 ROSA CLI (
rosa)。- 为您的操作系统下载 ROSA CLI 的最新版本。
可选:命名您下载到
rosa的文件,并使文件可执行。本文档使用rosa参考可执行文件。$ chmod +x rosa
可选:在路径中添加
rosa。$ mv rosa /usr/local/bin/rosa
输入以下命令验证您的安装:
$ rosa
输出示例
Command line tool for Red Hat OpenShift Service on AWS. For further documentation visit https://access.redhat.com/documentation/zh-cn/red_hat_openshift_service_on_aws Usage: rosa [command] Available Commands: completion Generates completion scripts create Create a resource from stdin delete Delete a specific resource describe Show details of a specific resource download Download necessary tools for using your cluster edit Edit a specific resource grant Grant role to a specific resource help Help about any command init Applies templates to support Red Hat OpenShift Service on AWS install Installs a resource into a cluster link Link a ocm/user role from stdin list List all resources of a specific type login Log in to your Red Hat account logout Log out logs Show installation or uninstallation logs for a cluster revoke Revoke role from a specific resource uninstall Uninstalls a resource from a cluster unlink UnLink a ocm/user role from stdin upgrade Upgrade a resource verify Verify resources are configured correctly for cluster install version Prints the version of the tool whoami Displays user account information Flags: --color string Surround certain characters with escape sequences to display them in color on the terminal. Allowed options are [auto never always] (default "auto") --debug Enable debug mode. -h, --help help for rosa Use "rosa [command] --help" for more information about a command.为 ROSA CLI 生成命令完成脚本。以下示例为 Linux 机器生成 Bash 完成脚本:
$ rosa completion bash | sudo tee /etc/bash_completion.d/rosa
提供脚本,以从现有终端中启用
rosa命令完成。以下示例在 Linux 机器上提供rosa的 Bash 完成脚本:$ source /etc/bash_completion.d/rosa
使用 ROSA CLI 登录您的红帽帐户。
输入以下命令。
$ rosa login
将
<my_offline_access_token> 替换为您的令牌。输出示例
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: <my-offline-access-token>
输出持续示例
I: Logged in as '<rh-rosa-user>' on 'https://api.openshift.com'
验证您的 AWS 帐户是否有部署 ROSA 集群所需的配额。
$ rosa verify quota [--region=<aws_region>]
输出示例
I: Validating AWS quota... I: AWS quota ok
注意有时,AWS 配额因区域而异。如果您收到任何错误,请尝试不同的区域。
如果需要提高配额,进入 AWS 管理控制台,并为失败的服务请求配额增加。
在配额检查成功后,继续下一步。
为集群部署准备 AWS 帐户:
运行以下命令,以验证您的红帽和 AWS 凭证是否已正确设置。检查 AWS 帐户 ID、默认区域和 ARN 是否与您所期望的内容匹配。您可以安全地忽略以 OpenShift Cluster Manager 开始的行。
$ rosa whoami
输出示例
AWS Account ID: 000000000000 AWS Default Region: us-east-1 AWS ARN: arn:aws:iam::000000000000:user/hello OCM API: https://api.openshift.com OCM Account ID: 1DzGIdIhqEWyt8UUXQhSoWaaaaa OCM Account Name: Your Name OCM Account Username: you@domain.com OCM Account Email: you@domain.com OCM Organization ID: 1HopHfA2hcmhup5gCr2uH5aaaaa OCM Organization Name: Red Hat OCM Organization External ID: 0000000
通过 ROSA (
rosa) CLI 安装 OpenShift CLI (oc)、版本 4.7.9 或更高版本。输入这个命令下载
ocCLI 的最新版本:$ rosa download openshift-client
-
下载
ocCLI 后,解压它并将其添加到您的路径中。 输入这个命令来验证
ocCLI 是否已正确安装:$ rosa verify openshift-client
创建角色
完成这些步骤后,就可以设置 IAM 和 OIDC 访问的角色。