nomad

HCL and Docker files for Nomad deployments
git clone https://git.in0rdr.ch/nomad.git
Log | Files | Refs | Pull requests |Archive

commit 569a859b57e2b1540c76e7dbf649116b36fe7c32
parent 5cfaf38aa335ccebf1a22997a73595210ebd8dd7
Author: Andreas Gruhler <agruhl@gmx.ch>
Date:   Fri, 17 Oct 2025 22:03:52 +0200

feat(nfs): add rocketduck csi

Diffstat:
Mhcl/infra/nfs/README | 5+++--
Mhcl/infra/nfs/plugin-nfs-controller.nomad | 14++++++++++----
Mhcl/infra/nfs/plugin-nfs-nodes.nomad | 13+++++++++----
3 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/hcl/infra/nfs/README b/hcl/infra/nfs/README @@ -3,7 +3,8 @@ NFS CSI DRIVER Run stateful workloads with the NFS CSI driver: - https://learn.hashicorp.com/tutorials/nomad/stateful-workloads-csi-volumes -- https://github.com/kubernetes-csi/csi-driver-nfs +- https://gitlab.com/rocketduck/csi-plugin-nfs +- https://discuss.hashicorp.com/t/nfs-on-nomad-the-modern-way/61223/4 ON NOMAD -------- @@ -29,7 +30,7 @@ Spin up a Docker development NFS server (see "docker-compose.yaml"): $ docker-compose up -d -Create the export: +Create the export (no longer strictly necessary with rocketduck): $ docker exec nfs mkdir /data/csi-test If external NFS server (not the docker-compose example here), don't forget to: diff --git a/hcl/infra/nfs/plugin-nfs-controller.nomad b/hcl/infra/nfs/plugin-nfs-controller.nomad @@ -1,3 +1,5 @@ +# https://gitlab.com/rocketduck/csi-plugin-nfs/-/blob/main/nomad/controller.nomad + variable "affinity_node" { type = string default = "na" @@ -19,15 +21,19 @@ job "plugin-nfs-controller" { driver = "podman" config { - image = "mcr.microsoft.com/k8s/csi/nfs-csi:latest" + image = "registry.gitlab.com/rocketduck/csi-plugin-nfs:1.1.0" force_pull = true args = [ - "--v=5", + "--type=controller", "--nodeid=${attr.unique.hostname}", - "--endpoint=unix:///csi/csi.sock", - "--drivername=nfs.csi.k8s.io" + "--nfs-server=turris.lan:/srv/nfs", + "--mount-options=defaults", ] + + # required so the mount works even after stopping the container + network_mode = "host" + #privileged = true } csi_plugin { diff --git a/hcl/infra/nfs/plugin-nfs-nodes.nomad b/hcl/infra/nfs/plugin-nfs-nodes.nomad @@ -1,3 +1,5 @@ +# https://gitlab.com/rocketduck/csi-plugin-nfs/-/blob/main/nomad/node.nomad + job "plugin-nfs-nodes" { datacenters = ["dc1"] @@ -12,16 +14,19 @@ job "plugin-nfs-nodes" { driver = "podman" config { - image = "mcr.microsoft.com/k8s/csi/nfs-csi:latest" + image = "registry.gitlab.com/rocketduck/csi-plugin-nfs:1.1.0" force_pull = true args = [ - "--v=5", + "--type=node", "--nodeid=${attr.unique.hostname}", - "--endpoint=unix:///csi/csi.sock", - "--drivername=nfs.csi.k8s.io" + "--nfs-server=turris.lan:/srv/nfs", + "--mount-options=defaults", ] + # required so the mount works even after stopping the container + network_mode = "host" + # node plugins must run as privileged jobs because they # mount disks to the host privileged = true