Go to file
Henrik Jess Nielsen 53d696ea73
All checks were successful
Deploy CSI Jobs / deploy (push) Successful in 36s
fix(csi): survive int reboots, pin image by digest, raise memory
Both plugin jobs are pinned to int with count = 1 and had no restart or
reschedule stanza. When int goes away the allocations are marked Lost and
never return — csi-nfs-node showed 1 Complete / 3 Lost / 0 Failed, so these
were never application crashes, they were the node disappearing. The plugin
has been down since 2026-06-08 as a result. Adds restart + unlimited
reschedule with exponential backoff so they recover on their own.

The image was :latest, against our own rule for Nomad. The copy cached on
int is sha256:944d0e65 and roughly seven months old, so any fresh pull on
another node would get a different build — a good way to make failures
irreproducible. Pinned to the digest that has actually been running.

Memory was 128 MB for a Node.js process. Raised to 256 with memory_max so
mount and provisioning activity can burst without permanently reserving it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 23:22:45 +02:00

nomad-csi

Nomad CSI storage for i80.dk — democratic-csi + NFS on int.i80.dk.

Architecture

  • NFS server: int.i80.dk exports /opt/csi-volumes to 192.168.15.0/24
  • CSI driver: democratic-csi v1.9.0
  • Plugin ID: org.democratic-csi.nfs

Deploy

# One-time: deploy CSI controller + node plugin
nomad job run csi/controller.nomad
nomad job run csi/node.nomad

# Verify
nomad plugin status org.democratic-csi.nfs

Create a volume

# Edit csi/volumes/example.hcl with your id/name/size, then:
nomad volume create csi/volumes/my-volume.hcl

# Volumes are persistent — only deleted explicitly:
nomad volume delete my-volume-id

Use in a job

volume "data" {
  type            = "csi"
  source          = "my-volume-id"
  access_mode     = "single-node-writer"
  attachment_mode = "file-system"
}

# ...in the task:
volume_mount {
  volume      = "data"
  destination = "/data"
}

Expanding to all workers

When ready, update csi/node.nomad:

  • Change type = "service"type = "system"
  • Remove the constraint block

Workers need nfs-common installed (via Ansible storage.yml playbook).

Description
No description provided
Readme 41 KiB
Languages
HCL 100%