Add HA for CV and Docs: zero-downtime deploys #273

Merged
eblume merged 1 commit from feature/ha-cv-docs-zero-downtime into main 2026-02-26 07:53:22 -08:00
Owner

Summary

  • Set replicas: 2 with maxUnavailable: 0 / maxSurge: 1 on CV and Docs deployments so rolling updates never drop below 2 ready pods
  • Add PodDisruptionBudgets (minAvailable: 1) to protect against node drains and cluster maintenance
  • Add Fly.io cache purge step to cv-deploy.yaml workflow (docs already had this) so CV deploys don't serve stale cached content

Deployment and Testing

  • argocd app diff cv / argocd app diff docs from branch
  • Deploy from branch: argocd app set cv --revision feature/ha-cv-docs-zero-downtime && argocd app sync cv
  • Verify 2 pods running: kubectl get pods -n cv --context=minikube-indri
  • Test rolling restart: kubectl rollout restart deployment/cv -n cv --context=minikube-indri
  • During rollout, confirm continuous availability via curl -I https://cv.eblu.me
  • After merge: reset ArgoCD to main, re-sync both apps
## Summary - Set `replicas: 2` with `maxUnavailable: 0` / `maxSurge: 1` on CV and Docs deployments so rolling updates never drop below 2 ready pods - Add PodDisruptionBudgets (`minAvailable: 1`) to protect against node drains and cluster maintenance - Add Fly.io cache purge step to `cv-deploy.yaml` workflow (docs already had this) so CV deploys don't serve stale cached content ## Deployment and Testing - [ ] `argocd app diff cv` / `argocd app diff docs` from branch - [ ] Deploy from branch: `argocd app set cv --revision feature/ha-cv-docs-zero-downtime && argocd app sync cv` - [ ] Verify 2 pods running: `kubectl get pods -n cv --context=minikube-indri` - [ ] Test rolling restart: `kubectl rollout restart deployment/cv -n cv --context=minikube-indri` - [ ] During rollout, confirm continuous availability via `curl -I https://cv.eblu.me` - [ ] After merge: reset ArgoCD to main, re-sync both apps
- Set replicas: 2 with maxUnavailable: 0 / maxSurge: 1 on both
  deployments so rolling updates never drop below 2 ready pods
- Add PodDisruptionBudgets (minAvailable: 1) to protect against
  node drains and cluster maintenance
- Add Fly.io cache purge step to cv-deploy workflow (docs already
  had this) so CV deploys don't serve stale cached content

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eblume merged commit be3cdad1cb into main 2026-02-26 07:53:22 -08:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
eblume/blumeops!273
No description provided.