enhancement: Create specialized Helm chart variants for different use cases #35

Closed
opened 2026-02-22 13:12:05 +00:00 by cpfarhood · 0 comments
cpfarhood commented 2026-02-22 13:12:05 +00:00 (Migrated from github.com)

Summary

Create multiple specialized Helm chart variants to serve different use cases more effectively, reducing complexity for users who don't need all features.

Proposed Chart Variants

1. devcontainer-basic/

Target: Simple development environments
Features:

  • IDE + git only
  • No MCP sidecars
  • Minimal resource usage
  • Single developer focus
# Simplified values.yaml
name: ""
githubRepo: ""
ide: vscode
resources:
  small: true  # Predefined small profile

2. devcontainer-full/

Target: Current feature-rich version
Features:

  • All MCP sidecars
  • Full customization options
  • Advanced features
  • Power users

3. devcontainer-team/

Target: Multi-user teams
Features:

  • SSH enabled by default
  • Larger resource allocations
  • Team collaboration features
  • Shared storage optimizations
# Team-focused defaults
ssh:
  enabled: true
resources:
  requests:
    memory: "4Gi"
    cpu: "2000m"
storage:
  size: "64Gi"
persistence:
  sharedWorkspace: true

4. devcontainer-k8s/

Target: Kubernetes administrators
Features:

  • Full cluster access by default
  • Kubernetes + Flux MCP enabled
  • kubectl, helm pre-installed
  • Platform engineering tools
# K8s admin defaults  
clusterAccess: readwrite
mcp:
  sidecars:
    kubernetes: true
    flux: true
    pgtuner: true
tools:
  - kubectl
  - helm
  - flux
  - kustomize

5. devcontainer-ai/

Target: AI/ML development
Features:

  • High-memory configurations
  • GPU support options
  • Jupyter notebooks
  • ML/AI tooling
# AI/ML optimizations
resources:
  requests:
    memory: "8Gi"
    cpu: "4000m"
  gpu: true  # Optional GPU support
tools:
  - jupyter
  - python-ml-stack
  - cuda-toolkit

Implementation Structure

charts/
├── devcontainer-basic/
│   ├── Chart.yaml
│   ├── values.yaml          # Simplified schema
│   └── templates/           # Minimal templates
├── devcontainer-full/       # Current chart (renamed)
├── devcontainer-team/
├── devcontainer-k8s/
└── devcontainer-ai/

Chart Relationships

Shared Components

  • Common templates via chart dependencies
  • Shared base image configurations
  • Common helper templates

Chart Dependencies

# devcontainer-team/Chart.yaml
dependencies:
  - name: devcontainer-common
    version: "^1.0.0"
    repository: "file://../devcontainer-common"

Benefits

For Users

  • Simplified Choice: Pick the right chart for your use case
  • Reduced Complexity: Only relevant options exposed
  • Faster Setup: Sensible defaults for each scenario
  • Better Documentation: Use-case specific guides

For Maintainers

  • Focused Development: Clear target audiences
  • Easier Testing: Test specific use cases
  • Specialized Optimization: Optimize for specific patterns

Distribution Options

Option A: Separate Repositories

git clone https://github.com/cpfarhood/devcontainer-basic
git clone https://github.com/cpfarhood/devcontainer-team

Option B: Single Repo with Multiple Charts

helm install mydev ./charts/devcontainer-basic
helm install team-env ./charts/devcontainer-team

Option C: Helm Repository

helm repo add devcontainer https://cpfarhood.github.io/devcontainer
helm install mydev devcontainer/basic
helm install team-env devcontainer/team

Migration Path

  1. Phase 1: Create basic and team variants
  2. Phase 2: Add k8s and ai variants
  3. Phase 3: Migrate current chart to devcontainer-full
  4. Phase 4: Set up chart repository

Implementation Plan

  • Design shared component architecture
  • Create devcontainer-basic chart
  • Create devcontainer-team chart
  • Test chart variants
  • Set up chart repository
  • Update documentation and examples
  • Plan migration for existing users
