3
0

More than 1 year has passed since last update.

Amazon FSx for NetApp ONTAPをAmazon EKSのPersistentVolumeのバックエンドとして使ってみた(本編)

Last updated at Posted at 2022-04-08

はじめに

  • 前々回の記事でAmazon EKSで使えるPersistentVolumeについて調べて、前回の記事で検証するための環境を準備した。
  • 今回は、PersistentVolumeのバックエンドとしてAmazon FSx for NetApp ONTAP(以下、FSx for ONTAP)を使ってみる。
  • 今できている環境はこんな感じ。
    archetecture.png

やってみた

Astra Tridentのインストール

まずはインストール方法の確認

  • FSx for ONTAPをKubernetes側から扱うためのCSI driverはNetAppが提供するAstra Tridentというもの。まずはこれをインストールする必要がある。
  • Astra TridentはKubernetesクラスター上にPodとしてデプロイされる。
  • インストール方法は以下の3通り。今回は3つ目のHelmでインストール。
    1. 手動でtridentctlを用いたイントール
    2. 手動でTrident Operatorを用いたインストール
    3. HelmでTrident Operatorを用いたインストール

いざ、インストール

  • Trident用のNamespaceを作成。
    $ kubectl create ns trident
    namespace/trident created
    
  • GitHubからインストーラをダウンロード(今回はv21.10.1)
    $ wget https://github.com/NetApp/trident/releases/download/v21.10.1/trident-installer-21.10.1.tar.gz
    --2022-04-08 12:59:20--  https://github.com/NetApp/trident/releases/download/v21.10.1/trident-installer-21.10.1.tar.gz
    Resolving github.com (github.com)... 52.192.72.89
    Connecting to github.com (github.com)|52.192.72.89|:443... connected.
    HTTP request sent, awaiting response... 302 Found
    Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/77179634/4ec45234-8d16-4b89-bbe3-5307e5253b30?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220408%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220408T125920Z&X-Amz-Expires=300&X-Amz-Signature=e92ca56462e8b30bf091c71ff9605828e7aa8a2655df4d4e0c24151942a4e0a4&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=77179634&response-content-disposition=attachment%3B%20filename%3Dtrident-installer-21.10.1.tar.gz&response-content-type=application%2Foctet-stream [following]
    --2022-04-08 12:59:20--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/77179634/4ec45234-8d16-4b89-bbe3-5307e5253b30?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220408%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220408T125920Z&X-Amz-Expires=300&X-Amz-Signature=e92ca56462e8b30bf091c71ff9605828e7aa8a2655df4d4e0c24151942a4e0a4&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=77179634&response-content-disposition=attachment%3B%20filename%3Dtrident-installer-21.10.1.tar.gz&response-content-type=application%2Foctet-stream
    Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
    Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.111.133|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 56666622 (54M) [application/octet-stream]
    Saving to: ‘trident-installer-21.10.1.tar.gz’
    
    100% [==============================================================================================================================>] 56,666,622  12.1MB/s   in 4.3s
    
    2022-04-08 12:59:25 (12.5 MB/s) - ‘trident-installer-21.10.1.tar.gz’ saved [56666622/56666622]
    
    • インストーラを解凍。
    $ tar xzf trident-installer-21.10.1.tar.gz
    
  • tridentctlのPATHを通す。
    $ sudo install -m 0755 -o root -g root ./trident-installer/tridentctl /usr/local/bin/
    
  • Astra Tridentのインストール。
    $ helm install -n trident trident trident-installer/helm/trident-operator-21.10.1.tgz
    W0408 13:01:55.315542    2776 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
    W0408 13:01:55.428274    2776 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
    NAME: trident
    LAST DEPLOYED: Fri Apr  8 13:01:55 2022
    NAMESPACE: trident
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI storage provisioner for Kubernetes.
    
    Your release is named 'trident' and is installed into the 'trident' namespace.
    Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.
    
    To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases.  You may find all Trident releases and source code online at https://github.com/NetApp/trident.
    
    To learn more about the release, try:
    
      $ helm status trident
      $ helm get all trident
    
  • インストール後の確認
    $ helm list -n trident
    NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
    trident trident         1               2022-04-08 13:01:55.102086329 +0000 UTC deployed        trident-operator-21.10.1        21.10.1
    
  • デプロイされたリソースの確認。
    $ kubectl get pod -n trident
    NAME                                READY   STATUS    RESTARTS   AGE
    trident-csi-7bf5df78bd-bpfvx        6/6     Running   0          75s
    trident-csi-z5f8d                   2/2     Running   0          75s
    trident-operator-649cb957df-xtgpr   1/1     Running   0          92s
    
  • インストール完了。

