d8d83ffa47
Implements comprehensive enhancements to make the Helm chart more user-friendly and easier to deploy across different scenarios. 🎯 **IMPLEMENTED IMPROVEMENTS:** **1. Values Organization & Grouping** - Reorganized values.yaml with logical sections: - Basic Configuration (name, image, githubRepo) - Access & Interface (ide, ssh, display, user) - Infrastructure & Resources (storage, resources, shm, clusterAccess) - Integrations (happy, mcp sidecars) - Smart Defaults & Auto-Detection - Updated deployment templates to use new structure - Maintains clean, navigable configuration **2. Simplified Quick-Start Values** - Added values-quickstart.yaml for 80% of users - Just 2 required fields: name + githubRepo - Includes usage instructions and common customizations - Copy-paste ready deployment experience **3. Better Documentation Structure** - Added values.schema.json for IDE validation and autocomplete - Created comprehensive USAGE.md with real-world examples: - Development, team, K8s admin, AI/ML, lightweight scenarios - Secret configuration examples - Resource sizing by use case - Common troubleshooting patterns **4. Smart Defaults & Auto-Detection** - Added template helpers for intelligent resource sizing - Environment auto-detection based on naming patterns - Smart MCP sidecar selection based on cluster access - Resource profile auto-selection (auto/small/medium/large/xlarge) - Enhanced _helpers.tpl with smart default functions 🎫 **CREATED GITHUB ISSUES** for future enhancements: - #32: Helm chart preset profiles - #33: Split large deployment.yaml template - #34: Advanced auto-detection for Kubernetes environments - #35: Specialized Helm chart variants (basic/team/k8s/ai) - #36: Installation and configuration helper scripts - #37: Comprehensive validation and health monitoring - #38: User experience improvements with better error messages - #39: Comprehensive examples and template library 📊 **IMPACT:** - Reduced required configuration from ~20 values to 2 essential fields - Added IDE support with schema validation - Created guided examples for common scenarios - Established foundation for advanced auto-detection - Planned comprehensive tooling ecosystem 🚀 **USAGE:** ```bash # Quick start (new users) cp chart/values-quickstart.yaml my-values.yaml # Edit name and githubRepo helm install mydev ./chart -f my-values.yaml # Full customization (power users) # Edit chart/values.yaml with organized sections helm install mydev ./chart ``` 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>
6.6 KiB
6.6 KiB
Dev Container Helm Chart Usage Guide
This guide provides common usage patterns and examples for the Dev Container Helm chart.
Quick Start
1. Minimal Installation (Recommended)
Use the quickstart values for the simplest setup:
# Copy and customize quickstart values
cp values-quickstart.yaml my-values.yaml
# Edit my-values.yaml to set your name and repo:
# name: myproject
# githubRepo: https://github.com/youruser/yourproject
# Install
helm install myproject ./chart -f my-values.yaml
2. One-Command Installation
helm install mydev ./chart \
--set name=mydev \
--set githubRepo=https://github.com/youruser/yourrepo
Common Use Cases
Development Environment
Scenario: Standard development with GitHub integration
name: dev-environment
githubRepo: https://github.com/company/project
ide:
type: vscode
mcp:
sidecars:
kubernetes:
enabled: true
playwright:
enabled: true
flux:
enabled: false # Disable if not using Flux
Team Workspace
Scenario: Shared development environment with more resources
name: team-workspace
githubRepo: https://github.com/company/project
resources:
requests:
memory: "4Gi"
cpu: "2000m"
limits:
memory: "16Gi"
cpu: "8000m"
storage:
size: 64Gi
ssh:
enabled: true # Enable SSH access for team
clusterAccess: readwrite # Full cluster access
Kubernetes Admin Environment
Scenario: Platform engineering with full cluster access
name: k8s-admin
githubRepo: https://github.com/company/k8s-configs
clusterAccess: readwrite
mcp:
sidecars:
kubernetes:
enabled: true
flux:
enabled: true
pgtuner:
enabled: true # Database administration
playwright:
enabled: false # Save resources
AI/ML Development
Scenario: AI development with browser automation
name: ai-playground
githubRepo: https://github.com/company/ai-project
resources:
requests:
memory: "8Gi" # More memory for ML workloads
cpu: "4000m"
limits:
memory: "32Gi"
cpu: "16000m"
storage:
size: 128Gi # Large datasets
mcp:
sidecars:
playwright:
enabled: true # Web scraping, testing
kubernetes:
enabled: false # Save resources
flux:
enabled: false
Lightweight Environment
Scenario: Resource-constrained setup
name: lightweight
githubRepo: https://github.com/youruser/small-project
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "1000m"
storage:
size: 8Gi
mcp:
sidecars:
kubernetes:
enabled: false
flux:
enabled: false
playwright:
enabled: false
# Only keep essential sidecars enabled
Secret Configuration
Basic Secrets
# GitHub access only
kubectl create secret generic devcontainer-mydev-secrets-env \
--from-literal=GITHUB_TOKEN='ghp_...' \
--from-literal=VNC_PASSWORD='changeme'
Extended Secrets
# Full feature set
kubectl create secret generic devcontainer-mydev-secrets-env \
--from-literal=GITHUB_TOKEN='ghp_...' \
--from-literal=VNC_PASSWORD='changeme' \
--from-literal=SSH_AUTHORIZED_KEYS='ssh-ed25519 AAAA...' \
--from-literal=HOMEASSISTANT_URL='http://homeassistant.local:8123' \
--from-literal=HOMEASSISTANT_TOKEN='eyJ...' \
--from-literal=DATABASE_URI='postgresql://user:pass@postgres:5432/db'
Storage Configuration
Different Storage Classes
# For different Kubernetes distributions
storage:
className: "" # Auto-detect (recommended)
# className: longhorn # Longhorn
# className: nfs-client # NFS
# className: fast-ssd # Custom fast storage
Storage Sizes by Use Case
# Small projects
storage:
size: 8Gi
# Standard development
storage:
size: 32Gi
# Large projects / datasets
storage:
size: 128Gi
# Team environments
storage:
size: 256Gi
Access Patterns
VNC Only (Default)
ide:
type: vscode
# Access via: kubectl port-forward deployment/devcontainer-mydev 5800:5800
SSH Only
ide:
type: none
ssh:
enabled: true
# Access via: kubectl port-forward deployment/devcontainer-mydev 2222:22
# ssh -p 2222 user@localhost
Both VNC and SSH
ide:
type: vscode
ssh:
enabled: true
# VNC: kubectl port-forward deployment/devcontainer-mydev 5800:5800
# SSH: kubectl port-forward deployment/devcontainer-mydev 2222:22
Resource Profiles
Small (1-2 developers)
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "4Gi"
cpu: "2000m"
Medium (standard development)
resources:
requests:
memory: "2Gi"
cpu: "1000m"
limits:
memory: "8Gi"
cpu: "4000m"
Large (intensive workloads)
resources:
requests:
memory: "4Gi"
cpu: "2000m"
limits:
memory: "16Gi"
cpu: "8000m"
XLarge (AI/ML, data processing)
resources:
requests:
memory: "8Gi"
cpu: "4000m"
limits:
memory: "32Gi"
cpu: "16000m"
MCP Sidecar Combinations
Minimal (basic development)
mcp:
sidecars:
kubernetes:
enabled: false
flux:
enabled: false
playwright:
enabled: true # Keep for web testing
Standard (full-stack development)
mcp:
sidecars:
kubernetes:
enabled: true
flux:
enabled: false
playwright:
enabled: true
DevOps/Platform (infrastructure work)
mcp:
sidecars:
kubernetes:
enabled: true
flux:
enabled: true
pgtuner:
enabled: true
playwright:
enabled: false
All Features
mcp:
sidecars:
kubernetes:
enabled: true
flux:
enabled: true
homeassistant:
enabled: true
pgtuner:
enabled: true
playwright:
enabled: true
Troubleshooting
Values Validation
Your IDE should automatically validate values.yaml against the schema. If not:
# Manual validation (if you have a JSON schema validator)
helm template ./chart -f values.yaml > /dev/null
Common Issues
Resource Limits: Start with smaller resource requests and increase as needed.
Storage Class: Use className: "" for auto-detection.
GitHub Access: Ensure GITHUB_TOKEN has repo scope.
MCP Sidecars: Disable unused sidecars to save resources.
Getting Help
- Check the main README.md for detailed documentation
- Review values.yaml for all available options
- Use values-quickstart.yaml as a starting point