## Summary Create multiple specialized Helm chart variants to serve different use cases more effectively, reducing complexity for users who don't need all features. ## Proposed Chart Variants ### 1. `devcontainer-basic/` **Target**: Simple development environments **Features**: - IDE + git only - No MCP sidecars - Minimal resource usage - Single developer focus ```yaml # Simplified values.yaml name: "" githubRepo: "" ide: vscode resources: small: true # Predefined small profile ``` ### 2. `devcontainer-full/` **Target**: Current feature-rich version **Features**: - All MCP sidecars - Full customization options - Advanced features - Power users ### 3. `devcontainer-team/` **Target**: Multi-user teams **Features**: - SSH enabled by default - Larger resource allocations - Team collaboration features - Shared storage optimizations ```yaml # Team-focused defaults ssh: enabled: true resources: requests: memory: "4Gi" cpu: "2000m" storage: size: "64Gi" persistence: sharedWorkspace: true ``` ### 4. `devcontainer-k8s/` **Target**: Kubernetes administrators **Features**: - Full cluster access by default - Kubernetes + Flux MCP enabled - kubectl, helm pre-installed - Platform engineering tools ```yaml # K8s admin defaults clusterAccess: readwrite mcp: sidecars: kubernetes: true flux: true pgtuner: true tools: - kubectl - helm - flux - kustomize ``` ### 5. `devcontainer-ai/` **Target**: AI/ML development **Features**: - High-memory configurations - GPU support options - Jupyter notebooks - ML/AI tooling ```yaml # AI/ML optimizations resources: requests: memory: "8Gi" cpu: "4000m" gpu: true # Optional GPU support tools: - jupyter - python-ml-stack - cuda-toolkit ``` ## Implementation Structure ``` charts/ ├── devcontainer-basic/ │ ├── Chart.yaml │ ├── values.yaml # Simplified schema │ └── templates/ # Minimal templates ├── devcontainer-full/ # Current chart (renamed) ├── devcontainer-team/ ├── devcontainer-k8s/ └── devcontainer-ai/ ``` ## Chart Relationships ### Shared Components - Common templates via chart dependencies - Shared base image configurations - Common helper templates ### Chart Dependencies ```yaml # devcontainer-team/Chart.yaml dependencies: - name: devcontainer-common version: "^1.0.0" repository: "file://../devcontainer-common" ``` ## Benefits ### For Users - **Simplified Choice**: Pick the right chart for your use case - **Reduced Complexity**: Only relevant options exposed - **Faster Setup**: Sensible defaults for each scenario - **Better Documentation**: Use-case specific guides ### For Maintainers - **Focused Development**: Clear target audiences - **Easier Testing**: Test specific use cases - **Specialized Optimization**: Optimize for specific patterns ## Distribution Options ### Option A: Separate Repositories ```bash git clone https://github.com/cpfarhood/devcontainer-basic git clone https://github.com/cpfarhood/devcontainer-team ``` ### Option B: Single Repo with Multiple Charts ```bash helm install mydev ./charts/devcontainer-basic helm install team-env ./charts/devcontainer-team ``` ### Option C: Helm Repository ```bash helm repo add devcontainer https://cpfarhood.github.io/devcontainer helm install mydev devcontainer/basic helm install team-env devcontainer/team ``` ## Migration Path 1. **Phase 1**: Create basic and team variants 2. **Phase 2**: Add k8s and ai variants 3. **Phase 3**: Migrate current chart to devcontainer-full 4. **Phase 4**: Set up chart repository ## Implementation Plan - [ ] Design shared component architecture - [ ] Create devcontainer-basic chart - [ ] Create devcontainer-team chart - [ ] Test chart variants - [ ] Set up chart repository - [ ] Update documentation and examples - [ ] Plan migration for existing users
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: farhoodlabs/devcontainer#35