# Migration to Helm Chart **Date**: 2026-06-04 **Reason**: Production-ready refactoring ## Critical Issues Fixed ### 1. ❌ No Persistent Storage → ✅ PersistentVolumeClaims **Old**: PostgreSQL and Redis used `emptyDir` volumes - All data lost on pod restart - Not production-ready **New**: All stateful services have PVCs - PostgreSQL: 20Gi PVC on nfs-emporium - Redis: 10Gi PVC on nfs-emporium - RabbitMQ: 5Gi PVC on nfs-emporium ### 2. ❌ Using `latest` Tags → ✅ Pinned Versions **Old**: Images used `latest` or unspecified tags - Unpredictable updates - Hard to rollback - No version control **New**: All images pinned to specific versions - Firecrawl: `v1.0.0` - Redis: `7.4.1-alpine` - RabbitMQ: `3.13.7-management-alpine` - PostgreSQL: `v1.0.0` - Playwright: `v1.0.0` ### 3. ❌ Raw Manifests → ✅ Helm Chart **Old**: Individual YAML files - Hard to maintain - No templating - Difficult to customize **New**: Proper Helm chart structure - Template-based configuration - Easy value overrides - Industry standard deployment ## Migration Steps 1. **Backup** (if needed): Old deployment had ephemeral storage, no data to preserve 2. **ArgoCD Auto-Sync**: Push changes and ArgoCD will: - Delete old resources - Create new Helm release - Provision PVCs - Deploy with pinned versions ## Old Files Location All previous manifests are archived in `old-manifests/` directory for reference. ## Rollback Procedure If needed to rollback: ```bash # Revert git commit git revert HEAD # ArgoCD will automatically sync back to old state # Or manually: argocd app sync firecrawl ``` ## Verification After deployment: ```bash # Check all PVCs are bound kubectl -n firecrawl get pvc # Verify pods are running kubectl -n firecrawl get pods # Check image versions kubectl -n firecrawl get pods -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}' # Test API curl https://spaceship-earth.local.mk-labs.cloud/v0/health/liveness ``` ## Benefits ✅ **Data Persistence**: No more data loss on restarts ✅ **Version Control**: Explicit version management ✅ **Configuration Management**: Clean Helm values ✅ **Maintainability**: Standard Helm patterns ✅ **Production Ready**: Follows Kubernetes best practices ## Notes - Storage class `nfs-emporium` provides persistent NFS-backed storage - All resources properly labeled with Helm chart metadata - Gateway/HTTPRoute configurations preserved - EPCOT theming (spaceship-earth) maintained