diff --git a/.gitignore b/.gitignore index 52a3eb6239..a49c6fc83d 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,9 @@ gen/docker/ gen/tests/ gen/k8s/ +# K3s +volumes/ + # Rust lib/**/Cargo.lock !lib/bolt/Cargo.lock diff --git a/infra/tf/k8s_cluster_k3d/main.tf b/infra/tf/k8s_cluster_k3d/main.tf index b7708607a7..4db86177ef 100644 --- a/infra/tf/k8s_cluster_k3d/main.tf +++ b/infra/tf/k8s_cluster_k3d/main.tf @@ -12,7 +12,16 @@ locals { repo_port = 5001 } +# Create directory for volumes mount +resource "null_resource" "volumes_dir" { + provisioner "local-exec" { + command = "mkdir -p ${var.volumes_dir}" + } +} + resource "k3d_cluster" "main" { + depends_on = [ null_resource.volumes_dir ] + name = "rivet-${var.namespace}" image = "docker.io/rancher/k3s:v1.29.6-k3s1" @@ -45,6 +54,17 @@ resource "k3d_cluster" "main" { } } + # Links the internal PVC storage to a folder on the host so that it persists when the k3d cluster is + # re-created + dynamic "volume" { + for_each = var.k3d_use_local_repo ? [] : [0] + content { + source = var.volumes_dir + destination = "/var/lib/rancher/k3s/storage" + node_filters = ["all"] + } + } + # HTTP port { host = "0.0.0.0" diff --git a/infra/tf/k8s_cluster_k3d/vars.tf b/infra/tf/k8s_cluster_k3d/vars.tf index 900154c02d..258111d57b 100644 --- a/infra/tf/k8s_cluster_k3d/vars.tf +++ b/infra/tf/k8s_cluster_k3d/vars.tf @@ -14,6 +14,10 @@ variable "cargo_target_dir" { type = string } +variable "volumes_dir" { + type = string +} + variable "api_http_port" { type = number } diff --git a/lib/bolt/Cargo.lock b/lib/bolt/Cargo.lock index 86ca9791d6..d8b8bf68f9 100644 --- a/lib/bolt/Cargo.lock +++ b/lib/bolt/Cargo.lock @@ -549,9 +549,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "fca2be1d5c43812bae364ee3f30b3afcb7877cf59f4aeb94c66f313a41d2fac9" [[package]] name = "bytes-utils" @@ -1715,9 +1715,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "dee4364d9f3b902ef14fab8a1ddffb783a1cb6b4bba3bfc1fa3922732c7de97f" dependencies = [ "zerocopy", ] @@ -2141,9 +2141,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.122" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" dependencies = [ "itoa 1.0.11", "memchr", @@ -3137,9 +3137,9 @@ checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" dependencies = [ "byteorder", "zerocopy-derive", @@ -3147,9 +3147,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" dependencies = [ "proc-macro2", "quote", diff --git a/lib/bolt/core/src/context/project.rs b/lib/bolt/core/src/context/project.rs index 66901dc9d5..741c4e8672 100644 --- a/lib/bolt/core/src/context/project.rs +++ b/lib/bolt/core/src/context/project.rs @@ -766,6 +766,10 @@ impl ProjectContextData { self.path.join("gen") } + pub fn volumes_path(&self) -> PathBuf { + self.path.join("volumes") + } + pub fn tf_path(&self) -> PathBuf { self.path.join("infra").join("tf") } diff --git a/lib/bolt/core/src/dep/terraform/gen.rs b/lib/bolt/core/src/dep/terraform/gen.rs index b20f9a4e21..64d7554cfe 100644 --- a/lib/bolt/core/src/dep/terraform/gen.rs +++ b/lib/bolt/core/src/dep/terraform/gen.rs @@ -274,6 +274,10 @@ async fn vars(ctx: &ProjectContext) { "cargo_target_dir".into(), json!(ctx.cargo_target_dir().display().to_string()), ); + vars.insert( + "volumes_dir".into(), + json!(ctx.volumes_path().display().to_string()), + ); vars.insert( "k3d_use_local_repo".into(), json!(matches!(