🍆

Kubernetes に democratic-csi を入れて、TrueNAS に NFS バックエンドPVを作ってもらうようにした

2022/11/28に公開

はじめに

Kubernetes に democratic-csi を入れて、TrueNAS に自動的にPVを作ってもらうようにした の続きで、複数の Pod の間で共有してアクセスするボリュームが欲しくなったので、NFSをバックエンドにするPVを作れるようにしてみました。

CSI の概要や TrueNAS の ZFS Dataset の作成方法については上記の記事を参考にしてください。

作ってみました

TrueNAS の NFS サービスを設定する

TrueNAS のサービス管理画面から、NFS サービスの設定の以下の項目を有効化しておきます。(デフォルトだと両方ともOFF)

  • Enable NFSv4
  • NFSv3 ownership model for NFSv4

democratic-csi をセットアップする

truenas-nfs.yml
csiDriver:
  name: "org.democratic-csi.nfs"
storageClasses:
- name: truenas-nfs-csi
  defaultClass: false
  reclaimPolicy: Delete
  volumeBindingMode: Immediate
  allowVolumeExpansion: true
  parameters:
    fsType: nfs
  mountOptions:
  - noatime
  - nfsvers=4
  secrets:
    provisioner-secret:
    controller-publish-secret:
    node-stage-secret:
    node-publish-secret:
    controller-expand-secret:
driver:
  config:
    driver: freenas-nfs
    httpConnection:
      protocol: http
      host: 192.168.1.xxx
      port: 80
      username: root
      password: PASSWORD
    sshConnection:
      host: 192.168.1.xxx
      port: 22
      username: root
      password: PASSWORD
    zfs:
      datasetParentName: main/k8s-nfs
      detachedSnapshotsDatasetParentName: main/k8s-snaps
      datasetPermissionsMode: "0777"
    nfs:
      shareHost: 192.168.1.xxx
      shareAlldirs: true
      shareAllowedHosts: []
      shareAllowedNetworks: []
      shareMaprootUser: root
      shareMaprootGroup: wheel
      shareMapallUser: ""
      shareMapallGroup: ""

あとは Helm を使って導入していきます。

$ $ helm upgrade --install --values truenas-nfs.yml --create-namespace --namespace democratic-csi trunas-nfs democratic-csi/democratic-csi

Kubernetes 上で PVC 適用 → PV 作成された様子

TrueNAS 上でセットアップされた様子

おわりに

TrueNAS と democratic-csi を組み合わせることで、iSCSI によるブロックアクセス領域と、NFS によるファイルアクセス領域の両方を定義するだけで自動的に利用することが出来るようになりました。
これで、ワークロードに合わせて適切な PV が選択できるようになったことで、よりご家庭の盆栽 Kubernetes が捗るようになったと思います。

参考にしたページ

Moving to TrueNAS and Democratic CSI for Kubernetes Persistent Storage

Discussion