- Split `scenarios/scenarios.json` into individual JSON files under `scenarios/data/` named `<scenario-id>.json` - Split `scenarios/bundles.json` into individual JSON files under `scenarios/bundles/` named `<bundle-id>.json` - Updated `backend/server.js` to dynamically load scenario and bundle files from their respective directories - Updated documentation in `scenarios/SCHEMA.md` and `README.md` to reflect the new repository layout and contributor workflow Signed-off-by: Abhinav Sinha <[email protected]>
50 lines
1.8 KiB
JSON
50 lines
1.8 KiB
JSON
{
|
|
"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"
|
|
}
|
|
]
|
|
}
|