Skip to main content

debug-deploy

Diagnosing a failed deploy on a real cluster - identifying which phase failed from the end states, where the logs are, recovery commands, and what must NOT be done. Use when a helmfile/wrapper deploy fails or behaves unexpectedly.

Quellinformationen

Repository
shopsys/helm
Letzte Quellaktivität
19. August 2026 um 00:53
Erkannte Sprache von SKILL.md
Englisch
Sterne
0
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
debug-deploy
description
Diagnosing a failed deploy on a real cluster - identifying which phase failed from the end states, where the logs are, recovery commands, and what must NOT be done. Use when a helmfile/wrapper deploy fails or behaves unexpectedly.
# Debugging a failed deploy Deploy phases (see docs/deploy-flow.md): wrapper prep → infra release (wait) → app release: cron-suspend hook → migrate-application hook → manifests + rollout wait → post-deploy hook → website check. ## 1. Identify the failing phase ```bash NS=<project>-<environment> helm list -n $NS # which releases exist, their status kubectl get jobs -n $NS # hook jobs + their state kubectl -n $NS get job migrate-application -o jsonpath='{.status.conditions[*].type}' kubectl get pods -n $NS # rollout state, crashloops, pending kubectl get events -n $NS --sort-by=.lastTimestamp | tail -30 ``` | Symptom | Phase | Logs | |---|---|---| | infra release failed/pending | redis/rabbitmq not ready | `kubectl describe pod redis-*/rabbitmq-0`; PVC events (storage class!) | | job `migrate-application` Failed | migration | `kubectl logs job/migrate-application -n $NS` | | helm upgrade timed out, pods not Ready | rollout | `kubectl describe pod` (probes, image pull, secrets missing); `kubectl logs` both containers of webserver | | job `post-deploy` Failed | maintenance-off/cache | `kubectl logs job/post-deploy -n $NS` — `set -e` means the FIRST failing phing target killed it | | website check ERROR | app runs but responds ≠200/401 | curl manually with `-v`; ingress controller logs | | ingresses rejected on apply | admission webhook | snippet annotations vs `allow-snippet-annotations` — see README requirements | ## 2. Recovery per failure (what the wrapper does / you may need manually) - **Migration failed**: previous release is intact. Crons were scaled to 0 by cron-suspend → `kubectl scale deployment/cron --replicas=1 -n $NS` restores them on the OLD code. The continuous migration may have enabled the maintenance page → `kubectl exec <webserver-pod> -n $NS -- ./phing maintenance-off`. Re-run = fix the cause, `helmfile apply` again (the failed Job is deleted by `before-hook-creation` automatically). - **Rollout failed**: migration already ran — **DB migrations are NOT rolled back**. `helm rollback` alone can produce old-code/new-schema; check schema compatibility before rolling back. Usually: fix the image/config and roll FORWARD. - **Stuck apply**: hook Jobs are bounded by `activeDeadlineSeconds`; the whole apply by `DEPLOY_TIMEOUT` (wrapper env, default 45 min). ## 3. What NOT to do - Do not delete the `migrate-application` Job before reading its logs (it is kept for them). - Do not `helm uninstall` to "reset" — PVCs (rabbitmq data) and hook leftovers have their own lifecycle; see "Helm hook leftovers" in the migration guide. Decommission = delete namespace. - Do not edit resources manually to "fix" a deploy — the next apply reverts it; fix values. ## 4. Reproduce locally ```bash helmfile -e <env> template # what would be applied helmfile -e <env> diff # against the live cluster DISABLE_WEBSITE_RUNNING_CHECK=true ./deploy/deploy.sh <env> # skip the curl gate ```
Auf GitHub ansehen