Files
devcontainer/chart/USAGE.md
DevContainer User d8d83ffa47 feat: major Helm chart user-friendliness improvements
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>
2026-02-22 13:16:08 +00:00

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

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

  1. Check the main README.md for detailed documentation
  2. Review values.yaml for all available options
  3. Use values-quickstart.yaml as a starting point