From f6f02f76984704c09d3637dc9a86d7c4c0bceb1b Mon Sep 17 00:00:00 2001 From: Tim Olson Date: Wed, 1 Apr 2026 20:01:45 -0400 Subject: [PATCH] removed storageclass specs --- deploy/k8s/prod/configs/gateway-config.yaml | 1 - gateway/src/k8s/client.ts | 10 ++++++++-- gateway/src/main.ts | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/deploy/k8s/prod/configs/gateway-config.yaml b/deploy/k8s/prod/configs/gateway-config.yaml index 5c7212f3..1aacba21 100644 --- a/deploy/k8s/prod/configs/gateway-config.yaml +++ b/deploy/k8s/prod/configs/gateway-config.yaml @@ -32,7 +32,6 @@ data: in_cluster: true sandbox_image: git.dxod.org/dexorder/dexorder/ai-sandbox:latest sidecar_image: git.dxod.org/dexorder/dexorder/ai-lifecycle-sidecar:latest - storage_class: standard image_pull_policy: Always # DragonflyDB (Redis-compatible, for hot storage and session management) diff --git a/gateway/src/k8s/client.ts b/gateway/src/k8s/client.ts index d1e7c7f8..275dd2ae 100644 --- a/gateway/src/k8s/client.ts +++ b/gateway/src/k8s/client.ts @@ -123,14 +123,13 @@ export class KubernetesClient { const templateContent = await fs.readFile(templatePath, 'utf-8'); const r = spec.k8sResources; - const rendered = templateContent + let rendered = templateContent .replace(/\{\{userId\}\}/g, spec.userId) .replace(/\{\{deploymentName\}\}/g, deploymentName) .replace(/\{\{serviceName\}\}/g, serviceName) .replace(/\{\{pvcName\}\}/g, pvcName) .replace(/\{\{sandboxImage\}\}/g, spec.sandboxImage) .replace(/\{\{sidecarImage\}\}/g, spec.sidecarImage) - .replace(/\{\{storageClass\}\}/g, spec.storageClass) .replace(/\{\{imagePullPolicy\}\}/g, spec.imagePullPolicy || 'Always') .replace(/\{\{licenseType\}\}/g, spec.licenseType) .replace(/\{\{memoryRequest\}\}/g, r.memoryRequest) @@ -143,6 +142,13 @@ export class KubernetesClient { .replace(/\{\{idleTimeoutMinutes\}\}/g, String(r.idleTimeoutMinutes)) .replace(/\{\{serviceNamespace\}\}/g, spec.serviceNamespace); + // Omit storageClassName entirely when unset so the PVC uses the cluster default + if (spec.storageClass) { + rendered = rendered.replace(/\{\{storageClass\}\}/g, spec.storageClass); + } else { + rendered = rendered.replace(/[ \t]*storageClassName: \{\{storageClass\}\}\n/g, ''); + } + // Parse YAML documents (deployment, pvc, service) const documents = yaml.loadAll(rendered) as any[]; diff --git a/gateway/src/main.ts b/gateway/src/main.ts index b0371731..a09715ec 100644 --- a/gateway/src/main.ts +++ b/gateway/src/main.ts @@ -178,7 +178,7 @@ function loadConfig() { context: configData.kubernetes?.context || process.env.KUBERNETES_CONTEXT, sandboxImage: configData.kubernetes?.sandbox_image || process.env.SANDBOX_IMAGE || 'ghcr.io/dexorder/sandbox:latest', sidecarImage: configData.kubernetes?.sidecar_image || process.env.SIDECAR_IMAGE || 'ghcr.io/dexorder/lifecycle-sidecar:latest', - storageClass: configData.kubernetes?.storage_class || process.env.SANDBOX_STORAGE_CLASS || 'standard', + storageClass: configData.kubernetes?.storage_class || process.env.SANDBOX_STORAGE_CLASS || '', imagePullPolicy: configData.kubernetes?.image_pull_policy || process.env.IMAGE_PULL_POLICY || 'Always', }, };