VMware Block Container Storage Interface (CSI) ドライバー

VMware Container Storage Interface (CSI) ドライバー を使用すると、 VMware ブロック・データ・ボリュームのライフサイクルを管理できます。

前提条件

VMware ブロック・ストレージ構成を作成する前に、以下の前提条件を満たす必要があります。

  1. vSphere バージョン 6.7U3 以降を実行していることを確認します。
  2. 仮想マシンのハードウェア・バージョンがバージョン 15 以降であることを確認してください。
  3. マスター・ノードが vCenter 管理インターフェースと通信できることを確認します。
  4. すべてのノードでスワップを無効にします。
  5. すべてのノード仮想マシンでディスク UUID を有効にします。
  6. vSAN を vSphere 環境にデプロイします。 詳しくは、 vSAN の資料を参照してください。

ロケーションのクラスタにストレージテンプレートをデプロイする前に、コンソールで [Enable cluster admin access for Satellite Config] オプションを選択するか、クラスタを作成するときに[ --enable-config-admin ]オプションを含めて、 Satellite Configを設定していることを確認してください。

Satellite ストレージサービスをリソースグループにスコープすることはできません。 ただし、ロケーションやクラスタなどの他のリソースをリソースグループにスコープする場合は、 アカウント内のすべてのリソースに Satellite リーダーとリンク管理者ロールを追加する必要があります。

コンソールでの構成の作成と割り当て

  1. パラメーターのリファレンスを確認します

  2. [ロケーション]コンソールから、ストレージ構成を作成するロケーションを選択します。

  3. ストレージ > ストレージ構成の作成を選択します。

  4. 構成の名前を入力します。

  5. ストレージの種類を選択してください。

  6. バージョンを選択し、「 次へ 」をクリックしてください

  7. 選択した 「ストレージ・タイプ」 がカスタム・パラメーターを受け入れる場合は、 「パラメーター」 タブでそれらのパラメーターを入力します。

  8. 選択した ストレージ・タイプ にシークレットが必要な場合は、 「シークレット (Secrets)」 タブに入力します。

  9. ストレージ・クラスタブで、構成によってデプロイされたストレージ・クラスを確認するか、カスタム・ストレージ・クラスを作成します。

  10. サービスへの割り当てタブで、構成の割り当て先となるサービスを選択します。

  11. 完了をクリックして、ストレージ構成を割り当てます。

CLI での構成の作成

  1. 使用するテンプレート・バージョンの パラメーター・リファレンス を確認します。

  2. IBM Cloud CLI にログインします。

    ibmcloud login
    
  3. Satellite ロケーションをリストして、Managed from 列をメモします。

    ibmcloud sat location ls
    
  4. Satellite ロケーションの Managed from リージョンをターゲットにします。 例えば、wdc の場合は、us-east をターゲットにします。 詳しくは、Satellite リージョンを参照してください。

    ibmcloud target -r us-east
    
  5. default 以外のリソース・グループを使用する場合は、そのリソース・グループをターゲットにします。

    ibmcloud target -g RESOURCE_GROUP
    
  6. 使用するテンプレート・バージョンについて、以下のいずれかのコマンド例をコピーします。 コマンドについて詳しくは、 コマンド・リファレンスibmcloud sat storage config create を参照してください。

    バージョン 2.7.0 構成を作成するコマンドの例。

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name vsphere-csi-driver --template-version 2.7.0 --param "vcenter-username=VCENTER-USERNAME"  --param "vcenter-password=VCENTER-PASSWORD"  --param "insecure-flag=INSECURE-FLAG"  --param "host=HOST"  --param "datacenters=DATACENTERS"  --param "thumbprint=THUMBPRINT"
    
  7. 使用する設定に基づいて、コマンドをカスタマイズします。

  8. 設定を作成するために、コマンドを実行してください。

  9. 設定が作成されたことを確認してください。

    ibmcloud sat storage config get --config CONFIG
    

API での構成の作成

  1. API キーを生成してから、リフレッシュ・トークンを要求します。 詳しくは、API キーを使用した IBM Cloud IAM トークンの生成を参照してください。

  2. 使用するテンプレート・バージョンの パラメーター・リファレンス を確認します。

  3. 以下のいずれかの要求例をコピーし、使用する変数を置き換えます。

    バージョン 2.7.0 構成を作成する要求の例。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"vsphere-csi-driver\", \"storage-template-version\": \"2.7.0\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"INSECURE-FLAG\", { \"entry.name\": \"HOST\", { \"entry.name\": \"DATACENTERS\",\"user-secret-parameters\": { \"entry.name\": \"VCENTER-USERNAME\",{ \"entry.name\": \"VCENTER-PASSWORD\",{ \"entry.name\": \"THUMBPRINT\",}
    

