fix: update values schema for deploymentMode and dynamic config
- Add deploymentMode enum (persistent | dynamic) - Add fileManager schema (enabled, allowedPaths, deniedPaths) - Add full dynamic mode schema (knative, routingProxy, ingress, authentik) - Relax githubRepo pattern — not required in dynamic mode Validated: helm template renders cleanly for both modes. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
This commit is contained in:
@@ -32,10 +32,101 @@
|
||||
},
|
||||
"required": ["repository", "tag"]
|
||||
},
|
||||
"deploymentMode": {
|
||||
"type": "string",
|
||||
"enum": ["persistent", "dynamic"],
|
||||
"description": "Deployment mode: persistent (PVC-based) or dynamic (Knative serverless)"
|
||||
},
|
||||
"githubRepo": {
|
||||
"type": "string",
|
||||
"description": "GitHub repository URL to clone",
|
||||
"pattern": "^https?://.+/.+/.+$"
|
||||
"description": "GitHub repository URL to clone (required in persistent mode, ignored in dynamic mode)"
|
||||
},
|
||||
"fileManager": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"description": "Enable the built-in web file manager"
|
||||
},
|
||||
"allowedPaths": {
|
||||
"type": "string",
|
||||
"description": "Paths accessible by the file manager (AUTO, ALL, or comma-separated list)"
|
||||
},
|
||||
"deniedPaths": {
|
||||
"type": "string",
|
||||
"description": "Paths to deny access to (takes precedence over allowedPaths)"
|
||||
}
|
||||
},
|
||||
"required": ["enabled"]
|
||||
},
|
||||
"dynamic": {
|
||||
"type": "object",
|
||||
"description": "Configuration for dynamic (serverless) deployment mode",
|
||||
"properties": {
|
||||
"knative": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"minScale": { "type": "integer", "minimum": 0 },
|
||||
"maxScale": { "type": "integer", "minimum": 1 },
|
||||
"target": { "type": "integer", "minimum": 1 },
|
||||
"scaleToZeroGracePeriod": { "type": "string" },
|
||||
"timeoutSeconds": { "type": "integer", "minimum": 60 },
|
||||
"resources": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"requests": { "$ref": "#/$defs/resourceSpec" },
|
||||
"limits": { "$ref": "#/$defs/resourceSpec" }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"routingProxy": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": { "type": "boolean" },
|
||||
"replicas": { "type": "integer", "minimum": 1 },
|
||||
"image": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"repository": { "type": "string" },
|
||||
"tag": { "type": "string" },
|
||||
"pullPolicy": { "type": "string", "enum": ["Always", "IfNotPresent", "Never"] }
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"requests": { "$ref": "#/$defs/resourceSpec" },
|
||||
"limits": { "$ref": "#/$defs/resourceSpec" }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ingress": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": { "type": "boolean" },
|
||||
"className": { "type": "string" },
|
||||
"host": { "type": "string" },
|
||||
"tls": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": { "type": "boolean" },
|
||||
"secretName": { "type": "string" },
|
||||
"issuer": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"authentik": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": { "type": "boolean" },
|
||||
"authUrl": { "type": "string" },
|
||||
"signIn": { "type": "string" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ide": {
|
||||
"type": "object",
|
||||
|
||||
Reference in New Issue
Block a user