Replace the destroy-and-recreate deployment model with in-place updates. deploy_k8s.py: All resource creation (Deployment, Service, Ingress, NodePort, ConfigMap) now uses create-or-update semantics. If a resource already exists (409 Conflict), it patches instead of failing. For Deployments, this triggers a k8s rolling update — old pods serve traffic until new pods pass readiness checks. deployment.py: restart() no longer calls down(). It just calls up() which patches existing resources. No namespace deletion, no downtime gap, no race conditions. k8s handles the rollout. This gives: - Zero-downtime deploys (old pods serve during rollout) - Automatic rollback (if new pods fail readiness, rollout stalls) - Manual rollback via kubectl rollout undo Closes so-l2l (parts A and B). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| compose | ||
| k8s | ||
| webapp | ||
| __init__.py | ||
| deploy_types.py | ||
| deploy_util.py | ||
| deploy.py | ||
| deployer_factory.py | ||
| deployer.py | ||
| deployment_context.py | ||
| deployment_create.py | ||
| deployment.py | ||
| dns_probe.py | ||
| images.py | ||
| spec.py | ||
| stack_state.py | ||
| stack.py | ||