{
  "id": "crashloop-fix",
  "title": "Fix a CrashLoopBackOff Pod",
  "category": "Troubleshooting",
  "difficulty": "Medium",
  "type": "task",
  "weight": 7,
  "description": "## Fix a CrashLoopBackOff\n\nA deployment `crash-app` is in `CrashLoopBackOff` because it was deployed with a broken command.\n\n**Your task:**\n\nFix the `crash-app` deployment so all pods run successfully. The container should run `nginx -g 'daemon off;'` (the default nginx command). Update the deployment to remove the broken command override.\n\n```bash\n# Check what's wrong:\nkubectl describe deployment crash-app\nkubectl logs -l app=crash-app\n```",
  "hints": [
    {
      "title": "Remove the broken command",
      "body": "Use `kubectl patch` or `kubectl edit deployment crash-app`. Remove the `command` override so nginx uses its default entrypoint.",
      "command": "kubectl patch deployment crash-app --type=json -p='[{\"op\":\"remove\",\"path\":\"/spec/template/spec/containers/0/command\"}]'"
    },
    {
      "title": "Alternative: kubectl set",
      "body": "You can also edit the deployment directly and delete the command field.",
      "command": "kubectl edit deployment crash-app"
    }
  ],
  "setup_commands": [
    {
      "command": "kubectl create deployment crash-app --image=nginx:alpine --replicas=1 2>/dev/null || true"
    },
    {
      "command": "kubectl patch deployment crash-app --type=json -p='[{\"op\":\"add\",\"path\":\"/spec/template/spec/containers/0/command\",\"value\":[\"/bin/sh\",\"-c\",\"exit 1\"]}]'"
    }
  ],
  "validation": {
    "commands": [
      {
        "description": "Deployment 'crash-app' has 1 ready replica",
        "command": "kubectl get deployment crash-app -o jsonpath='{.status.readyReplicas}' 2>/dev/null | grep -v '^$' || echo 0",
        "expected_output": "1",
        "match": "exact"
      }
    ]
  },
  "default_namespace": "default",
  "teardown_commands": [
    {
      "command": "kubectl delete deployment crash-app --ignore-not-found"
    }
  ]
}
