Cloudeka Helm Chart Creator
Generate production-ready Helm charts for the Cloudeka environment with mandatory security constraints and optional GPU support.
Cloudeka Mandatory Constraints
Every chart MUST include:
securityContext: runAsUser: 1000 runAsNonRoot: true allowPrivilegeEscalation: false
Resources MUST always be defined in values.yaml, never hardcoded in templates.
Default storage class: storage-nvme-c1.
Workflow
- •Ask user: app name, container image, ports, and what the app does
- •Determine if GPU is needed (ML/AI/LLM workload = yes)
- •Determine which K8s resources are needed (Deployment is always included)
- •Generate the full chart directory:
- •
Chart.yaml - •
templates/_helpers.tpl - •
templates/deployment.yaml(always) - •
templates/service.yaml(if networking needed) - •
templates/pvc.yaml(if persistent storage needed) - •
templates/configmap.yaml(if config data needed) - •
templates/hpa.yaml(if autoscaling needed) - •
templates/ingress.yaml(if ingress needed) - •
templates/serviceaccount.yaml(if service account needed) - •
values.yaml
- •
- •Populate
values.yamlwith sensible defaults
Template Reference
Read references/base-templates.md for all Helm template patterns (Deployment, Service, PVC, ConfigMap, HPA, Ingress, ServiceAccount, _helpers.tpl, Chart.yaml, values.yaml structure).
GPU Workloads
When the workload requires GPU (user mentions ML, AI, LLM, inference, training, CUDA, GPU):
- •Read references/gpu-config.md for GPU-specific configuration
- •Add to deployment:
runtimeClassName: nvidia, GPU resources, shared memory volume (/dev/shm) - •Add node affinity for GPU type selection (L40S or H100)
- •Add
dekallmtoleration - •Use higher failureThreshold for probes (30-40) since GPU workloads take longer to initialize
When the workload does NOT require GPU, omit all GPU-specific config (no affinity, no tolerations, no runtimeClassName, no nvidia resources, no /dev/shm).
Image Registry
- •Cloudeka registry:
dekaregistry.cloudeka.id/<namespace>/<image>:<tag> - •Public registries (Docker Hub, ghcr.io, etc.) are also supported
- •Default to Cloudeka registry when user doesn't specify
Output
Generate all files as actual files in the user's specified directory. After generation, list the created files and briefly explain what each values.yaml section controls.