Files
k3s-gitops/apps/demo-nginx/docs/ROLLBACK_QUICK_REF.md
2026-01-06 08:45:12 +00:00

145 lines
3.0 KiB
Markdown

# 🔄 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)
```bash
# 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
```bash
# 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
1. ✅ Always test with `DRY_RUN: true` first
2. ✅ Use `SKIP_HEALTH_CHECK: true` for faster rollback
3. ✅ Verify manually after rollback (30-60s wait)
4. ✅ Document rollback reason in Jenkins build comment
5. ✅ Check ArgoCD sync status after rollback
---
## 📊 Verification Commands
```bash
# 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](./ROLLBACK_MANUAL.md)
---
**Quick Reference - Keep this handy! 📌**