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.

معلومات المصدر

المستودع
shopsys/helm
آخر نشاط في المصدر
١٩ أغسطس ٢٠٢٦ في ٠٠:٥٣
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٠
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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 ```
عرض على GitHub