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

  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 用户访问权限。 有关在 IAM 策略中使用 Terraform 的更多信息,请参阅 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