diff options
| author | Patrick Spek <p.spek@tyil.nl> | 2025-09-11 15:32:42 +0200 |
|---|---|---|
| committer | Patrick Spek <p.spek@tyil.nl> | 2025-09-11 15:32:42 +0200 |
| commit | 97846730d1f8dc5b38a45ebb15a8b6d9764c8192 (patch) | |
| tree | 4a2dd5883080f363627db08cefb8f73a31ca2a68 | |
| download | kubernetes-hostpath-claim-97846730d1f8dc5b38a45ebb15a8b6d9764c8192.tar.gz kubernetes-hostpath-claim-97846730d1f8dc5b38a45ebb15a8b6d9764c8192.tar.bz2 | |
| -rw-r--r-- | claim.tf | 17 | ||||
| -rw-r--r-- | main.tf | 47 | ||||
| -rw-r--r-- | volume.tf | 32 |
3 files changed, 96 insertions, 0 deletions
diff --git a/claim.tf b/claim.tf new file mode 100644 index 0000000..c483e40 --- /dev/null +++ b/claim.tf @@ -0,0 +1,17 @@ +resource "kubernetes_persistent_volume_claim_v1" "this" { + metadata { + name = var.name + namespace = var.namespace + } + + spec { + volume_name = kubernetes_persistent_volume_v1.this.metadata[0].name + access_modes = var.modes + + resources { + requests = { + storage = var.size + } + } + } +} @@ -0,0 +1,47 @@ +terraform { + required_providers { + kubernetes = { + source = "hashicorp/kubernetes" + version = "~> 2.37.1" + } + } +} + +variable "name" { + type = string +} + +variable "namespace" { + type = string + default = "default" +} + +variable "path" { + type = string +} + +variable "type" { + type = string + default = "DirectoryOrCreate" +} + +variable "size" { + type = string + default = "10Gi" +} + +variable "modes" { + type = list(string) + default = [ + "ReadWriteOnce", + ] +} + +variable "nodes" { + type = list(string) + default = [] +} + +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..645b5a0 --- /dev/null +++ b/volume.tf @@ -0,0 +1,32 @@ +resource "kubernetes_persistent_volume_v1" "this" { + metadata { + name = var.name + } + + spec { + access_modes = var.modes + + capacity = { + storage = var.size + } + + persistent_volume_source { + host_path { + path = var.path + type = var.type + } + } + + node_affinity { + required { + node_selector_term { + match_expressions { + key = "kubernetes.io/hostname" + operator = "In" + values = var.nodes + } + } + } + } + } +} |