バックエンドの設定

まずは設定内容の確認

  • バックエンドの設定はバックエンドコンフィグで行う。
  • Astra Tridentで提供されるドライバは色々あるが、今回はontap-nasを使う。
  • バックエンドの認証方法もID/Password方式と証明書ベースの方式の2パターンがあるが、今回はID/Password方式で認証する。
  • IDはデフォルトで作られているSVM管理者ユーザーvsadmin、PasswordはFSx for ONTAPの作成時に設定したもの。
  • 後、必要なのはストレージの管理用IPアドレス。今回はDNS名で設定。AWSマネジメントコンソールで確認する場合はここ。
    fsxn1.png

いざ、バックエンドの設定

  • バックエンドコンフィグファイルを作成。
    $ vi fsx-backend.json
    
    {
      "version": 1,
      "backendName": "fsx_backend",
      "storageDriverName": "ontap-nas",
      "managementLIF": "svm-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.fsx.ap-northeast-1.amazonaws.com",
      "svm": "st-eks-test-svm1",
      "username": "vsadmin",
      "password": "Netapp1!"
    }
    
  • tridentctlコマンドを使用してバックエンドの設定。
    $ tridentctl create backend -n trident -f fsx-backend.json
    +-------------+----------------+--------------------------------------+--------+---------+
    |    NAME     | STORAGE DRIVER |                 UUID                 | STATE  | VOLUMES |
    +-------------+----------------+--------------------------------------+--------+---------+
    | fsx_backend | ontap-nas      | 8409e2ca-456d-4a0f-a586-a7bb38eac36b | online |       0 |
    
  • できた。

StorageClassの作成

  • マニフェストファイルを作成。
    vi fsx-sc.yaml
    
    apiVersion: v1
    kind: StorageClass
    metadata:
      name: fsx-sc
    parameters:
      backendType: ontap-nas
    provisioner: csi.trident.netapp.io
    
  • StorageClassを作成。
    $ kubectl apply -f fsx-sc.yaml
    storageclass.storage.k8s.io/fsx-sc created
    
  • StorageClassを確認。
    $ kubectl get sc
    NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    fsx-sc          csi.trident.netapp.io   Delete          Immediate              false                  2m48s
    gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  40m
    
  • 元々あったgp2がデフォルトになっているので、デフォルトのStorageClassを変更。
    $ kubectl annotate storageclass gp2 storageclass.kubernetes.io/is-default-class=false --overwrite
    storageclass.storage.k8s.io/gp2 annotated
    
    $ kubectl annotate storageclass fsx-sc storageclass.kubernetes.io/is-default-class=true --overwrite
    storageclass.storage.k8s.io/fsx-sc annotated
    
  • デフォルトのStorageClassを変更できたか確認。
    $ kubectl get sc
    NAME               PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    fsx-sc (default)   csi.trident.netapp.io   Delete          Immediate              false                  9m23s
    gp2                kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  47m
    
  • これで管理者側の作業は完了。

PersistentVolume作成

  • マニフェストファイルを作成する。

    $ vi fsx-pvc.yaml
    
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: myvolume
    spec:
      accessModes:
       - ReadWriteMany
      storageClassName: fsx-sc
      resources:
       requests:
        storage: 10Gi
    
  • PersistentVolumeClaimを作成。

    $ kubectl apply -f fsx-pvc.yaml
    persistentvolumeclaim/myvolume created
    
  • PersistentVolumeClaimを確認。

    $ kubectl get pvc
    NAME       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    myvolume   Bound    pvc-bfbecd75-fa76-463d-86cd-6756475fbc81   10Gi       RWX            fsx-sc         2m6s
    
  • PersistentVolumeを確認。

    $ kubectl get pv
    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM              STORAGECLASS   REASON   AGE
    pvc-bfbecd75-fa76-463d-86cd-6756475fbc81   10Gi       RWX            Delete           Bound    default/myvolume   fsx-sc                  2m10s
    
  • AWSマネジメントコンソールでFSx for ONTAP目線で確認するとこんな感じ。
    fsxn2.png

  • できた。

まとめ

  • とりあえずAmazon EKSのPersistentVolumeの一連のシリーズは完結。
  • 頑張った。
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0