使用 Terraform 为 Red Hat OpenShift on IBM Cloud 分配集群访问权
IBM Cloud® 上的 Terraform 可实现 IBM Cloud 服务的可预测和一致调配,因此您可以按照基础设施即代码 ( IaC ) 原则快速构建复杂的多层云环境。 与使用 IBM Cloud CLI 或 API 和 SDK 类似,您可以通过 HashiCorp 配置语言 (HCL) 自动配置、更新和删除 Red Hat OpenShift on IBM Cloud 资源。
正在寻找 IBM Cloud® 上的 Terraform 托管解决方案? 试用 IBM Cloud® Schematics. 通过 Schematics,您可以使用熟悉的 Terraform 脚本语言,但不必担心设置和维护 Terraform 命令行或 IBM Cloud® Provider 插件。Schematics 还提供预定义的 Terraform 模板,您可以从 IBM Cloud® 目录中轻松安装。
使用 Terraform 创建 Red Hat OpenShift 集群
在使用 Terraform 分配群集访问权限之前,请按照以下步骤使用 Terraform 创建 Red Hat OpenShift 群集。 如果您已有集群,请参阅 分配 IAM 用户访问权。
开始之前,请确保您具有创建和使用 Red Hat OpenShift on IBM Cloud 资源所需的 访问权。
-
遵循 Terraform on IBM Cloud® 入门教程 以安装 Terraform CLI 并为 Terraform 配置 IBM Cloud® 提供程序插件。 该插件对用于供应,更新或删除 Red Hat OpenShift 服务实例和资源的 IBM Cloud® API 进行抽象。
-
遵循教程以 使用 Terraform 创建单专区和多专区集群。
-
可选: 使用 Terraform 为 Red Hat OpenShift 集群 配置 IAM 用户访问策略。
分配 IAM 用户对 Red Hat OpenShift 集群的访问权
可以使用 Terraform 为 IBM Cloud 账户中的 Red Hat OpenShift 集群分配 IAM 用户访问权限。 有关在 IAM 策略中使用 Terraform 的更多信息,请参阅 IBM Cloud 提供商 Terraform 文档。
-
在 Terraform 目录中,创建名为
iam.tf的配置文件。 在iam.tf文件中,添加配置参数,以使用 HashiCorp 配置语言 (HCL) 为 Red Hat OpenShift 集群创建 IAM 用户访问策略。 以下示例配置将创建ibm_iam_user_policy,然后将策略分配给指定的集群。 有关更多信息,请参阅 Terraform 文档。resource "ibm_iam_user_policy" "cluster" { ibm_id = "<ibm_id>" roles = ["<access_role_1>, <access_role_2>"] resources { service = "containers-kubernetes" resource_instance_id = "<cluster_name>" } }使用 Terraform 配置 IAM 访问策略 资源 描述 ibm_id要为其创建 IAM 访问策略的用户的 IBM Cloud 标识或电子邮件地址。 roles要为用户分配的访问角色的逗号分隔列表。 service访问策略适用的服务类型。 针对 Red Hat OpenShift 集群输入 "openshift"。 要获取适用服务类型的完整列表,请运行ibmcloud oc catalog service-marketplace。resource_instance_id集群的标识或名称。 配置文件示例:
resource "ibm_iam_user_policy" "test_policy" { ibm_id = "ibm_id@ibm.com" roles = ["Viewer", "Editor", "Administrator"] resources { service = "containers-kubernetes" resource_instance_id = "my-cluster" } } -
初始化 Terraform CLI。
terraform init -
创建 Terraform 执行计划并复审输出。 Terraform 执行计划总结了为在帐户中创建 Red Hat OpenShift 集群而运行的所有操作。 请注意输出的
Plan部分。 示例输出状态为Plan: 1 to add, 0 to change, 0 to destroy,因为配置文件会创建一个 IAM 用户访问策略。Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # ibm_iam_user_policy.test_policy will be created + resource "ibm_iam_user_policy" "test_policy" { + account_management = false + ibm_id = "ibm_id@ibm.com" + id = (known after apply) + roles = [ + "Viewer", + "Editor", + "Administrator", ] + resources { + service = "containers-kubernetes" } } Plan: 1 to add, 0 to change, 0 to destroy. -
应用配置文件以创建访问策略。 可能需要几秒钟才能完成。 在输出中,记下用户的 IBM 电子邮件后的策略标识号。
terraform apply示例输出:
ibm_iam_user_policy.test_policy: Creating... ibm_iam_user_policy.test_policy: Creation complete after 2s [id=ibm_id@ibm.com/f81b161f-e1db-4084-8b28-cfcbe88fec72] -
通过运行命令并搜索先前记录的策略标识,验证是否已成功创建 IAM 访问策略。
ibmcloud iam user-policies ibm_id@ibm.com示例输出:
Policy ID: f81b161f-e1db-4084-8b28-cfcbe88fec72 Roles: Viewer, Editor, Administrator Resources: Service Name containers-kubernetes Service Instance my-cluster