- 
                Notifications
    You must be signed in to change notification settings 
- Fork 270
Open
Labels
Milestone
Description
Is your feature request related to a problem? Please describe.
Currently, the semantic router deployment uses raw Kubernetes manifests with Kustomize for configuration management. While this works for basic deployments, it presents several challenges for production environments and broader adoption:
- Limited Customization: Users need to manually edit YAML files to customize deployments for different environments (dev, staging, production)
- Complex Configuration Management: Managing multiple configuration variants requires maintaining separate Kustomize overlays or manual file modifications
- Difficult Upgrades: No built-in versioning or rollback capabilities for deployment configurations
- Poor Reusability: Hard to share and reuse deployment configurations across different clusters or organizations
- Missing Best Practices: No templating for common patterns like resource limits, security contexts, or environment-specific configurations
Describe the solution you'd like
Convert the existing Kubernetes deployment to a comprehensive Helm chart that provides:
Core Helm Chart Features:
- Templated Manifests: Convert all existing Kubernetes resources (Deployment, Service, ConfigMap, PVC, Namespace) to Helm templates
- Values-driven Configuration: Centralized values.yamlfile for all configurable parameters
- Environment Flexibility: Support for different deployment profiles (development, staging, production)
- Upgrade Management: Built-in versioning and rollback capabilities through Helm
Specific Implementation Requirements:
- 
Chart Structure: deploy/helm/semantic-router/ ├── Chart.yaml ├── values.yaml ├── values-dev.yaml ├── values-prod.yaml ├── templates/ │ ├── deployment.yaml │ ├── service.yaml │ ├── configmap.yaml │ ├── pvc.yaml │ ├── namespace.yaml │ ├── _helpers.tpl │ └── NOTES.txt └── README.md
- 
Configurable Parameters (via values.yaml): - Image repository, tag, and pull policy
- Resource requests and limits for both init and main containers
- Replica count and scaling configuration
- Service types and port configurations
- Storage class and PVC size
- Environment-specific configuration overrides
- Security contexts and pod security standards
- Ingress configuration (optional)
- Monitoring and observability settings
 
- 
Multi-Environment Support: - values-dev.yaml: Optimized for local development (reduced resources, debug enabled)
- values-prod.yaml: Production-ready configuration (higher resources, security hardened)
- Environment-specific model configurations and endpoint settings
 
- 
Backward Compatibility: - Maintain existing functionality and configuration options
- Provide migration guide from Kustomize to Helm
- Keep existing make targets working with Helm backend
 
- 
Documentation: - Comprehensive README with installation and configuration instructions
- Parameter reference documentation
- Migration guide from current Kustomize setup
- Best practices for different deployment scenarios
 
Additional context
Current Deployment Components to Template:
- Deployment with init container for model downloading
- Services for gRPC (50051), HTTP API (8080), and metrics (9190)
- ConfigMap for application configuration and tools database
- PersistentVolumeClaim for model storage
- Namespace for resource isolation
Integration Points:
- Maintain compatibility with existing CI/CD pipelines
- Support for both local development (kind) and production Kubernetes clusters
- Integration with existing monitoring and observability stack
- Support for custom model configurations and endpoint definitions
Benefits for Users:
- Simplified deployment process with single helm installcommand
- Easy customization through values files without YAML editing
- Professional deployment management with versioning and rollbacks
- Better integration with GitOps workflows
- Easier adoption for organizations already using Helm
The Helm chart should follow Helm best practices and be suitable for publication to a Helm repository for broader community adoption.