summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2025-10-21 12:45:56 +0200
committerPatrick Spek <p.spek@tyil.nl>2025-10-21 12:45:56 +0200
commita5a086e397aa5073140927bd4d271eeb8022ef1e (patch)
treed55ebb18eb803022a7c6bd1834029d5f6cce31db
downloadkubernetes-cifs-claim-master.tar.gz
kubernetes-cifs-claim-master.tar.bz2
Initial commitHEADv0.1.0master
-rw-r--r--claim.tf18
-rw-r--r--main.tf84
-rw-r--r--volume.tf42
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
+ }
+ }
+ }
+}
diff --git a/main.tf b/main.tf
new file mode 100644
index 0000000..25371ae
--- /dev/null
+++ b/main.tf
@@ -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")
+ }
+ }
+ }
+ }
+}