{
  "id": "kubectl-cp-basics",
  "title": "Copy Files to Containers",
  "category": "Troubleshooting",
  "difficulty": "Medium",
  "type": "task",
  "weight": 4,
  "description": "## Copy Files Between Containers and the Cluster\n\nThe `kubectl cp` command allows you to copy files and directories to and from running containers.\n\n**Your task:**\n\nA pod named `config-pod` is running with a file at `/src/config.json`. Copy it **into** the same pod at `/app/config.json` using `kubectl cp`.\n\n> Tip: `kubectl cp` syntax is `kubectl cp <source> <pod>:<dest>`",
  "hints": [
    {
      "title": "Use kubectl cp",
      "body": "First copy the file out from /src, then copy it back to /app, or use kubectl exec to verify.",
      "command": "kubectl cp config-pod:/src/config.json /tmp/config.json && kubectl cp /tmp/config.json config-pod:/app/config.json"
    }
  ],
  "setup_commands": [
    {
      "command": "kubectl run config-pod --image=busybox:1.36 --command -- sleep 3600"
    },
    {
      "command": "kubectl wait --for=condition=Ready pod/config-pod --timeout=60s"
    },
    {
      "command": "kubectl exec config-pod -- sh -c 'mkdir -p /src && echo eyJzdGF0dXMiOiAib2sifQo= | base64 -d > /src/config.json'"
    },
    {
      "command": "kubectl exec config-pod -- mkdir -p /app"
    }
  ],
  "validation": {
    "commands": [
      {
        "description": "File /app/config.json exists inside pod",
        "command": "kubectl exec config-pod -- cat /app/config.json 2>/dev/null",
        "expected_output": "{\"status\": \"ok\"}",
        "match": "contains"
      }
    ]
  },
  "default_namespace": "default",
  "teardown_commands": [
    {
      "command": "kubectl delete pod config-pod --ignore-not-found --grace-period=0 --force"
    },
    {
      "command": "rm -f /tmp/config.json"
    }
  ]
}
