IBM Cloud Docs
IBM Systems ブロック・ストレージ CSI ドライバー

IBM Systems ブロック・ストレージ CSI ドライバー

The Block Storage for Classic CSI driver for IBM Cloud Satellite® is based on an IBM open-source project, and integrated into the IBM Storage orchestration for containers. IBM Storage orchestration for containers enables enterprises to implement a modern container-driven hybrid multicloud environment that can reduce IT costs and enhance business agility, while continuing to derive value from existing systems.

完全なリリースノート、互換性、インストール、およびユーザー情報については、Block Storage for Classic CSI driver documentationを参照してください。

Satellite でサポートされる IBM ストレージ・システムには、以下のものがあります。

  • IBM SAN ボリューム・コントローラー (SVC) を含む IBM Spectrum Virtualize ファミリー、および IBM Spectrum® Virtualize が組み込まれた IBM FlashSystem® ファミリー・メンバー (FlashSystem 5010、5030、5100、5200、7200、9100、9200、9200R)
  • IBM FlashSystem A9000 および A9000R
  • IBM DS8000 ファミリー

ご使用のロケーションのクラスターにストレージ・テンプレートをデプロイする前に、コンソールで 「 Satellite Config のクラスター管理アクセスを有効にする」 オプションを選択するか、クラスターの作成時に --enable-config-admin オプションを含めることによって、 Satellite 構成をセットアップしてください。

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

Block Storage for Classic使用するための前提条件

ロケーションにホストを割り当てる前に、必ずすべての前提条件およびインストール手順を完了してください。 Kubernetes クラスターは作成しないでください。

  1. 互換性および要件に関する資料を参照してください。

  2. Satellite ロケーションを作成します

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

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

  2. Locationsコンソールから、ストレージ構成を作成する場所を選択します。

  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 を参照してください。

    バージョン 1.10.0 構成を作成するためのサンプル・コマンド。

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.10.0 --param "namespace=NAMESPACE"
    

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

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.11.1 --param "namespace=NAMESPACE"
    

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

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.11.2 --param "namespace=NAMESPACE"  --param "secret-name=SECRET-NAME"  --param "secret-management-address=SECRET-MANAGEMENT-ADDRESS"  --param "secret-username=SECRET-USERNAME"  --param "secret-password=SECRET-PASSWORD"
    
  7. 使用する設定に基づいて、コマンドをカスタマイズします。

  8. コマンドを実行してコンフィギュレーションを作成する。

  9. コンフィギュレーションが作成されたことを確認する。

    ibmcloud sat storage config get --config CONFIG
    

API での構成の作成

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

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

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

    バージョン 1.10.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\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.10.0\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\",\"user-secret-parameters\": }
    

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

    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\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.11.1\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\",\"user-secret-parameters\": }
    

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

    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\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.11.2\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\", { \"entry.name\": \"SECRET-NAME\",\"user-secret-parameters\": { \"entry.name\": \"SECRET-MANAGEMENT-ADDRESS\",{ \"entry.name\": \"SECRET-USERNAME\",{ \"entry.name\": \"SECRET-PASSWORD\",}
    

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"
    

