{ "id": "annotate-resource-basics", "title": "Annotating Kubernetes Resources", "category": "Core Concepts", "difficulty": "Easy", "type": "task", "weight": 3, "description": "## Annotating Kubernetes Resources\n\nAnnotations attach arbitrary non-identifying metadata to Kubernetes objects — such as contact info, tool versions, or documentation URLs. Unlike labels, annotations **cannot** be used as selectors.\n\n**Your task:**\n\nA Deployment named `myapp` is running in the `default` namespace. Add the following annotations to it:\n- `contact=ops@company.com`\n- `reviewed=true`\n\n```bash\n# Verify:\nkubectl get deployment myapp -o jsonpath='{.metadata.annotations}'\n```", "hints": [ { "title": "kubectl annotate", "body": "Use `kubectl annotate` to imperatively add or overwrite annotations on any resource.", "command": "kubectl annotate deployment myapp contact=ops@company.com reviewed=true" }, { "title": "Overwrite an existing annotation", "body": "If the annotation key already exists, pass `--overwrite` to update it.", "command": "kubectl annotate deployment myapp contact=ops@company.com reviewed=true --overwrite" } ], "setup_commands": [ { "command": "kubectl create deployment myapp --image=nginx:alpine --replicas=1 2>/dev/null || true" }, { "command": "kubectl rollout status deployment/myapp --timeout=60s" } ], "validation": { "commands": [ { "description": "Deployment 'myapp' exists", "command": "kubectl get deployment myapp -o jsonpath='{.metadata.name}'", "expected_output": "myapp", "match": "exact" }, { "description": "Annotation 'contact' is ops@company.com", "command": "kubectl get deployment myapp -o jsonpath='{.metadata.annotations.contact}'", "expected_output": "ops@company.com", "match": "exact" }, { "description": "Annotation 'reviewed' is true", "command": "kubectl get deployment myapp -o jsonpath='{.metadata.annotations.reviewed}'", "expected_output": "true", "match": "exact" } ] }, "default_namespace": "default", "teardown_commands": [ { "command": "kubectl delete deployment myapp --ignore-not-found" } ] }