Ephemeral workspaces: remove PVC, use emptyDir
Workspaces are now fully immutable like GH Actions runners — no persistent volume, no init container, no stale state between runs. Fresh emptyDir on every workspace creation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
869d82998b
commit
e801d96410
@@ -76,27 +76,6 @@ data "coder_parameter" "memory" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data "coder_parameter" "disk_size" {
|
|
||||||
name = "disk_size"
|
|
||||||
display_name = "Disk Size (GB)"
|
|
||||||
description = "Persistent home directory size"
|
|
||||||
type = "number"
|
|
||||||
default = "10"
|
|
||||||
mutable = false
|
|
||||||
|
|
||||||
option {
|
|
||||||
name = "5 GB"
|
|
||||||
value = "5"
|
|
||||||
}
|
|
||||||
option {
|
|
||||||
name = "10 GB"
|
|
||||||
value = "10"
|
|
||||||
}
|
|
||||||
option {
|
|
||||||
name = "20 GB"
|
|
||||||
value = "20"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# ─── Automation Parameters ───────────────────────────────────────────────────
|
# ─── Automation Parameters ───────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -375,33 +354,6 @@ resource "kubernetes_resource_quota_v1" "workspace" {
|
|||||||
"limits.cpu" = "${tonumber(data.coder_parameter.cpu.value) * 1000}m"
|
"limits.cpu" = "${tonumber(data.coder_parameter.cpu.value) * 1000}m"
|
||||||
"requests.memory" = "${tonumber(data.coder_parameter.memory.value) / 2}Mi"
|
"requests.memory" = "${tonumber(data.coder_parameter.memory.value) / 2}Mi"
|
||||||
"limits.memory" = "${data.coder_parameter.memory.value}Mi"
|
"limits.memory" = "${data.coder_parameter.memory.value}Mi"
|
||||||
"requests.storage" = "${data.coder_parameter.disk_size.value}Gi"
|
|
||||||
"persistentvolumeclaims" = "1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# Storage
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
resource "kubernetes_persistent_volume_claim_v1" "home" {
|
|
||||||
metadata {
|
|
||||||
name = "home"
|
|
||||||
namespace = kubernetes_namespace_v1.workspace.metadata[0].name
|
|
||||||
labels = local.labels
|
|
||||||
}
|
|
||||||
|
|
||||||
wait_until_bound = false
|
|
||||||
|
|
||||||
spec {
|
|
||||||
access_modes = ["ReadWriteOnce"]
|
|
||||||
storage_class_name = "longhorn-backup"
|
|
||||||
|
|
||||||
resources {
|
|
||||||
requests = {
|
|
||||||
storage = "${data.coder_parameter.disk_size.value}Gi"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -491,8 +443,6 @@ resource "coder_agent" "main" {
|
|||||||
|
|
||||||
# --- Clone repository ---
|
# --- Clone repository ---
|
||||||
if [ -n "$REPO_CLONE_URL" ]; then
|
if [ -n "$REPO_CLONE_URL" ]; then
|
||||||
# Always start fresh for automated tasks to avoid stale state
|
|
||||||
rm -rf ~/project
|
|
||||||
git clone "$REPO_CLONE_URL" ~/project
|
git clone "$REPO_CLONE_URL" ~/project
|
||||||
cd ~/project
|
cd ~/project
|
||||||
|
|
||||||
@@ -600,39 +550,6 @@ resource "kubernetes_deployment_v1" "workspace" {
|
|||||||
name = kubernetes_secret_v1.registry.metadata[0].name
|
name = kubernetes_secret_v1.registry.metadata[0].name
|
||||||
}
|
}
|
||||||
|
|
||||||
init_container {
|
|
||||||
name = "fix-permissions"
|
|
||||||
image = "busybox:latest"
|
|
||||||
|
|
||||||
command = ["sh", "-c", <<-EOC
|
|
||||||
if [ ! -d /home/coder/project ]; then
|
|
||||||
mkdir -p /home/coder/project
|
|
||||||
fi
|
|
||||||
chown -R 1000:1000 /home/coder
|
|
||||||
EOC
|
|
||||||
]
|
|
||||||
|
|
||||||
volume_mount {
|
|
||||||
name = "home"
|
|
||||||
mount_path = "/home/coder"
|
|
||||||
}
|
|
||||||
|
|
||||||
resources {
|
|
||||||
requests = {
|
|
||||||
cpu = "5m"
|
|
||||||
memory = "8Mi"
|
|
||||||
}
|
|
||||||
limits = {
|
|
||||||
cpu = "50m"
|
|
||||||
memory = "32Mi"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
security_context {
|
|
||||||
run_as_user = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
container {
|
container {
|
||||||
name = "coder-agent"
|
name = "coder-agent"
|
||||||
image = "registry.samson.media/coder-workspace:latest"
|
image = "registry.samson.media/coder-workspace:latest"
|
||||||
@@ -718,9 +635,7 @@ resource "kubernetes_deployment_v1" "workspace" {
|
|||||||
|
|
||||||
volume {
|
volume {
|
||||||
name = "home"
|
name = "home"
|
||||||
persistent_volume_claim {
|
empty_dir {}
|
||||||
claim_name = kubernetes_persistent_volume_claim_v1.home.metadata[0].name
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user