diff options
| author | Patrick Spek <p.spek@tyil.nl> | 2025-10-21 12:45:56 +0200 |
|---|---|---|
| committer | Patrick Spek <p.spek@tyil.nl> | 2025-10-21 12:45:56 +0200 |
| commit | a5a086e397aa5073140927bd4d271eeb8022ef1e (patch) | |
| tree | d55ebb18eb803022a7c6bd1834029d5f6cce31db | |
| download | kubernetes-cifs-claim-master.tar.gz kubernetes-cifs-claim-master.tar.bz2 | |
| -rw-r--r-- | claim.tf | 18 | ||||
| -rw-r--r-- | main.tf | 84 | ||||
| -rw-r--r-- | volume.tf | 42 |
3 files changed, 144 insertions, 0 deletions
diff --git a/claim.tf b/claim.tf new file mode 100644 index 0000000..e5ac82c --- /dev/null +++ b/claim.tf @@ -0,0 +1,18 @@ +resource "kubernetes_persistent_volume_claim_v1" "this" { + metadata { + name = var.name + namespace = var.namespace + } + + spec { + storage_class_name = var.class + volume_name = kubernetes_persistent_volume_v1.this.metadata[0].name + access_modes = var.modes + + resources { + requests = { + storage = var.size + } + } + } +} @@ -0,0 +1,84 @@ +terraform { + required_providers { + kubernetes = { + source = "hashicorp/kubernetes" + version = "~> 2.37.1" + } + } +} + +variable "name" { + type = string +} + +variable "namespace" { + type = string + default = "default" +} + +variable "driver" { + type = string + default = "smb.csi.k8s.io" +} + +variable "class" { + type = string + default = "" +} + +variable "server" { + type = string +} + +variable "share" { + type = string +} + +variable "credentials" { + type = map(string) + default = { + secret = "" + namespace = "default" + } +} + +variable "size" { + type = string + default = "10Gi" +} + +variable "modes" { + type = list(string) + default = [ + "ReadWriteMany", + ] +} + +variable "mount_options" { + type = list(string) + default = [] +} + +variable "uid" { + type = number + default = 1000 +} + +variable "gid" { + type = number + default = null +} + +variable "file_mode" { + type = string + default = "0777" +} + +variable "dir_mode" { + type = string + default = "0777" +} + +output "claim" { + value = kubernetes_persistent_volume_claim_v1.this.metadata[0].name +} diff --git a/volume.tf b/volume.tf new file mode 100644 index 0000000..909f841 --- /dev/null +++ b/volume.tf @@ -0,0 +1,42 @@ +resource "kubernetes_persistent_volume_v1" "this" { + metadata { + name = var.name + } + + spec { + storage_class_name = var.class + access_modes = var.modes + + capacity = { + storage = var.size + } + + persistent_volume_reclaim_policy = "Retain" + + mount_options = concat(var.mount_options, [ + "cache=strict", + "dir_mode=${var.dir_mode}", + "file_mode=${var.file_mode}", + "gid=${var.gid != null ? var.gid : var.uid}", + "mfsymlinks", + "noperm", + "noserverino", + "uid=${var.uid}", + ]) + + persistent_volume_source { + csi { + driver = var.driver + volume_handle = "${var.server}/${var.share}##" + volume_attributes = { + source = "//${var.server}/${var.share}" + } + + node_stage_secret_ref { + name = var.credentials.secret + namespace = try(var.credentials.namespace, "default") + } + } + } + } +} |
