メインコンテンツまでスキップ

FSx for NetApp ONTAP CSI ドライバー

このセクションに入る前に、メインのストレージセクションで紹介したKubernetesストレージオブジェクト(ボリューム、永続ボリューム(PV)、永続ボリューム要求(PVC)、動的プロビジョニング、一時ストレージ)について理解しておくべきです。

Amazon FSx for NetApp ONTAP Container Storage Interface (CSI) ドライバーは、AWSで実行されているKubernetesクラスターがAmazon FSx for NetApp ONTAPファイルシステムのライフサイクルを管理できるようにするCSIインターフェースを提供することで、ステートフルなコンテナ化アプリケーションを実行できるようにします。

次の図は、FSx for NetApp ONTAPをEKSポッドの永続ストレージとして使用する方法を示しています:

FSx for NetApp ONTAPを使用したアセット

EKSクラスターで動的プロビジョニングを使用してAmazon FSx for NetApp ONTAPを利用するには、まずFSx for NetApp ONTAP CSIドライバーがインストールされていることを確認する必要があります。このドライバーはCSI仕様を実装しており、コンテナオーケストレーターがAmazon FSx for NetApp ONTAPファイルシステムのライフサイクル全体を管理できるようにします。

helmを使用してAmazon FSxN for NetApp ONTAP Trident CSIドライバーをインストールできます。ワークショップの準備の一環としてすでに作成されている必要なIAMロールを提供する必要があります。

~$helm repo add netapp-trident https://netapp.github.io/trident-helm-chart
~$helm install trident-operator netapp-trident/trident-operator \
--version 100.2410.0 --namespace trident --create-namespace --wait

次のようにしてインストールを確認できます:

~$kubectl get pods -n trident
NAME                                READY   STATUS    RESTARTS   AGE
trident-controller-b6b5899-kqdjh    6/6     Running   0          87s
trident-node-linux-9q4sj            2/2     Running   0          86s
trident-node-linux-bxg5s            2/2     Running   0          86s
trident-node-linux-z92x2            2/2     Running   0          86s
trident-operator-588c7c854d-t4c4x   1/1     Running   0          102s

FSx for NetApp ONTAPファイルシステムがストレージ仮想マシン(SVM)と、FSxマウントポイントへのNFSトラフィックを許可するインバウンドルールを含む必要なセキュリティグループとともにプロビジョニングされています。後で必要になるIDを取得しましょう:

~$export FSXN_ID=$(aws fsx describe-file-systems --output json | jq -r --arg cluster_name "${EKS_CLUSTER_NAME}-fsxn" '.FileSystems[] | select(.Tags[] | select(.Key=="Name" and .Value==$cluster_name)) | .FileSystemId')
~$echo $FSXN_ID
fs-0123456789abcdef0

FSx for NetApp ONTAP CSIドライバーは動的プロビジョニングと静的プロビジョニングの両方をサポートしています:

  • 動的プロビジョニング:ドライバーは既存のFSx for NetApp ONTAPファイルシステム上にボリュームを作成します。これには、StorageClassパラメータで指定する必要がある既存のAWS FSx for NetApp ONTAPファイルシステムが必要です。
  • 静的プロビジョニング:これも事前に作成されたAWS FSx for NetApp ONTAPファイルシステムが必要であり、ドライバーを使用してコンテナ内のボリュームとしてマウントできます。

次に、既存のFSx for NetApp ONTAPファイルシステムを使用するように構成されたTridentBackendConfigオブジェクトを作成します。バックエンドを作成するために使用するfsxn-backend-nas.yamlファイルを見てみましょう:

~/environment/eks-workshop/modules/fundamentals/storage/fsxn/backend/fsxn-backend-nas.yaml
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
backendName: tbc-ontap-nas
svm: ${EKS_CLUSTER_NAME}-svm
aws:
fsxFilesystemID: ${FSXN_ID}
credentials:
name: "${FSXN_SECRET_ARN}"
type: awsarn
A

svmパラメータにEKS_CLUSTER_NAME環境変数を注入します - これはストレージ仮想マシン名です

B

fsxFilesystemIDパラメータにFSXN_ID環境変数を注入します - これはCSIドライバーを接続するFSxNファイルシステムです

C

credentials.nameパラメータにFSXN_SECRET_ARN環境変数を注入します - これはONTAP APIインターフェースに接続するための認証情報を含むAWS Secrets Managerに安全に保存されているシークレットのARNです

バックエンド構成を適用します:

~$kubectl kustomize ~/environment/eks-workshop/modules/fundamentals/storage/fsxn/backend \
| envsubst | kubectl apply -f-
tridentbackendconfig.trident.netapp.io/backend-tbc-ontap-nas created

TridentBackendConfigが作成されたことを確認します:

~$kubectl get tbc -n trident
NAME                    BACKEND NAME    BACKEND UUID                           PHASE   STATUS
backend-tbc-ontap-nas   tbc-ontap-nas   bbae8686-25e4-4fca-a4c7-7ab664c7db9c   Bound   Success

次に、fsxnstorageclass.yamlファイルを使用してStorageClassオブジェクトを作成しましょう:

~/environment/eks-workshop/modules/fundamentals/storage/fsxn/storageclass/fsxnstorageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fsxn-sc-nfs
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
allowVolumeExpansion: True
A

Amazon FSx for NetApp ONTAP CSIプロビジョナーにprovisionerパラメータをcsi.trident.netapp.ioに設定します

B

ONTAPボリュームへのアクセスにONTAP NASドライバーを使用することを示すためにbackendTypeontap-nasに設定します

StorageClassを適用します:

~$kubectl apply -f ~/environment/eks-workshop/modules/fundamentals/storage/fsxn/storageclass/fsxnstorageclass.yaml
storageclass.storage.k8s.io/fsxn-sc-nfs created

StorageClassを調べてみましょう。プロビジョナーとしてFSx for NetApp ONTAP CSIドライバーを使用し、ONTAP NASプロビジョニングモード用に構成されていることに注目してください:

~$kubectl get storageclass
NAME            PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
fsxn-sc-nfs     csi.trident.netapp.io      Delete          Immediate              true                   8m29s
~$kubectl describe sc fsxn-sc-nfs
Name:            fsxn-sc-nfs
IsDefaultClass:  No
Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"fsxn-sc-nfs"},"parameters":{"backendType":"ontap-nas"},"provisioner":"csi.trident.netapp.io"}
 
Provisioner:           csi.trident.netapp.io
Parameters:            backendType=ontap-nas
AllowVolumeExpansion:  True
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     Immediate
Events:                <none>

これでFSx for NetApp ONTAP StorageClassの理解とFSx for NetApp ONTAP CSIドライバーの仕組みが分かりました。次のステップでは、Kubernetes動的ボリュームプロビジョニングを使用してFSx for NetApp ONTAP StorageClassを利用し、製品画像を保存するためのPersistentVolumeでUIコンポーネントを変更する準備が整いました。