Red Hat OpenShift on IBM Cloud の Terraform を使用したクラスター・アクセス権限の割り当て

Terraform on IBM Cloud® は、IBM Cloud サービスの予測性の高い安定したプロビジョニングを可能にして、Infrastructure as Code (IaC) の原則に従って高度なマルチレイヤ―・クラウド環境を高速ビルドできるようにします。 IBM Cloud CLI や API、SDK を使用するのと同様に、 HashiCorp Configuration Language (HCL) を使用して、 Red Hat OpenShift on IBM Cloud リソースのプロビジョニング、更新、削除を自動化できます。

管理対象の Terraform on IBM Cloud® ソリューションをお探しですか? IBM Cloud® Schematics をお試しください。 Schematics を使えば、使い慣れたTerraformスクリプト言語を使うことができるが、Terraformコマンドラインや IBM Cloud® Providerプラグインのセットアップやメンテナンスを心配する必要はない。 Schematics はまた、 IBM Cloud® カタログから簡単にインストールできる定義済みのTerraformテンプレートも提供する。

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® Provider プラグインを構成します。 このプラグインは、IBM Cloud® のサービス・インスタンスおよびリソースのプロビジョン、更新、または削除に使用される Red Hat OpenShift API を抽象化しています。

  2. チュートリアルに従って、 Terraform を使用して単一ゾーン・クラスターと複数ゾーン・クラスターを作成します

  3. オプション: Terraform を使用して、 Red Hat OpenShift クラスター の IAM ユーザー・アクセス・ポリシーを構成します。

Red Hat OpenShift クラスターへの IAM ユーザー・アクセス権限の割り当て

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 ID または E メール・アドレス。
    roles ユーザーに割り当てるアクセス・ロールをコンマで区切ったリスト。
    service アクセス・ポリシーが適用されるサービスのタイプ。 Red Hat OpenShift クラスターの場合は "openshift" と入力します。 適用可能なサービス・タイプの完全なリストについては、 ibmcloud oc catalog service-marketplace を実行してください。
    resource_instance_id クラスターの 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 セクションをメモします。 構成ファイルによって 1 つの IAM ユーザー・アクセス・ポリシーが作成されるため、出力例では Plan: 1 to add, 0 to change, 0 to destroy と示されています。

    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 E メールの後のポリシー ID 番号をメモします。

    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. コマンドを実行し、前にメモしたポリシー ID を検索して、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