3.0 KiB
3.0 KiB
🔄 Manual Rollback - Quick Reference
🚀 Quick Start (2 minutes)
Jenkins → demo-nginx-rollback → Build with Parameters
ROLLBACK_METHOD: IMAGE_TAG
TARGET_VERSION: main-21
SKIP_HEALTH_CHECK: true (recommended!)
DRY_RUN: false
→ Build → ✅ SUCCESS!
📋 3 Ways to Rollback
1. By Image Tag (Fastest)
Method: IMAGE_TAG
Target: main-21
Use: When you know the build number
2. By Revision Number
Method: REVISION_NUMBER
Target: 2
Use: Rollback N steps back
Find: kubectl rollout history deployment/demo-nginx -n demo-app
3. By Git Commit
Method: GIT_COMMIT
Target: abc123def
Use: Exact code state
Find: git log --oneline apps/demo-nginx/deployment.yaml
⚡ Emergency Rollback (30 seconds)
# Fastest - kubectl
kubectl rollout undo deployment/demo-nginx -n demo-app
# To specific revision
kubectl rollout undo deployment/demo-nginx -n demo-app --to-revision=25
🔍 Verify Rollback
# Check image
kubectl get deployment demo-nginx -n demo-app \
-o jsonpath='{.spec.template.spec.containers[0].image}'
# Check pods
kubectl get pods -n demo-app -l app=demo-nginx
# Test health
POD=$(kubectl get pods -n demo-app -l app=demo-nginx -o jsonpath='{.items[0].metadata.name}')
kubectl exec $POD -n demo-app -- wget -q -O- http://localhost/health
⚙️ Parameters
| Parameter | Default | Recommended |
|---|---|---|
| ROLLBACK_METHOD | IMAGE_TAG | IMAGE_TAG |
| TARGET_VERSION | (required) | main-21 |
| SKIP_HEALTH_CHECK | false | true |
| DRY_RUN | false | false |
🐛 Common Issues - FIXED
| Issue | Fix | Status |
|---|---|---|
| Wrong container name | Use nginx |
✅ Fixed |
| Whitespace in input | Auto-trim | ✅ Fixed |
| RBAC permission | Added pods/exec | ✅ Fixed |
| Health check timing | Use SKIP_HEALTH_CHECK | ⚠️ Workaround |
| Bash loop broken | Use 1 2 3 4 5 |
✅ Fixed |
💡 Best Practices
- ✅ Always test with
DRY_RUN: truefirst - ✅ Use
SKIP_HEALTH_CHECK: truefor faster rollback - ✅ Verify manually after rollback (30-60s wait)
- ✅ Document rollback reason in Jenkins build comment
- ✅ Check ArgoCD sync status after rollback
📊 Verification Commands
# Full status check
kubectl get deployment demo-nginx -n demo-app
kubectl get pods -n demo-app -l app=demo-nginx
kubectl rollout history deployment/demo-nginx -n demo-app
# Watch pods update
watch kubectl get pods -n demo-app
# Check logs
kubectl logs -n demo-app -l app=demo-nginx --tail=50
🎯 Success Checklist
- Jenkins pipeline exists (demo-nginx-rollback)
- RBAC configured (pods/exec permission)
- Target version identified
- DRY_RUN tested
- Rollback executed
- Pods verified (Running)
- Image version confirmed
- Health check passed (manual)
- ArgoCD synced
📚 Full Documentation
See: apps/demo-nginx/docs/ROLLBACK_MANUAL.md
Quick Reference - Keep this handy! 📌