CRITICAL FIXES: ✅ Add PersistentVolumeClaims for all stateful services - PostgreSQL: 20Gi PVC on nfs-emporium (data persistence) - Redis: 10Gi PVC on nfs-emporium (cache and queue) - RabbitMQ: 5Gi PVC on nfs-emporium (message queue) ✅ Pin all image versions (no more 'latest' tags) - Firecrawl API/Worker: v1.0.0 - Playwright Service: v1.0.0 - PostgreSQL (nuq-postgres): v1.0.0 - Redis: 7.4.1-alpine - RabbitMQ: 3.13.7-management-alpine ✅ Convert raw manifests to proper Helm chart - Template-based configuration - Centralized values.yaml - Proper Helm helpers and labels - Easy configuration management WHAT CHANGED: - Created chart/ directory with full Helm chart structure - Moved old manifests to old-manifests/ for reference - Updated ArgoCD Application to use Helm chart source - Added comprehensive README and MIGRATION docs - All services now use nfs-emporium storage class - Redis configured with AOF persistence - Proper resource limits and health checks - Gateway/HTTPRoute configs integrated into chart DEPLOYMENT: ArgoCD will automatically sync and apply changes. Old ephemeral data will be lost (fresh start with persistence). Resolves data loss issues and brings deployment to production standards.
2.5 KiB
2.5 KiB
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
- Backup (if needed): Old deployment had ephemeral storage, no data to preserve
- 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:
# Revert git commit
git revert HEAD
# ArgoCD will automatically sync back to old state
# Or manually:
argocd app sync firecrawl
Verification
After deployment:
# 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-emporiumprovides persistent NFS-backed storage - All resources properly labeled with Helm chart metadata
- Gateway/HTTPRoute configurations preserved
- EPCOT theming (spaceship-earth) maintained