refactor(scenarios): split monolithic configuration into individual files
- 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]>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"id": "k8s-admin",
|
||||
"name": "Kubernetes Administrator",
|
||||
"icon": "🧑✈️",
|
||||
"tagline": "CKA exam — cluster administration",
|
||||
"color": "#58a6ff",
|
||||
"colorDim": "rgba(88,166,255,0.12)",
|
||||
"exam_minutes": 120,
|
||||
"scenario_ids": [
|
||||
"rbac-role",
|
||||
"rbac-clusterrole",
|
||||
"serviceaccount-pod",
|
||||
"node-label-selector",
|
||||
"node-taint-toleration",
|
||||
"resource-quota-ns",
|
||||
"limitrange-task",
|
||||
"etcd-backup-mcq",
|
||||
"cluster-upgrade-mcq",
|
||||
"deployment-rollback",
|
||||
"cronjob-task",
|
||||
"job-task",
|
||||
"readiness-probe-task",
|
||||
"pod-affinity-mcq",
|
||||
"nodeport-task",
|
||||
"ingress-task",
|
||||
"dns-resolution-mcq",
|
||||
"endpoint-fix-task",
|
||||
"networkpolicy-egress",
|
||||
"network-policy",
|
||||
"storageclass-mcq",
|
||||
"pvc-dynamic-task",
|
||||
"emptydir-pod",
|
||||
"pv-pvc-mount",
|
||||
"pod-security-context",
|
||||
"broken-deployment",
|
||||
"crashloop-fix",
|
||||
"container-logging-mcq",
|
||||
"pod-disruption-budget-task",
|
||||
"priority-class-task"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"id": "k8s-appdev",
|
||||
"name": "Kubernetes Developer",
|
||||
"icon": "🛠️",
|
||||
"tagline": "CKAD exam — application development",
|
||||
"color": "#bc8cff",
|
||||
"colorDim": "rgba(188,140,255,0.12)",
|
||||
"exam_minutes": 120,
|
||||
"scenario_ids": [
|
||||
"pod-basics-mcq",
|
||||
"kubectl-essentials-mcq",
|
||||
"namespaces-basics",
|
||||
"labels-selectors-mcq",
|
||||
"deploy-nginx",
|
||||
"scale-deployment",
|
||||
"rolling-update-task",
|
||||
"deployment-rollback",
|
||||
"liveness-probe-task",
|
||||
"readiness-probe-task",
|
||||
"configmap-volume",
|
||||
"env-vars-configmap",
|
||||
"secrets-basics",
|
||||
"resource-limits-task",
|
||||
"cronjob-task",
|
||||
"job-task",
|
||||
"emptydir-pod",
|
||||
"pvc-dynamic-task",
|
||||
"services-mcq",
|
||||
"nodeport-task",
|
||||
"ingress-task",
|
||||
"rbac-role",
|
||||
"pod-security-context",
|
||||
"crashloop-fix",
|
||||
"container-logging-mcq"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"id": "k8s-basics",
|
||||
"name": "Kubernetes Basics",
|
||||
"icon": "🌱",
|
||||
"tagline": "Core concepts for beginners",
|
||||
"color": "#3fb950",
|
||||
"colorDim": "rgba(63,185,80,0.12)",
|
||||
"exam_minutes": 60,
|
||||
"scenario_ids": [
|
||||
"pod-basics-mcq",
|
||||
"kubectl-essentials-mcq",
|
||||
"labels-selectors-mcq",
|
||||
"init-containers-mcq",
|
||||
"namespaces-basics",
|
||||
"deploy-nginx",
|
||||
"scale-deployment",
|
||||
"rolling-update-task",
|
||||
"liveness-probe-task",
|
||||
"jobs-cronjobs-mcq",
|
||||
"daemonset-mcq",
|
||||
"configmap-volume",
|
||||
"resource-limits-task",
|
||||
"env-vars-configmap",
|
||||
"secrets-basics",
|
||||
"services-mcq",
|
||||
"multi-container-pod-basics",
|
||||
"expose-service-basics",
|
||||
"pod-labeling-basics",
|
||||
"extract-logs-basics",
|
||||
"edit-deployment-basics",
|
||||
"jsonpath-basics",
|
||||
"dry-run-manifest-basics",
|
||||
"delete-by-label-basics",
|
||||
"kubectl-cp-basics",
|
||||
"exec-command-basics",
|
||||
"annotate-resource-basics",
|
||||
"init-container-task-basics",
|
||||
"restart-policy-mcq",
|
||||
"kubectl-output-format-mcq"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"id": "k8s-security",
|
||||
"name": "Kubernetes Security",
|
||||
"icon": "🛡",
|
||||
"tagline": "CKS exam — hardening and threats",
|
||||
"color": "#f97316",
|
||||
"colorDim": "rgba(249,115,22,0.12)",
|
||||
"exam_minutes": 120,
|
||||
"scenario_ids": [
|
||||
"cks-network-policy",
|
||||
"cks-pod-security-context",
|
||||
"cks-rbac-least-privilege",
|
||||
"cks-seccomp-profile",
|
||||
"cks-immutable-secret",
|
||||
"cks-apparmor-profile",
|
||||
"cks-automount-token",
|
||||
"cks-network-policy-metadata",
|
||||
"cks-rbac-clusterrole",
|
||||
"cks-psa-namespace",
|
||||
"cks-mcq-runtime-security",
|
||||
"cks-mcq-api-server",
|
||||
"cks-mcq-image-footprint",
|
||||
"cks-mcq-psp-replacement",
|
||||
"cks-mcq-kubelet-auth",
|
||||
"cks-readonly-filesystem",
|
||||
"cks-drop-capabilities",
|
||||
"cks-tls-ingress",
|
||||
"cks-image-pull-secret",
|
||||
"cks-mcq-sandboxing",
|
||||
"cks-mcq-audit-policy",
|
||||
"cks-runtime-class",
|
||||
"cks-audit-policy",
|
||||
"cks-egress-namespace",
|
||||
"cks-non-root-enforce"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user