Upgrade Guide
How to upgrade Sligo Enterprise to a new version.
Before Upgrading
1. Check Release Notes
Review release notes for:
- Breaking changes
- New features
- Migration steps required
- Deprecated features
2. Backup
For in-cluster database:
# Backup PostgreSQL
kubectl exec postgres-0 -n sligo -- pg_dump -U sligo sligo > backup-$(date +%Y%m%d).sql
For external database (RDS):
- Take RDS snapshot via AWS console
3. Review Current Configuration
# Get current values
helm get values sligo-app -n sligo > current-values.yaml
# Check current version
helm list -n sligo
Standard Upgrade Process
1. Update Helm Repository
helm repo update sligo
2. Check Available Versions
helm search repo sligo/sligo-cloud --versions
3. Review Changes
# See what will change
helm diff upgrade sligo-app sligo/sligo-cloud \
--version NEW_VERSION \
-f values-production.yaml \
-n sligo
4. Perform Upgrade
helm upgrade sligo-app sligo/sligo-cloud \
--version NEW_VERSION \
-f values-production.yaml \
-n sligo \
--timeout 10m
5. Verify Upgrade
# Check rollout status
kubectl rollout status deployment/sligo-app -n sligo
kubectl rollout status deployment/sligo-backend -n sligo
kubectl rollout status deployment/mcp-gateway -n sligo
# Check pods
kubectl get pods -n sligo
# Check application health
curl https://app.your-domain.com/api/health
Rollback
If upgrade fails or causes issues:
# Rollback to previous version
helm rollback sligo-app -n sligo
# Or rollback to specific revision
helm rollback sligo-app 1 -n sligo
# Check history
helm history sligo-app -n sligo
Version-Specific Upgrade Notes
Upgrading to 1.1.0 from 1.0.x
Changes:
- Added autoscaling support
- New ingress annotations for AWS ALB
Migration steps:
- Review new autoscaling values
- Update ALB annotations if using AWS
- No breaking changes
Upgrading to 2.0.0 from 1.x.x
Breaking changes:
- Secrets structure changed
- Database configuration restructured
Migration steps:
- Update secrets:
```bash
Old format (deprecated)
kubectl delete secret app-secrets -n sligo
New format
kubectl create secret generic nextjs-secrets
–from-literal=DATABASE_URL=”…”
…
2. **Update values.yaml:**
```yaml
# Old format
database:
host: postgres
# New format
database:
type: internal
internal:
name: postgres
- Perform upgrade
Zero-Downtime Upgrades
For production systems requiring zero downtime:
1. Use Rolling Updates (Default)
Helm automatically performs rolling updates:
# In values.yaml
app:
replicaCount: 3 # Must be > 1 for zero downtime
2. Blue-Green Deployment (Advanced)
# Install new version with different release name
helm install sligo-app-v2 sligo/sligo-cloud \
--version NEW_VERSION \
-f values-production.yaml \
-n sligo
# Switch traffic via ingress update
# Then remove old version:
helm uninstall sligo-app -n sligo
3. Canary Deployment (Advanced)
Use tools like Flagger or Argo Rollouts for gradual traffic shifting.
Database Migrations
If upgrade includes database schema changes:
1. Pre-Upgrade Migration
# Run migration job before upgrade
kubectl apply -f migration-job.yaml -n sligo
# Wait for completion
kubectl wait --for=condition=complete job/db-migration -n sligo --timeout=300s
2. Post-Upgrade Verification
# Verify database schema
kubectl exec -it postgres-0 -n sligo -- psql -U sligo -d sligo -c "\dt"
Configuration Updates
Adding New Features
# In values-production.yaml
# Enable autoscaling
app:
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
Apply changes:
helm upgrade sligo-app sligo/sligo-cloud \
-f values-production.yaml \
-n sligo
Updating Resource Limits
app:
resources:
limits:
cpu: 1000m # Updated from 500m
memory: 1Gi # Updated from 512Mi
Updating Image Tags
To upgrade to a new application version:
- Check available versions in Google Artifact Registry or contact Sligo support
- Update image tags in your
values.yaml:app: image: tag: "v1.2.0" # Updated from v1.1.0 backend: image: tag: "v1.2.0" # Updated from v1.1.0 mcpGateway: image: tag: "v1.2.0" # Updated from v1.1.0 - Apply the upgrade:
helm upgrade sligo-app sligo/sligo-cloud \ -f values-production.yaml \ -n sligo
Important: Always use version tags (e.g., v1.0.0, v1.2.3) in production. Avoid using latest as it can cause unexpected updates.
Troubleshooting Upgrades
Upgrade Stuck
# Check status
helm status sligo-app -n sligo
# Check pods
kubectl get pods -n sligo -w
# Check events
kubectl get events -n sligo --sort-by='.lastTimestamp'
Rollback Failed
If automatic rollback fails:
# Force delete stuck resources
kubectl delete pod <stuck-pod> -n sligo --grace-period=0 --force
# Manual rollback
helm rollback sligo-app -n sligo --force
Configuration Errors
# Validate new values
helm template test sligo/sligo-cloud \
-f values-production.yaml \
--debug
# Check differences
helm diff upgrade sligo-app sligo/sligo-cloud \
-f values-production.yaml \
-n sligo
Best Practices
- Always test upgrades in staging first
- Backup before upgrading
- Review release notes for breaking changes
- Monitor application after upgrade
- Keep old backups for at least 30 days
- Document any customizations made
- Use version pinning in production
# In values-production.yaml
app:
image:
tag: "v1.2.0" # Pin specific version, not "latest"
Scheduled Maintenance
Plan upgrades during low-traffic periods:
- Notify users of maintenance window
- Prepare rollback plan
- Have support team on standby
- Monitor metrics during and after upgrade
- Keep communication channels open
Support
For upgrade assistance:
- Email: support@sligo.ai
- Include: Current version, target version, error messages