diff --git a/nomad-job/csi-nfs-controler.nomad b/nomad-job/csi-nfs-controler.nomad new file mode 100644 index 0000000..014a30f --- /dev/null +++ b/nomad-job/csi-nfs-controler.nomad @@ -0,0 +1,26 @@ +job "csi-nfs-controller" { + datacenters = ["homelab"] + group "controller" { + task "csi-nfs-controller" { + driver = "docker" + config { + image = "registry.k8s.io/sig-storage/nfsplugin:v4.5.0" + args = [ + "--v=5", + "--nodeid=${attr.unique.hostname}", + "--endpoint=unix:///csi/csi.sock", + "--drivername=nfs.csi.k8s.io" + ] + } + csi_plugin { + id = "nfs" + type = "controller" + mount_dir = "/csi" + } + resources { + memory = 32 + cpu = 100 + } + } + } +} diff --git a/nomad-job/csi-nfs-node.nomad b/nomad-job/csi-nfs-node.nomad new file mode 100644 index 0000000..dcd4e40 --- /dev/null +++ b/nomad-job/csi-nfs-node.nomad @@ -0,0 +1,29 @@ +job "csi-nfs-nodes" { + datacenters = ["homelab","hetzner"] + type = "system" + group "csi-nfs-nodes" { + task "plugin" { + driver = "docker" + config { + image = "registry.k8s.io/sig-storage/nfsplugin:v4.5.0" + args = [ + "--v=5", + "--nodeid=${attr.unique.hostname}", + "--endpoint=unix:///csi/csi.sock", + "--drivername=nfs.csi.k8s.io" + ] + # node plugins must run as privileged jobs because they + # mount disks to the host + privileged = true + } + csi_plugin { + id = "nfs" + type = "node" + mount_dir = "/csi" + } + resources { + memory = 50 + } + } + } +} diff --git a/nomad-job/grafana.nomad b/nomad-job/grafana.nomad index bf78773..b7dd6d6 100644 --- a/nomad-job/grafana.nomad +++ b/nomad-job/grafana.nomad @@ -3,7 +3,7 @@ job "grafana" { priority = 50 type = "service" meta { - forcedeploiement = 1 + forcedeploiement = 2 } group "grafana" { network { @@ -11,7 +11,12 @@ job "grafana" { to = 3000 } } - + volume "grafana" { + type = "csi" + source = "grafana" + access_mode = "multi-node-multi-writer" + attachment_mode = "file-system" + } service { name = "grafana" port = "http" @@ -34,13 +39,17 @@ job "grafana" { } task "dashboard" { + volume_mount { + volume = "grafana" + destination = "/grafana" + } driver = "docker" config { image = "grafana/grafana" ports = ["http"] volumes = [ - "/mnt/diskstation/nomad/grafana/config:/etc/grafana", - "/mnt/diskstation/nomad/grafana/lib:/var/lib/grafana" + "grafana:/etc/grafana", + "grafana:/var/lib/grafana" ] } resources { diff --git a/nomad-volume/volume-grafana.hcl b/nomad-volume/volume-grafana.hcl new file mode 100644 index 0000000..7599dd0 --- /dev/null +++ b/nomad-volume/volume-grafana.hcl @@ -0,0 +1,17 @@ +type = "csi" +id = "grafana" +name = "grafana" +plugin_id = "nfs" +external_id = "grafana" +capability { + access_mode = "multi-node-multi-writer" + attachment_mode = "file-system" +} +context { + server = "nfs.service.consul" + share = "/var/local/volume1/nomad/grafana" +} +mount_options { + fs_type = "nfs" + mount_flags = [ "timeo=30", "intr", "vers=3", "_netdev" , "nolock" ] +}