Block Storage for Classicを使用するアプリをデプロイする

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

  1. あなたのBlock Storage for Classic認証情報を含むKubernetes秘密設定ファイルを作成します。
    kind: Secret
    apiVersion: v1
    metadata:
      name:  demo-secret
      namespace: default
    type: Opaque
    stringData:
      management_address: demo-management-address # Example: baremetal-cluster.xiv.ibm.com
      username: demo-username                     
    data:
      password: AAAA1AAA
    
  2. クラスター内にシークレットを作成します。
    oc apply -f <secret.yaml>
    
  3. Block Storage for Classicドライバを使用するストレージ・クラスを作成する。
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: demo-storageclass
    provisioner: block.csi.ibm.com
    parameters:
      SpaceEfficiency: deduplicated   # Optional.
      pool: demo-pool
      csi.storage.k8s.io/provisioner-secret-name: demo-secret
      csi.storage.k8s.io/provisioner-secret-namespace: default
      csi.storage.k8s.io/controller-publish-secret-name: demo-secret
      csi.storage.k8s.io/controller-publish-secret-namespace: default
      csi.storage.k8s.io/controller-expand-secret-name: demo-secret
      csi.storage.k8s.io/controller-expand-secret-namespace: default
      csi.storage.k8s.io/fstype: xfs   # Optional. Values ext4\xfs. The default is ext4.
      volume_name_prefix: demoPVC      # Optional
    allowVolumeExpansion: true
    
  4. クラスター内にストレージ・クラスを作成します。
    oc apply -f sc.yaml
    
  5. ストレージ・クラスが作成されていることを確認します。
    oc get sc
    
  6. 先ほど作成したストレージ・クラスを参照するPVCを作成する。
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: demo-pvc-file
    spec:
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: demo-storageclass
    
  7. クラスター内に PVC を作成します。
    oc apply -f pvc.yaml
    
  8. PVC が作成され、状況が Bound であることを確認します。
    oc get pvc
    
  9. 作成した PVC をマウントするステートフル・セットの YAML 構成ファイルを作成します。
    kind: StatefulSet
    apiVersion: apps/v1
    metadata:
      name: demo-statefulset-file-system
    spec:
      selector:
        matchLabels:
          app: demo-statefulset
      serviceName: demo-statefulset
      replicas: 1
      template:
        metadata:
          labels:
            app: demo-statefulset
        spec:
          containers:
          - name: demo-container
            image: registry.access.redhat.com/ubi8/ubi:latest
            command: [ "/bin/sh", "-c", "--" ]
            args: [ "while true; do sleep 30; done;" ]
            volumeMounts:
              - name: demo-volume-file-system
                mountPath: "/data"
          volumes:
          - name: demo-volume-file-system
            persistentVolumeClaim:
              claimName: demo-pvc-file
    
  10. クラスター内にポッドを作成します。
    oc apply -f <stateful-set>.yaml
    
  11. ポッドがデプロイされたことを確認します。 アプリが Running 状態になるまでに数分かかることがあることに注意してください。
    oc get pods
    
    出力例
    NAME                                READY   STATUS    RESTARTS   AGE
    demo-statefulset-file-system-0       1/1     Running   0          2m58s
    
  12. アプリが IBM Block Storage インスタンスに書き込めることを確認します。
    1. ポッドにログインします。
      oc exec demo-statefulset-file-system-0 -it bash
      
    2. /data ディレクトリーに変更して test.txt ファイルを書き込み、test.txt ファイルの内容を表示して、アプリが永続ストレージにデータを書き込めていることを確認します。
      cd data && echo "Testing" >> test.txt && cat test.txt
      
      出力例
      Testing
      
    3. ポッドを終了します。
      exit
      

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

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

1.1.10.0パラメータ・リファレンス
表示名 CLI オプション タイプ 説明 必須ですか? デフォルト値
名前空間 namespace 構成 デプロイメントを作成する対象の名前空間。 はい default

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

1.1.11.1パラメータ参照
表示名 CLI オプション タイプ 説明 必須ですか? デフォルト値
名前空間 namespace 構成 デプロイメントを作成する対象の名前空間。 はい default

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

1.1.11.2パラメータ参照
表示名 CLI オプション タイプ 説明 必須ですか? デフォルト値
名前空間 namespace 構成 デプロイメントを作成する対象の名前空間。 はい default
シークレット名 secret-name 構成 作成するシークレットの名前。 はい 該当なし
シークレット管理アドレス secret-management-address シークレット 管理サーバーのアドレスです。 これは、IP アドレスまたは URL のいずれかです。 例: example-cluster.xiv.ibm.com はい 該当なし
シークレット・ユーザー名 secret-username シークレット 管理サーバーへの認証に使用するユーザー名。 はい 該当なし
シークレット・パスワード secret-password シークレット 管理サーバーへの認証に使用するパスワード。 はい 該当なし

Block Storage for Classic のヘルプおよびサポートの利用

  1. Block Storage for Classic の資料で FAQ を確認します。
  2. 一般的な問題をトラブルシューティングして解決するには、 トラブルシューティング資料 を参照してください。
  3. Status ページにアクセスして、IBM Cloudプラットフォームとリソースのステータスを確認してください。
  4. Stack Overflow で、他のユーザーが同じ問題を経験しているかどうかを確認します。 質問に ibm-cloud というタグを付けます。
  5. Block Storage for Classic で問題が発生した場合は、 IBM Cloud® サポートにサポート要求を送信します。