CLI での課題の作成

  1. ストレージ構成を一覧表示し、クラスタに割り当てたいストレージ構成をメモしておいてください。

    ibmcloud sat storage config ls
    
  2. ストレージを割り当てたいクラスタ、クラスタグループ、またはサービスのIDを取得します。

    クラスターが Satellite Config に登録されていることを確認したり、グループを作成したりするには、Satellite Config で使用するためのクラスターのセットアップを参照してください。

    クラスター・グループをリストするコマンドの例。

    ibmcloud sat group ls
    

    クラスターをリストするコマンドの例。

    ibmcloud oc cluster ls --provider satellite
    

    Satellite サービスをリストするコマンドの例。

    ibmcloud sat service ls --location LOCATION
    
  3. 以前に取得したクラスター、グループ、またはサービスにストレージ構成を割り当てます。 詳しくは、ibmcloud sat storage assignment create コマンドを参照してください。

    クラスター・グループに構成を割り当てるコマンドの例。

    ibmcloud sat storage assignment create --group GROUP --config CONFIG --name NAME
    

    クラスターに構成を割り当てるコマンドの例。

    ibmcloud sat storage assignment create --cluster CLUSTER --config CONFIG --name NAME
    

    サービス・クラスターに構成を割り当てるコマンドの例。

    ibmcloud sat storage assignment create --service-cluster-id CLUSTER --config CONFIG --name NAME
    
  4. 割り当てが作成されたことを確認します。

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    

API でのストレージ割り当ての作成

  1. 以下のいずれかの要求例をコピーします。

    構成をクラスターに割り当てる要求の例。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignmentByCluster" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"CLUSTER-ID\", \"controller\": \"LOCATION-ID\", \"name\": \"ASSIGNMENT-NAME\"}"
    

    クラスター・グループに構成を割り当てる要求の例。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"string\", \"groups\": [ \"CLUSTER-GROUP\" ], \"name\": \"ASSIGNMENT-NAME\"}"
    
  2. 変数を自分の詳細に置き換え、要求を実行します。

  3. 割り当てをリストして、割り当てが作成されたことを確認します。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

コンソールでのストレージ割り当ての更新

Satellite コンソール を使用して、割り当てに最新のパッチ更新を適用できます。

  1. Satellite コンソール「ロケーション」 ページで、ロケーションを選択します。

  2. 「ストレージ」 タブをクリックして、構成を表示します。

  3. 更新したい設定をクリックしてください。

  4. 「情報」 (i) アイコンをクリックして、最新のリビジョンまたはパッチを適用します。

  5. オプション: ストレージ割り当ての自動パッチ更新を有効にします。 自動パッチ更新を有効にすると、割り当てに常に最新のセキュリティー・フィックスが適用されます。

自動パッチ更新を有効にした場合でも、メジャー更新を手動で適用する必要があります。

CLI での割り当ての手動アップグレード

最新のストレージ・テンプレート・リビジョンを使用するように割り当てをアップグレードします。

  1. Satellite ストレージ割り当てをリストし、アップグレードする Satellite 割り当てを書き留めます。

    ibmcloud sat storage assignment ls
    
  2. Satellite ストレージ・テンプレートをリストして、使用可能な最新バージョンを確認します。

    ibmcloud sat storage template ls
    
  3. Satellite 割り当てをアップグレードします。

    割り当てをアップグレードするコマンドの例。

    ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
    

CLI での構成および割り当ての自動パッチ更新の有効化

sat storage assignment autopatch enable CLI を使用して、割り当ての自動パッチ更新を有効にすることができます。 自動パッチ更新を有効にすると、最新のストレージ・テンプレート・リビジョン (パッチ) が自動的に適用されます。 ただし、メジャー更新は手動で適用する必要があります。

  1. Satellite ストレージ構成をリストします。 設定IDをメモしておいてください。

    ibmcloud sat storage assignment ls
    
  2. 以下のいずれかのコマンド例を実行して、ご使用の構成とその関連割り当てに対して自動パッチ更新を有効にします。 前の手順で取得した設定IDを入力してください。

    割り当ての自動パッチ更新を有効にするコマンドの例。

    ibmcloud sat storage assignment autopatch enable --config CONFIG  (--all | --assignment ASSIGNMENT-ID [--assignment ASSIGNMENT-ID])
    

    指定された構成下のすべてのストレージ割り当てに対して自動パッチ更新を有効にするコマンド例。

    ibmcloud sat storage assignment autopatch enable --config CONFIG --all
    

    特定の構成下のすべての割り当てに対して自動パッチ更新を無効にするコマンドの例。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --all
    

    単一の割り当ておよび特定の構成に対して自動パッチ更新を無効にするコマンドの例。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID
    

    複数の割り当ておよび特定の構成に対する自動パッチ更新を無効にするコマンド例。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID --assignment ASSIGNMENT-ID
    

API での構成と割り当てのアップグレード

/v2/storage/satellite/updateAssignment API を使用して、新しいクラスターまたはクラスター・グループで割り当てを更新できます。 改訂の更新を適用するには、 updateConfigVersiontrue に設定します。

  1. 以下の要求例をコピーし、更新するクラスター・グループおよび割り当ての変数を置き換えます。

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/updateAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"groups\": [ \"CLUSTER-GROUPS\" ], \"name\": \"ASSIGNMENT-NAME\", \"updateConfigVersion\": true, \"uuid\": \"ASSIGNMENT-ID\"}"
    
  2. 要求を実行します。

  3. 更新を確認するために割り当ての詳細を取得します。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

API での割り当ての自動パッチ更新の有効化

/v2/storage/satellite/setAssignmentAutoupgrade API を使用して、割り当ての自動パッチ更新を有効にすることができます。 自動パッチ更新を有効にすると、最新のストレージ・テンプレート・リビジョン (パッチ) が自動的に適用されます。 ただし、メジャー更新は手動で適用する必要があります。

  1. 以下の要求例をコピーし、更新するクラスター・グループおよび割り当ての変数を置き換えます。

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/setAssignmentAutoupgrade" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d { "config": "string", "controller": "string", "autopatch": boolean,"assignment" : { "all": boolean, "uuid": ["string", "string", ...], } }
    
  2. 要求を実行します。

  3. 割り当ての詳細を取得して、アップグレードを検証します。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

以下を使用するアプリのデプロイ VMware

vmware-csi-driver を使用して、クラスター・ワークロードで使用できる PVC を作成できます。

  1. 先ほど作成したストレージクラスを参照するPVCを作成します。

        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
            name: podpvc
        spec:
            accessModes:
             - ReadWriteOnce
            storageClassName: sat-vsphere-vsan-block-metro
            resources:
                requests:
                storage: 10Gi
    
  2. クラスター内に PVC を作成します。

    oc apply -f podpvc.yaml
    
  3. 作成した PVC をマウントするポッドの YAML 構成ファイルを作成します。

        apiVersion: v1
        kind: Pod
        metadata:
        name: web-server
        spec:
        containers:
        - name: #web-server
            image: nginx
            command:
                - "/bin/sh"
                - "-c"
                - while true; do echo $(date) >> /mnt/vmwaredisk/outfile; sleep 1; done
            volumeMounts:
             mountPath:  /mnt/vmwaredisk
                name: mypvc
        volumes:
        - name: mypvc
            persistentVolumeClaim:
            claimName: podpvc
            readOnly: false
    
  4. クラスター内にポッドを作成します。

    oc apply -f mypvc.yaml
    
  5. ポッドがデプロイされたことを確認します。 アプリが「 Running 」状態になるまで、数分かかる場合があることにご注意ください。

    oc get pods
    
    NAME                                READY   STATUS    RESTARTS   AGE
    my-pvc                              1/1     Running   0          2m58s
    
  6. ポッドにログインして、アプリがブロック・ストレージ・ボリュームに書き込み可能であることを確認します。

    oc exec -it web-server /bin/bash
    
  7. outfile ファイルの内容を表示して、アプリが永続ストレージにデータを書き込めていることを確認します。

    cat outfile
    

    出力例

    Fri Jul 16 07:49:39 EDT 2021
    Fri Jul 16 07:49:39 EDT 2021
    Fri Jul 16 07:49:39 EDT 2021
    
  8. ポッドを終了します。

    exit
    

アプリからVMwareストレージを削除する

VMware の設定が不要になった場合は、クラスタからアプリ、PVC、PV、および割り当てを削除できます。

  1. PVC をリストし、削除する PVC の名前をメモします。

    oc get pvc
    
  2. PVC をマウントするすべてのポッドを削除します。

    1. 削除する PVC を現在マウントしているポッドをすべてリストします。 ポッドが返されなければ、現在その PVC を使用しているポッドはありません。
        oc get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
        ```
        出力例
    
        ```sh {: screen}
        NAME         READY   STATUS    RESTARTS   AGE
        web-server   1/1     Running   0          55s
        ```
    1. PVC を使用するポッドを削除します。 ポッドがデプロイメントまたはステートフル・セットの一部である場合は、デプロイメントまたはステートフル・セットを削除します。
    
    ```sh {: pre}
        oc delete pod <pod_name>
        ```
        ```sh {: pre}
        oc delete deployment <deployment_name>
        ```
        ```sh {: pre}
        oc delete statefulset <statefulset_name>
        ```
    1. ポッド、デプロイメント、またはステートフル・セットが削除されたことを確認します。
    
    ```sh {: pre}
        oc get pods
        ```
        ```sh {: pre}
        oc get deployments
        ```
        ```sh {: pre}
        oc get statefulset
        ```
    
  3. PVC を削除します。

    oc delete pvc <pvc_name>
    
  4. PV が自動的に削除されたことを確認します。

    oc get pv
    

クラスターから VMware のストレージ設定を削除する

クラスターで VMware を使用する予定がなくなった場合は、CLIを使用して、ストレージ構成からそのクラスターの割り当てを解除することができます。

ストレージ構成を削除すると、割り当てられているすべてのクラスタからドライバが削除されます。 PVC、PV、データは削除されません。 ただし、クラスターにドライバーを再インストールするまでは、データにアクセスすることはできません。

コンソールを使用してVMWareのストレージ設定を削除する

  1. Satellite ストレージ・ダッシュボードから、削除するストレージ構成を選択します。
  2. アクション > 削除を選択します。
  3. ストレージ構成の名前を入力します。
  4. **「削除」**を選択します。

コマンド行を使用した VMWare ストレージ構成の除去

  1. ストレージ割り当てをリストし、クラスターに使用していた割り当てを見つけます。

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    
  2. 割り当てを削除します。 割り当てを削除すると、そのストレージ割り当てに含まれていたすべてのクラスターから、ドライバー・ポッドとストレージ・クラスが削除されます。

    ibmcloud sat storage assignment rm --assignment <assignment_ID>
    
  3. ドライバーがクラスターから削除されたことを確認します。

    1. クラスターでストレージ・クラスをリストし、ストレージ・クラスが削除されていることを確認します。
        oc get sc
        ```
    2. `kube-system` 名前空間のポッドをリストし、ストレージ・ドライバー・ポッドが削除されていることを確認します。
    
    ```sh {: pre}
        oc get pods -n kube-system | grep vsphere
        ```
    
  4. オプション: ストレージ構成を削除します。

    1. ストレージ構成をリストします。
        ibmcloud sat storage config ls
        ```
    2. ストレージ構成を削除します。
    
    ```sh {: pre}
        ibmcloud sat storage config rm --config <config_name>
        ```
    
    
    

パラメーターのリファレンス

2.7.0 パラメーター・リファレンス

表1. 「 2.7.0 」パラメータ一覧
表示名 CLI オプション タイプ 説明 デフォルト値
vCenter ユーザー名 vcenter-username シークレット vCenter ユーザー名。 ユーザー名とドメイン名を指定する必要があります。 例:「Administrator@vsphere.local」。 該当なし
vCenter パスワード vcenter-password シークレット vCenter サーバーのユーザー・パスワード。 該当なし
不安定な接続 insecure-flag 構成 insecure-flag」を含める。true」は、ログインに自己署名証明書を使用するフラグを含めることを示す。false」はセキュアな接続を使用することを示す。 「false」を選択した場合は、SSL サムプリントを提供する必要があります。 false
vCenter ホスト host 構成 vCenter サーバーの IP アドレス。 該当なし
vCenter データ・センター datacenters 構成 ホスト VM が存在するすべてのデータ・センター・パスをコンマで区切ってリストします。 データ・センターがルートにある場合は、そのデータ・センターの名前を指定します。 フォルダーに配置する場合は、パスを フォルダ / データ・センター名 として指定する必要があります。 該当なし
SSL 証明書のサムプリント thumbprint シークレット VC へのセキュア接続を確立するために使用される SSL サムプリント。 該当なし

VMWareに関するヘルプとサポートの入手

VMware で問題が発生した場合は、 VMware サポートにサポート要求を送信してください。