VMware Block Container Storage Interface (CSI) ドライバー
VMware Container Storage Interface (CSI) ドライバー を使用すると、 VMware ブロック・データ・ボリュームのライフサイクルを管理できます。
前提条件
VMware ブロック・ストレージ構成を作成する前に、以下の前提条件を満たす必要があります。
- vSphere バージョン 6.7U3 以降を実行していることを確認します。
- 仮想マシンのハードウェア・バージョンがバージョン 15 以降であることを確認してください。
- マスター・ノードが vCenter 管理インターフェースと通信できることを確認します。
- すべてのノードでスワップを無効にします。
- すべてのノード仮想マシンでディスク UUID を有効にします。
- vSAN を vSphere 環境にデプロイします。 詳しくは、 vSAN の資料を参照してください。
ロケーションのクラスタにストレージテンプレートをデプロイする前に、コンソールで [Enable cluster admin access for Satellite Config] オプションを選択するか、クラスタを作成するときに[ --enable-config-admin ]オプションを含めて、 Satellite Configを設定していることを確認してください。
Satellite ストレージサービスをリソースグループにスコープすることはできません。 ただし、ロケーションやクラスタなどの他のリソースをリソースグループにスコープする場合は、 アカウント内のすべてのリソースに Satellite リーダーとリンク管理者ロールを追加する必要があります。
コンソールでの構成の作成と割り当て
-
[ロケーション]コンソールから、ストレージ構成を作成するロケーションを選択します。
-
ストレージ > ストレージ構成の作成を選択します。
-
構成の名前を入力します。
-
ストレージの種類を選択してください。
-
バージョンを選択し、「 次へ 」をクリックしてください
-
選択した 「ストレージ・タイプ」 がカスタム・パラメーターを受け入れる場合は、 「パラメーター」 タブでそれらのパラメーターを入力します。
-
選択した ストレージ・タイプ にシークレットが必要な場合は、 「シークレット (Secrets)」 タブに入力します。
-
ストレージ・クラスタブで、構成によってデプロイされたストレージ・クラスを確認するか、カスタム・ストレージ・クラスを作成します。
-
サービスへの割り当てタブで、構成の割り当て先となるサービスを選択します。
-
完了をクリックして、ストレージ構成を割り当てます。
CLI での構成の作成
-
使用するテンプレート・バージョンの パラメーター・リファレンス を確認します。
-
IBM Cloud CLI にログインします。
ibmcloud login -
Satellite ロケーションをリストして、
Managed from列をメモします。ibmcloud sat location ls -
Satellite ロケーションの
Managed fromリージョンをターゲットにします。 例えば、wdcの場合は、us-eastをターゲットにします。 詳しくは、Satellite リージョンを参照してください。ibmcloud target -r us-east -
default以外のリソース・グループを使用する場合は、そのリソース・グループをターゲットにします。ibmcloud target -g RESOURCE_GROUP -
使用するテンプレート・バージョンについて、以下のいずれかのコマンド例をコピーします。 コマンドについて詳しくは、 コマンド・リファレンス の
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" -
使用する設定に基づいて、コマンドをカスタマイズします。
-
設定を作成するために、コマンドを実行してください。
-
設定が作成されたことを確認してください。
ibmcloud sat storage config get --config CONFIG
API での構成の作成
-
API キーを生成してから、リフレッシュ・トークンを要求します。 詳しくは、API キーを使用した IBM Cloud IAM トークンの生成を参照してください。
-
使用するテンプレート・バージョンの パラメーター・リファレンス を確認します。
-
以下のいずれかの要求例をコピーし、使用する変数を置き換えます。
バージョン 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 での課題の作成
-
ストレージ構成を一覧表示し、クラスタに割り当てたいストレージ構成をメモしておいてください。
ibmcloud sat storage config ls -
ストレージを割り当てたいクラスタ、クラスタグループ、またはサービスのIDを取得します。
クラスターが Satellite Config に登録されていることを確認したり、グループを作成したりするには、Satellite Config で使用するためのクラスターのセットアップを参照してください。
クラスター・グループをリストするコマンドの例。
ibmcloud sat group lsクラスターをリストするコマンドの例。
ibmcloud oc cluster ls --provider satelliteSatellite サービスをリストするコマンドの例。
ibmcloud sat service ls --location LOCATION -
以前に取得したクラスター、グループ、またはサービスにストレージ構成を割り当てます。 詳しくは、
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 -
割り当てが作成されたことを確認します。
ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
API でのストレージ割り当ての作成
-
以下のいずれかの要求例をコピーします。
構成をクラスターに割り当てる要求の例。
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\"}" -
変数を自分の詳細に置き換え、要求を実行します。
-
割り当てをリストして、割り当てが作成されたことを確認します。
curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
コンソールでのストレージ割り当ての更新
Satellite コンソール を使用して、割り当てに最新のパッチ更新を適用できます。
-
Satellite コンソールの 「ロケーション」 ページで、ロケーションを選択します。
-
「ストレージ」 タブをクリックして、構成を表示します。
-
更新したい設定をクリックしてください。
-
「情報」 (i) アイコンをクリックして、最新のリビジョンまたはパッチを適用します。
-
オプション: ストレージ割り当ての自動パッチ更新を有効にします。 自動パッチ更新を有効にすると、割り当てに常に最新のセキュリティー・フィックスが適用されます。
自動パッチ更新を有効にした場合でも、メジャー更新を手動で適用する必要があります。
CLI での割り当ての手動アップグレード
最新のストレージ・テンプレート・リビジョンを使用するように割り当てをアップグレードします。
-
Satellite ストレージ割り当てをリストし、アップグレードする Satellite 割り当てを書き留めます。
ibmcloud sat storage assignment ls -
Satellite ストレージ・テンプレートをリストして、使用可能な最新バージョンを確認します。
ibmcloud sat storage template ls -
Satellite 割り当てをアップグレードします。
割り当てをアップグレードするコマンドの例。
ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
CLI での構成および割り当ての自動パッチ更新の有効化
sat storage assignment autopatch enable CLI を使用して、割り当ての自動パッチ更新を有効にすることができます。 自動パッチ更新を有効にすると、最新のストレージ・テンプレート・リビジョン (パッチ) が自動的に適用されます。 ただし、メジャー更新は手動で適用する必要があります。
-
Satellite ストレージ構成をリストします。 設定IDをメモしておいてください。
ibmcloud sat storage assignment ls -
以下のいずれかのコマンド例を実行して、ご使用の構成とその関連割り当てに対して自動パッチ更新を有効にします。 前の手順で取得した設定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 を使用して、新しいクラスターまたはクラスター・グループで割り当てを更新できます。 改訂の更新を適用するには、 updateConfigVersion を true に設定します。
-
以下の要求例をコピーし、更新するクラスター・グループおよび割り当ての変数を置き換えます。
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\"}" -
要求を実行します。
-
更新を確認するために割り当ての詳細を取得します。
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 を使用して、割り当ての自動パッチ更新を有効にすることができます。 自動パッチ更新を有効にすると、最新のストレージ・テンプレート・リビジョン (パッチ) が自動的に適用されます。 ただし、メジャー更新は手動で適用する必要があります。
-
以下の要求例をコピーし、更新するクラスター・グループおよび割り当ての変数を置き換えます。
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", ...], } } -
要求を実行します。
-
割り当ての詳細を取得して、アップグレードを検証します。
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 を作成できます。
-
先ほど作成したストレージクラスを参照するPVCを作成します。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: sat-vsphere-vsan-block-metro resources: requests: storage: 10Gi -
クラスター内に PVC を作成します。
oc apply -f podpvc.yaml -
作成した 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 -
クラスター内にポッドを作成します。
oc apply -f mypvc.yaml -
ポッドがデプロイされたことを確認します。 アプリが「
Running」状態になるまで、数分かかる場合があることにご注意ください。oc get podsNAME READY STATUS RESTARTS AGE my-pvc 1/1 Running 0 2m58s -
ポッドにログインして、アプリがブロック・ストレージ・ボリュームに書き込み可能であることを確認します。
oc exec -it web-server /bin/bash -
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 -
ポッドを終了します。
exit
アプリからVMwareストレージを削除する
VMware の設定が不要になった場合は、クラスタからアプリ、PVC、PV、および割り当てを削除できます。
-
PVC をリストし、削除する PVC の名前をメモします。
oc get pvc -
PVC をマウントするすべてのポッドを削除します。
- 削除する 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 ``` -
PVC を削除します。
oc delete pvc <pvc_name> -
PV が自動的に削除されたことを確認します。
oc get pv
クラスターから VMware のストレージ設定を削除する
クラスターで VMware を使用する予定がなくなった場合は、CLIを使用して、ストレージ構成からそのクラスターの割り当てを解除することができます。
ストレージ構成を削除すると、割り当てられているすべてのクラスタからドライバが削除されます。 PVC、PV、データは削除されません。 ただし、クラスターにドライバーを再インストールするまでは、データにアクセスすることはできません。
コンソールを使用してVMWareのストレージ設定を削除する
- Satellite ストレージ・ダッシュボードから、削除するストレージ構成を選択します。
- アクション > 削除を選択します。
- ストレージ構成の名前を入力します。
- **「削除」**を選択します。
コマンド行を使用した VMWare ストレージ構成の除去
-
ストレージ割り当てをリストし、クラスターに使用していた割り当てを見つけます。
ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER) -
割り当てを削除します。 割り当てを削除すると、そのストレージ割り当てに含まれていたすべてのクラスターから、ドライバー・ポッドとストレージ・クラスが削除されます。
ibmcloud sat storage assignment rm --assignment <assignment_ID> -
ドライバーがクラスターから削除されたことを確認します。
- クラスターでストレージ・クラスをリストし、ストレージ・クラスが削除されていることを確認します。
oc get sc ``` 2. `kube-system` 名前空間のポッドをリストし、ストレージ・ドライバー・ポッドが削除されていることを確認します。 ```sh {: pre} oc get pods -n kube-system | grep vsphere ``` -
オプション: ストレージ構成を削除します。
- ストレージ構成をリストします。
ibmcloud sat storage config ls ``` 2. ストレージ構成を削除します。 ```sh {: pre} ibmcloud sat storage config rm --config <config_name> ```
パラメーターのリファレンス
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 サポートにサポート要求を送信してください。