第 3 章 使用 Terraform 创建 ROSA (经典架构)集群
3.1. 使用 Terraform 创建默认 ROSA (经典架构)集群 复制链接链接已复制到粘贴板!
使用使用默认集群选项配置的 Terraform 集群模板快速创建 {rosa-classic-first} 集群。
以下描述的集群创建过程使用 Terraform 配置来准备带有以下资源的 {rosa-classic} AWS 安全令牌服务(STS)集群:
-
带有受管
oidc-config
配置的 OIDC 供应商 - 带有关联的 AWS Managed ROSA 策略的先决条件 IAM Operator 角色
- 带有关联的 AWS Managed ROSA 策略的 IAM 帐户角色
- 创建使用 STS 集群的 ROSA 所需的所有其他 AWS 资源
3.1.1. Terraform 概述 复制链接链接已复制到粘贴板!
Terraform 是一个基础架构即代码工具,提供一次配置资源并根据需要复制这些资源的方法。Terraform 使用声明性语言完成创建任务。您可以声明基础架构资源的最终状态,Terraform 会根据您的规格创建这些资源。
前提条件
要在 Terraform 配置中使用 Red Hat Cloud Services 供应商,您必须满足以下条件:
- 您已在 AWS (ROSA)命令行界面(CLI)工具上安装了 Red Hat OpenShift Service。
- 您有离线的 Red Hat OpenShift Cluster Manager 令牌。
- 已安装 Terraform 版本 1.4.6 或更新版本。
您已创建了 AWS 帐户范围的 IAM 角色。
特定的帐户范围的 IAM 角色和策略提供 ROSA 支持、安装、control plane 和计算功能所需的 STS 权限。这包括集群范围的 Operator 策略。如需有关 AWS 帐户角色的更多信息,请参阅附加资源。
- 您有一个 AWS 帐户 和相关凭证,供您创建资源。为 AWS 供应商配置了凭证。请参阅 AWS Terraform 供应商文档中的 身份验证和 配置部分。
您至少在 AWS IAM 角色策略中具有以下权限,其运行 Terraform。在 AWS 控制台中检查这些权限。
例 3.1. Terraform 的最低 AWS 权限
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 Terraform 时的注意事项
通常,使用 Terraform 管理云资源应按照预期完成任何更改,以便使用 Terraform 方法进行任何更改。在使用 Terraform 之外的工具(如 AWS 控制台或红帽控制台)时,请小心修改 Terraform 创建的云资源。使用 Terraform 以外的工具来管理已经由 Terraform 管理的云资源,从您声明的 Terraform 配置中引入配置偏移。
例如,如果您使用 Red Hat Hybrid Cloud Console 升级 Terraform 创建的集群,则需要在应用任何受影响的配置更改前协调 Terraform 状态。如需更多信息,请参阅 HashiCorp Developer 文档中的管理 Terraform 状态的资源。
3.1.2. 默认集群规格概述 复制链接链接已复制到粘贴板!
组件 | 默认规格 |
---|---|
帐户和角色 |
|
集群设置 |
|
control plane 节点配置 |
|
Compute 节点机器池 |
|
网络配置 |
|
无类别域间路由 (CIDR) 范围 |
|
集群角色和策略 |
|
存储 |
|
集群更新策略 |
|
3.1.3. 使用 Terraform 创建默认的 {rosa-classic} 集群 复制链接链接已复制到粘贴板!
以下概述的集群创建过程演示了如何使用 Terraform 创建您的帐户范围的 IAM 角色和带有受管 OIDC 配置的 {rosa-classic} 集群。
3.1.3.1. 为 Terraform 准备您的环境 复制链接链接已复制到粘贴板!
在使用 Terraform 创建 ROSA (经典)集群前,您需要导出 离线 Red Hat OpenShift Cluster Manager 令牌。
流程
可选: 因为在安装过程中在当前目录中创建 Terraform 文件,所以您可以创建一个新的目录来存储这些文件并导航到其中:
mkdir terraform-cluster && cd terraform-cluster
$ mkdir terraform-cluster && cd terraform-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用 离线 Red Hat OpenShift Cluster Manager 令牌 向您的帐户授予权限。
运行以下命令复制离线令牌,并将令牌设置为环境变量:
export RHCS_TOKEN=<your_offline_token>
$ export RHCS_TOKEN=<your_offline_token>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此环境变量会在每个会话的末尾重置,如重启计算机或关闭终端。
验证
导出令牌后,运行以下命令来验证值:
echo $RHCS_TOKEN
$ echo $RHCS_TOKEN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3.2. 在本地创建 Terraform 文件 复制链接链接已复制到粘贴板!
设置 离线 Red Hat OpenShift Cluster Manager 令牌 后,您需要在本地创建 Terraform 文件以构建集群。您可以使用以下代码模板创建这些文件。
流程
运行以下命令来创建
main.tf
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:通过取消注释适当的参数并编辑其值,在集群创建过程中创建管理员用户。
运行以下命令来创建
variables.tf
文件:注意在运行该命令 以构建 集群前复制并编辑此文件。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
vpc.tf
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您已准备好启动 Terraform。
3.1.3.3. 使用 Terraform 创建 ROSA 集群 复制链接链接已复制到粘贴板!
创建 Terraform 文件后,您必须启动 Terraform 以提供所有所需的依赖项。然后应用 Terraform 计划。
不要修改 Terraform 状态文件。如需更多信息,请参阅使用 Terraform 时的注意事项
流程
将 Terraform 设置为根据您的 Terraform 文件创建资源,运行以下命令:
terraform init
$ terraform init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选 :运行以下命令来验证您复制的 Terraform 是否正确:
terraform validate
$ terraform validate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Success! The configuration is valid.
Success! The configuration is valid.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用 Terraform 创建集群:
terraform apply
$ terraform apply
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Terraform 界面需要两个问题来创建集群,如下所示:
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当 Terraform 界面列出要创建或修改的资源并提示确认时,输入
yes
才能继续或取消:输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果输入
yes
,您的 Terraform 计划将启动,创建 AWS 帐户角色、Operator 角色和 ROSA Classic 集群。
验证
运行以下命令验证集群是否已创建:
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示集群的 ID、名称和状态的输出示例
ID NAME STATE TOPOLOGY 27c3snjsupa9obua74ba8se5kcj11269 rosa-tf-demo ready Classic (STS)
ID NAME STATE TOPOLOGY 27c3snjsupa9obua74ba8se5kcj11269 rosa-tf-demo ready Classic (STS)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证您的帐户角色是否已创建:
rosa list account-roles
$ rosa list account-roles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证您的 Operator 角色是否已创建:
rosa list operator-roles
$ rosa list operator-roles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示 Terraform 创建的 Operator 角色的输出示例
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE rosa-demo 6
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE rosa-demo 6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3.4. 使用 Terraform 删除 ROSA 集群 复制链接链接已复制到粘贴板!
使用 terraform destroy
命令删除通过 terraform apply
命令创建的所有资源。
在销毁资源前,不要修改 Terraform .tf
文件。这些变量与要删除的资源匹配。
流程
在运行
terraform apply
命令创建集群的目录中,运行以下命令删除集群:terraform destroy
$ terraform destroy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Terraform 接口提示您输入两个变量。它们应与创建集群时提供的答案匹配:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入
yes
以启动角色和集群删除:输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证集群是否已销毁:
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 没有显示集群的输出示例
I: No clusters available
I: No clusters available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证帐户角色是否已销毁:
rosa list account-roles
$ rosa list account-roles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 没有显示 Terraform 创建帐户角色的输出示例
I: Fetching account roles I: No account roles available
I: Fetching account roles I: No account roles available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 Operator 角色是否已销毁:
rosa list operator-roles
$ rosa list operator-roles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示没有 Terraform 创建的 Operator 角色的示例
I: Fetching operator roles I: No operator roles available
I: Fetching operator roles I: No operator roles available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow