使用 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® 提供程序插件。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 用户访问权。 有关将 Terraform 与 IAM 策略配合使用的更多信息,请参阅 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