{ "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 :`", "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" } ] }