

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SMB CSI ドライバーの使用
<a name="use-smb-csi"></a>

このセクションの手順に従って、Kubernetes クラスターのストレージに Amazon S3 ファイルゲートウェイで SMB ファイル共有を使用するために必要な CSI ドライバーをインストール、設定、または削除します。詳細については、[https://github.com/kubernetes-csi/csi-driver-smb/blob/master/docs/install-csi-driver-master.md](https://github.com/kubernetes-csi/csi-driver-smb/blob/master/docs/install-csi-driver-master.md) で、GitHub 上のオープンソース SMB CSI ドライバーのドキュメントを参照してください。

**注記**  
`PersistentVolume` オブジェクトまたは `StorageClass` オブジェクトを作成するときに、`ReclaimPolicy` パラメータを指定して、オブジェクトが削除されたときに外部ストレージがどうなるかを決定できます。SMB CSI ドライバーは `Retain` および `Recycle` オプションをサポートしていますが、現在 `Delete` オプションをサポートしていません。

## ドライバーのインストール
<a name="install-smb-csi"></a>

**Kubernetes SMB CSI ドライバーをインストールするには:**

1. Kubernetes クラスターの `kubectl` にアクセスできるコマンドラインターミナルから、次のコマンドを実行します。

   **curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/deploy/install-driver.sh \| bash -s master --**

1. 前のコマンドが終了するのを待ってから、次のコマンドを使用して CSI ドライバーポッドが実行されていることを確認します。

   **kubectl -n kube-system get pod -o wide --watch -l app=csi-smb-controller**

   **kubectl -n kube-system get pod -o wide --watch -l app=csi-smb-node**

   出力は次の例に類似したものになります:

   ```
   NAME                                       READY   STATUS    RESTARTS   AGE     IP             NODE
   csi-smb-controller-56bfddd689-dh5tk       4/4     Running   0          35s     10.240.0.19    k8s-agentpool-22533604-0
   csi-smb-controller-56bfddd689-8pgr4       4/4     Running   0          35s     10.240.0.35    k8s-agentpool-22533604-1
   csi-smb-node-cvgbs                        3/3     Running   0          35s     10.240.0.35    k8s-agentpool-22533604-1
   csi-smb-node-dr4s4                        3/3     Running   0          35s     10.240.0.4     k8s-agentpool-22533604-0
   ```

## SMB StorageClass オブジェクトを作成する
<a name="create-storageclass-smb-csi"></a>

**Kubernetes クラスターの新しい SMB StorageClass オブジェクトを作成するには:**

1. `storageclass.yaml` という名の設定ファイルを作成し、次の例と同様の内容を記述します。表示されている {{ExampleValues}} を、デプロイ固有の情報に置き換えます。

   ```
   ---
   apiVersion: storage.k8s.io/v1
   kind: StorageClass
   metadata:
       name: {{ExampleStorageClassName}}
   provisioner: smb.csi.k8s.io
   parameters:
       source: "{{//gateway-dns-name-or-ip-address/example-share-name}}"
       # if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory
       # with PV name under source
       csi.storage.k8s.io/provisioner-secret-name: "{{examplesmbcreds}}"
       csi.storage.k8s.io/provisioner-secret-namespace: "{{examplenamespace}}"
       csi.storage.k8s.io/node-stage-secret-name: "{{examplesmbcreds}}"
       csi.storage.k8s.io/node-stage-secret-namespace: "{{examplenamespace}}"
   volumeBindingMode: Immediate
   reclaimPolicy: Retain
   mountOptions:
       - dir_mode=0777
       - file_mode=0777
       - uid=1001
       - gid=1001
   ```

1. `kubectl` および `storageclass.yaml` にアクセスできるコマンドラインターミナルから、次のコマンドを実行します。

   **kubectl apply -f storageclass.yaml**
**注記**  
前の手順の `.yaml` 設定テキストをほとんどのサードパーティ製 Kubernetes 管理およびコンテナ化プラットフォームに提供することで、StorageClass を作成することもできます。

1. 作成した新しい StorageClass を使用するように Kubernetes クラスターのポッドを設定します。詳細については、[https://kubernetes.io/docs/concepts/storage/](https://kubernetes.io/docs/concepts/storage/) で Kubernetes オンラインドキュメントを参照してください。

## SMB PersistentVolume オブジェクトと PersistentVolumeClaim オブジェクトを作成する
<a name="create-persistentvolume-volumeclaim-smb-csi"></a>

**新しい SMB PersistentVolume オブジェクトと PersistentVolumeClaim オブジェクトを作成するには:**

1. 2つの設定ファイルを作成します。1 つは `persistentvolume.yaml`、もう 1 つは `persistentvolumeclaim.yaml` という名前にします。

1. `persistentvolume.yaml` には、次の例のようなコンテンツを追加します。表示されている {{ExampleValues}} を、デプロイ固有の情報に置き換えます。

   ```
   ---
   apiVersion: v1
   kind: PersistentVolume
   metadata:
       name: {{pv-smb-example-name}}
       namespace: {{smb-example-namespace}} # PersistentVolume and PersistentVolumeClaim must use the same namespace parameter
   spec:
       capacity:
           storage: 100Gi
       accessModes:
           - ReadWriteMany
       persistentVolumeReclaimPolicy: Retain
       mountOptions:
           - dir_mode=0777
           - file_mode=0777
           - vers=3.0
       csi:
           driver: smb.csi.k8s.io
           readOnly: false
           volumeHandle: {{examplehandle}}  # make sure it's a unique id in the cluster
           volumeAttributes:
               source: "{{//gateway-dns-name-or-ip-address/example-share-name}}"
           nodeStageSecretRef:
               name: {{example-smbcreds}}
               namespace: {{smb-example-namespace}}
   ```

1. `persistentvolumeclaim.yaml` には、次の例のようなコンテンツを追加します。表示されている {{ExampleValues}} を、デプロイ固有の情報に置き換えます。

   ```
   ---
   kind: PersistentVolumeClaim
   apiVersion: v1 
   metadata: 
       name: {{examplename-pvc-smb-static}}
       namespace: {{smb-example-namespace}} # PersistentVolume and PersistentVolumeClaim must use the same namespace parameter
   spec: 
       accessModes: 
           - ReadWriteMany 
       resources: 
           requests: 
               storage: 10Gi 
           volumeName: {{pv-smb-example-name}} # make sure specfied volumeName matches the name of the PersistentVolume you created
           storageClassName: ""
   ```

1. `kubectl` および作成した2つの `.yaml` ファイルにアクセスできるコマンドラインターミナルから、次のコマンドを実行します。

   **kubectl apply -f persistentvolume.yaml**

   **kubectl apply -f persistentvolumeclaim.yaml**
**注記**  
前の手順の `.yaml` 設定テキストを、ほとんどのサードパーティ製 Kubernetes 管理およびコンテナ化プラットフォームに提供することで、PersistentVolume オブジェクトと PersistentVolumeClaim オブジェクトを作成することもできます。

1. 作成した新しい PersistentVolumeClaim を使用するように Kubernetes クラスターのポッドを設定します。詳細については、[https://kubernetes.io/docs/concepts/storage/](https://kubernetes.io/docs/concepts/storage/) で Kubernetes オンラインドキュメントを参照してください。

## ドライバーのアンインストール
<a name="uninstall-smb-csi"></a>

**Kubernetes SMB CSI ドライバーをアンインストールするには:**
+ Kubernetes クラスターの `kubectl` にアクセスできるコマンドラインターミナルから、次のコマンドを実行します。

  **curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/deploy/uninstall-driver.sh \| bash -s --**