Switch to democratic CSI driver

Signed-off-by: main <magic_rb@redalder.org>
This commit is contained in:
main 2022-10-27 11:38:38 +02:00
parent cd88bccac1
commit 766e15b326
No known key found for this signature in database
GPG key ID: 08D5287CC5DDCA0E
6 changed files with 98 additions and 44 deletions

View file

@ -6,7 +6,7 @@ variable "datacenters" {
type = list(string) type = list(string)
} }
job "nfs-controller" { job "democratic-csi-nfs-controller" {
datacenters = var.datacenters datacenters = var.datacenters
region = var.region region = var.region
@ -15,23 +15,37 @@ job "nfs-controller" {
driver = "docker" driver = "docker"
config { config {
image = "mcr.microsoft.com/k8s/csi/nfs-csi:latest" image = "docker.io/democraticcsi/democratic-csi:latest"
args = [ args = [
"--endpoint=unix://csi/csi.sock", "--csi-version=1.5.0",
"-v=5", # must match the csi_plugin.id attribute below
"--csi-name=org.democratic-csi.nfs",
"--driver-config-file=${NOMAD_TASK_DIR}/driver-config-file.yaml",
"--log-level=info",
"--csi-mode=controller",
"--server-socket=/csi/csi.sock",
] ]
} }
template {
destination = "${NOMAD_TASK_DIR}/driver-config-file.yaml"
data = <<EOH
driver: node-manual
EOH
}
csi_plugin { csi_plugin {
id = "nfs" # must match --csi-name arg
id = "org.democratic-csi.nfs"
type = "controller" type = "controller"
mount_dir = "/csi" mount_dir = "/csi"
} }
resources { resources {
cpu = 250 cpu = 500
memory = 128 memory = 256
} }
} }
} }

View file

