IBM Cloud Docs
使用 Terraform 为 Red Hat OpenShift on IBM Cloud 分配集群访问权

使用 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 资源所需的 访问权

  1. 遵循 Terraform on IBM Cloud® 入门教程 以安装 Terraform CLI 并为 Terraform 配置 IBM Cloud® 提供程序插件。 该插件对用于供应,更新或删除 Red Hat OpenShift 服务实例和资源的 IBM Cloud® API 进行抽象。

  2. 遵循教程以 使用 Terraform 创建单专区和多专区集群

  3. 可选: 使用 Terraform 为 Red Hat OpenShift 集群 配置 IAM 用户访问策略。

分配 IAM 用户对 Red Hat OpenShift 集群的访问权

您可以使用 Terraform 为 IBM Cloud 帐户中的 Red Hat OpenShift 集群分配 IAM 用户访问权。 有关将 Terraform 与 IAM 策略配合使用的更多信息,请参阅 IBM Cloud 提供者 Terraform 文档

  1. 在 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"
        }
    }
    
  2. 初始化 Terraform CLI。

    terraform init
    
  3. 创建 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.
    
  4. 应用配置文件以创建访问策略。 可能需要几秒钟才能完成。 在输出中,记下用户的 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]
    
  5. 通过运行命令并搜索先前记录的策略标识,验证是否已成功创建 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