{ "id": "dry-run-manifest-basics", "title": "Generating YAML Manifests", "category": "Core Concepts", "difficulty": "Easy", "type": "task", "weight": 4, "description": "## Generating and Applying Manifests with Dry Run\n\nInstead of writing YAML from scratch, you can use `kubectl` to generate templates using `--dry-run=client -o yaml` and then apply them.\n\n**Your task:**\n\nUse `kubectl run` with `--dry-run=client -o yaml` to generate a Pod manifest for `web-pod` using image `httpd:alpine`, then pipe it directly to `kubectl apply -f -` to create the pod.\n\n```bash\nkubectl run web-pod --image=httpd:alpine --dry-run=client -o yaml | kubectl apply -f -\n```", "hints": [ { "title": "Combine dry-run with apply", "body": "Chain kubectl run --dry-run=client -o yaml with kubectl apply -f - using a pipe.", "command": "kubectl run web-pod --image=httpd:alpine --dry-run=client -o yaml | kubectl apply -f -" } ], "setup_commands": [], "validation": { "commands": [ { "description": "Pod 'web-pod' exists", "command": "kubectl get pod web-pod -o jsonpath='{.metadata.name}'", "expected_output": "web-pod", "match": "exact" }, { "description": "Pod uses httpd:alpine image", "command": "kubectl get pod web-pod -o jsonpath='{.spec.containers[0].image}'", "expected_output": "httpd:alpine", "match": "exact" } ] }, "default_namespace": "default", "teardown_commands": [ { "command": "kubectl delete pod web-pod --ignore-not-found --grace-period=0 --force" } ] }