@ -6,7 +6,7 @@ variable "datacenters" {
type = list(string) type = list(string)
} }
job "nfs-node" { job "democratic-csi-nfs-node" {
datacenters = var.datacenters datacenters = var.datacenters
region = var.region region = var.region
@ -16,28 +16,48 @@ job "nfs-node" {
task "plugin" { task "plugin" {
driver = "docker" driver = "docker"
env {
CSI_NODE_ID = "${attr.unique.hostname}"
}
config { config {
image = "mcr.microsoft.com/k8s/csi/nfs-csi:latest" image = "docker.io/democraticcsi/democratic-csi:latest"
args = [ args = [
"--v=5", "--csi-version=1.5.0",
"--nodeid=${attr.unique.hostname}", # must match the csi_plugin.id attribute below
"--endpoint=unix:///csi/csi.sock", "--csi-name=org.democratic-csi.nfs",
"--drivername=nfs.csi.k8s.io" "--driver-config-file=${NOMAD_TASK_DIR}/driver-config-file.yaml",
"--log-level=info",
"--csi-mode=node",
"--server-socket=/csi/csi.sock",
] ]
# node plugins must run as privileged jobs because they
# mount disks to the host
privileged = true privileged = true
ipc_mode = "host"
network_mode = "host"
}
template {
destination = "${NOMAD_TASK_DIR}/driver-config-file.yaml"
data = <<EOH
driver: node-manual
EOH
} }
csi_plugin { csi_plugin {
id = "nfs" # must match --csi-name arg
id = "org.democratic-csi.nfs"
type = "node" type = "node"
mount_dir = "/csi" mount_dir = "/csi"
} }
resources { resources {
cpu = 250 cpu = 500
memory = 128 memory = 256
} }
} }
} }

View file

@ -4,7 +4,7 @@ data "local_file" "ingress-upstreams" {
resource "nomad_volume" "ingress-letsencrypt" { resource "nomad_volume" "ingress-letsencrypt" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "ingress-letsencrypt" volume_id = "ingress-letsencrypt"
name = "ingress-letsencrypt" name = "ingress-letsencrypt"
external_id = "ingress-letsencrypt" external_id = "ingress-letsencrypt"
@ -17,6 +17,8 @@ resource "nomad_volume" "ingress-letsencrypt" {
context = { context = {
server = "10.64.2.1" server = "10.64.2.1"
share = "/var/nfs/ingress-letsencrypt" share = "/var/nfs/ingress-letsencrypt"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {

View file

@ -1,6 +1,6 @@
resource "nomad_volume" "home-assistant_hass" { resource "nomad_volume" "home-assistant_hass" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "home-assistant_hass" volume_id = "home-assistant_hass"
name = "home-assistant_hass" name = "home-assistant_hass"
external_id = "home-assistant_hass" external_id = "home-assistant_hass"
@ -13,17 +13,19 @@ resource "nomad_volume" "home-assistant_hass" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/home-assistant_hass" share = "/var/nfs/home-assistant_hass"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }
resource "nomad_volume" "home-assistant_zigbee2mqtt" { resource "nomad_volume" "home-assistant_zigbee2mqtt" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "home-assistant_zigbee2mqtt" volume_id = "home-assistant_zigbee2mqtt"
name = "home-assistant_zigbee2mqtt" name = "home-assistant_zigbee2mqtt"
external_id = "home-assistant_zigbee2mqtt" external_id = "home-assistant_zigbee2mqtt"
@ -36,17 +38,19 @@ resource "nomad_volume" "home-assistant_zigbee2mqtt" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/home-assistant_zigbee2mqtt" share = "/var/nfs/home-assistant_zigbee2mqtt"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }
resource "nomad_volume" "home-assistant_mosquitto" { resource "nomad_volume" "home-assistant_mosquitto" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "home-assistant_mosquitto" volume_id = "home-assistant_mosquitto"
name = "home-assistant_mosquitto" name = "home-assistant_mosquitto"
external_id = "home-assistant_mosquitto" external_id = "home-assistant_mosquitto"
@ -59,11 +63,13 @@ resource "nomad_volume" "home-assistant_mosquitto" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/home-assistant_mosquitto" share = "/var/nfs/home-assistant_mosquitto"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }

View file

@ -1,6 +1,6 @@
resource "nomad_volume" "jellyfin-cache" { resource "nomad_volume" "jellyfin-cache" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "jellyfin-cache" volume_id = "jellyfin-cache"
name = "jellyfin-cache" name = "jellyfin-cache"
external_id = "jellyfin-cache" external_id = "jellyfin-cache"
@ -13,17 +13,19 @@ resource "nomad_volume" "jellyfin-cache" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/jellyfin/cache" share = "/var/nfs/jellyfin/cache"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }
resource "nomad_volume" "jellyfin-config" { resource "nomad_volume" "jellyfin-config" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "jellyfin-config" volume_id = "jellyfin-config"
name = "jellyfin-config" name = "jellyfin-config"
external_id = "jellyfin-config" external_id = "jellyfin-config"
@ -36,17 +38,19 @@ resource "nomad_volume" "jellyfin-config" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/jellyfin/config" share = "/var/nfs/jellyfin/config"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }
resource "nomad_volume" "jellyfin-media" { resource "nomad_volume" "jellyfin-media" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "jellyfin-media" volume_id = "jellyfin-media"
name = "jellyfin-media" name = "jellyfin-media"
external_id = "jellyfin-media" external_id = "jellyfin-media"
@ -59,11 +63,13 @@ resource "nomad_volume" "jellyfin-media" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/jellyfin/media" share = "/var/nfs/jellyfin/media"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }

View file

@ -1,6 +1,6 @@
resource "nomad_volume" "syncthing-data" { resource "nomad_volume" "syncthing-data" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "syncthing-data" volume_id = "syncthing-data"
name = "syncthing-data" name = "syncthing-data"
external_id = "syncthing-data" external_id = "syncthing-data"
@ -13,17 +13,19 @@ resource "nomad_volume" "syncthing-data" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/syncthing/data" share = "/var/nfs/syncthing/data"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }
resource "nomad_volume" "syncthing-storage" { resource "nomad_volume" "syncthing-storage" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "syncthing-storage" volume_id = "syncthing-storage"
name = "syncthing-storage" name = "syncthing-storage"
external_id = "syncthing-storage" external_id = "syncthing-storage"
@ -36,17 +38,19 @@ resource "nomad_volume" "syncthing-storage" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/syncthing/storage" share = "/var/nfs/syncthing/storage"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }
resource "nomad_volume" "syncthing-config" { resource "nomad_volume" "syncthing-config" {
type = "csi" type = "csi"
plugin_id = "nfs" plugin_id = "org.democratic-csi.nfs"
volume_id = "syncthing-config" volume_id = "syncthing-config"
name = "syncthing-config" name = "syncthing-config"
external_id = "syncthing-config" external_id = "syncthing-config"
@ -59,11 +63,13 @@ resource "nomad_volume" "syncthing-config" {
context = { context = {
server = "blowhole.hosts.in.redalder.org" server = "blowhole.hosts.in.redalder.org"
share = "/var/nfs/syncthing/config" share = "/var/nfs/syncthing/config"
node_attach_driver = "nfs"
provisioner_driver = "node-manual"
} }
mount_options { mount_options {
fs_type = "nfs" fs_type = "nfs"
mount_flags = [ "nolock", "hard" ] mount_flags = [ "nfsvers=3", "hard", "async" ]
} }
} }