第 3 章 使用 Terraform 创建 ROSA 集群
使用使用默认集群选项配置的 Terraform 集群模板快速创建 Red Hat OpenShift Service on AWS 集群。
以下描述的集群创建过程使用 Terraform 配置来使用以下资源准备 Red Hat OpenShift Service on AWS 集群:
-
带有受管
oidc-config
配置的 OIDC 供应商 - 带有关联的 AWS Managed Red Hat OpenShift Service on AWS 策略的先决条件 IAM Operator 角色
- 带有关联的 AWS Managed Red Hat OpenShift Service on AWS 策略的 IAM 帐户角色
- 在 AWS 集群上创建 Red Hat OpenShift Service 所需的所有其他 AWS 资源
3.1.1. Terraform 概述 复制链接链接已复制到粘贴板!
Terraform 是一个基础架构即代码工具,提供一次配置资源并根据需要复制这些资源的方法。Terraform 使用声明性语言完成创建任务。您可以声明基础架构资源的最终状态,Terraform 会根据您的规格创建这些资源。
先决条件
要在 Terraform 配置中使用 Red Hat Cloud Services 供应商,您必须满足以下先决条件:
- 已安装 ROSA CLI 工具。
- 您有离线的 Red Hat OpenShift Cluster Manager 令牌。
- 已安装 Terraform 版本 1.4.6 或更新版本。
您已创建了 AWS 帐户范围的 IAM 角色。
特定的帐户范围的 IAM 角色和策略提供 Red Hat OpenShift Service on AWS 支持、安装、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. 默认集群规格概述 复制链接链接已复制到粘贴板!
您可以使用默认安装选项快速创建 Red Hat OpenShift Service on AWS 集群。
以下概述描述了默认集群规格。
组件 | 默认规格 |
---|---|
帐户和角色 |
|
集群设置 |
|
Compute 节点机器池 |
|
网络配置 |
|
无类别域间路由 (CIDR) 范围 |
|
集群角色和策略 |
|
存储 |
|
集群更新策略 |
|
以下概述的集群创建过程演示了如何使用 Terraform 创建帐户范围的 IAM 角色和带有受管 OIDC 配置的 Red Hat OpenShift Service on AWS 集群。
3.1.3.1. 为 Terraform 准备您的环境 复制链接链接已复制到粘贴板!
在使用 Terraform 在 AWS 集群上创建 Red Hat OpenShift Service 前,您需要导出 离线 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。
创建 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
才能继续或取消:输出示例
Plan: 63 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.
Plan: 63 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您输入
yes
,您的 Terraform 计划将启动,创建 AWS 帐户角色、Operator 角色和 Red Hat OpenShift Service on AWS 集群。
验证
运行以下命令验证集群是否已创建:
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 Hosted CP
ID NAME STATE TOPOLOGY 27c3snjsupa9obua74ba8se5kcj11269 rosa-tf-demo ready Hosted CP
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 输出示例
I: Fetching account roles ROLE NAME ROLE TYPE ROLE ARN OPENSHIFT VERSION AWS Managed ROSA-demo-Installer-Role Installer arn:aws:iam::<ID>:role/ROSA-demo-Installer-Role 4.14 No ROSA-demo-Support-Role Support arn:aws:iam::<ID>:role/ROSA-demo-Support-Role 4.14 No ROSA-demo-Worker-Role Worker arn:aws:iam::<ID>:role/ROSA-demo-Worker-Role 4.14 No
I: Fetching account roles ROLE NAME ROLE TYPE ROLE ARN OPENSHIFT VERSION AWS Managed ROSA-demo-Installer-Role Installer arn:aws:iam::<ID>:role/ROSA-demo-Installer-Role 4.14 No ROSA-demo-Support-Role Support arn:aws:iam::<ID>:role/ROSA-demo-Support-Role 4.14 No ROSA-demo-Worker-Role Worker arn:aws:iam::<ID>:role/ROSA-demo-Worker-Role 4.14 No
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 8
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE rosa-demo 8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 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