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.

Informações da origem

Repositório
shopsys/helm
Última atividade na origem
19 de agosto de 2026 às 00:53
Idioma detectado do SKILL.md
inglês
Estrelas
0
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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 ```
Ver no GitHub