dojo.md 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/courses/GENERATION_LOG.md +72 -0
  2. package/courses/api-error-handling/course.yaml +16 -0
  3. package/courses/api-error-handling/scenarios/level-1/error-response-format.yaml +131 -0
  4. package/courses/api-error-handling/scenarios/level-1/http-status-codes-basics.yaml +90 -0
  5. package/courses/api-error-handling/scenarios/level-1/rate-limiting-basics.yaml +135 -0
  6. package/courses/api-error-handling/scenarios/level-1/request-validation-errors.yaml +208 -0
  7. package/courses/api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +189 -0
  8. package/courses/api-error-handling/scenarios/level-2/idempotency-retry-logic.yaml +159 -0
  9. package/courses/api-error-handling/scenarios/level-2/rfc-7807-problem-details.yaml +178 -0
  10. package/courses/api-error-handling/scenarios/level-2/webhook-error-handling.yaml +211 -0
  11. package/courses/api-error-handling/scenarios/level-3/distributed-tracing-errors.yaml +275 -0
  12. package/courses/aws-lambda-debugging/course.yaml +11 -0
  13. package/courses/aws-lambda-debugging/scenarios/level-1/api-gateway-integration.yaml +71 -0
  14. package/courses/aws-lambda-debugging/scenarios/level-1/cloudwatch-logs-basics.yaml +64 -0
  15. package/courses/aws-lambda-debugging/scenarios/level-1/cold-start-basics.yaml +70 -0
  16. package/courses/aws-lambda-debugging/scenarios/level-1/environment-variable-issues.yaml +72 -0
  17. package/courses/aws-lambda-debugging/scenarios/level-1/first-debugging-shift.yaml +73 -0
  18. package/courses/aws-lambda-debugging/scenarios/level-1/handler-import-errors.yaml +71 -0
  19. package/courses/aws-lambda-debugging/scenarios/level-1/iam-permission-errors.yaml +68 -0
  20. package/courses/aws-lambda-debugging/scenarios/level-1/invocation-errors.yaml +72 -0
  21. package/courses/aws-lambda-debugging/scenarios/level-1/lambda-timeout-errors.yaml +65 -0
  22. package/courses/aws-lambda-debugging/scenarios/level-1/memory-and-oom.yaml +70 -0
  23. package/courses/aws-lambda-debugging/scenarios/level-2/async-invocation-failures.yaml +72 -0
  24. package/courses/aws-lambda-debugging/scenarios/level-2/cold-start-optimization.yaml +76 -0
  25. package/courses/aws-lambda-debugging/scenarios/level-2/dynamodb-streams-debugging.yaml +70 -0
  26. package/courses/aws-lambda-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +71 -0
  27. package/courses/aws-lambda-debugging/scenarios/level-2/lambda-concurrency-management.yaml +70 -0
  28. package/courses/aws-lambda-debugging/scenarios/level-2/lambda-layers-debugging.yaml +76 -0
  29. package/courses/aws-lambda-debugging/scenarios/level-2/sam-local-debugging.yaml +74 -0
  30. package/courses/aws-lambda-debugging/scenarios/level-2/sqs-event-source.yaml +72 -0
  31. package/courses/aws-lambda-debugging/scenarios/level-2/vpc-networking-issues.yaml +71 -0
  32. package/courses/aws-lambda-debugging/scenarios/level-2/xray-tracing.yaml +62 -0
  33. package/courses/aws-lambda-debugging/scenarios/level-3/advanced-debugging-shift.yaml +72 -0
  34. package/courses/aws-lambda-debugging/scenarios/level-3/container-image-lambda.yaml +79 -0
  35. package/courses/aws-lambda-debugging/scenarios/level-3/cross-account-invocation.yaml +72 -0
  36. package/courses/aws-lambda-debugging/scenarios/level-3/eventbridge-patterns.yaml +79 -0
  37. package/courses/aws-lambda-debugging/scenarios/level-3/iac-deployment-debugging.yaml +68 -0
  38. package/courses/aws-lambda-debugging/scenarios/level-3/kinesis-stream-processing.yaml +64 -0
  39. package/courses/aws-lambda-debugging/scenarios/level-3/lambda-at-edge.yaml +64 -0
  40. package/courses/aws-lambda-debugging/scenarios/level-3/lambda-extensions-debugging.yaml +67 -0
  41. package/courses/aws-lambda-debugging/scenarios/level-3/powertools-observability.yaml +79 -0
  42. package/courses/aws-lambda-debugging/scenarios/level-3/step-functions-debugging.yaml +80 -0
  43. package/courses/aws-lambda-debugging/scenarios/level-4/cost-optimization-strategy.yaml +67 -0
  44. package/courses/aws-lambda-debugging/scenarios/level-4/expert-debugging-shift.yaml +62 -0
  45. package/courses/aws-lambda-debugging/scenarios/level-4/incident-management-serverless.yaml +61 -0
  46. package/courses/aws-lambda-debugging/scenarios/level-4/multi-region-serverless.yaml +67 -0
  47. package/courses/aws-lambda-debugging/scenarios/level-4/observability-platform-design.yaml +71 -0
  48. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-architecture-design.yaml +64 -0
  49. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-data-architecture.yaml +66 -0
  50. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-migration-strategy.yaml +65 -0
  51. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-security-design.yaml +60 -0
  52. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-testing-strategy.yaml +62 -0
  53. package/courses/aws-lambda-debugging/scenarios/level-5/board-serverless-strategy.yaml +63 -0
  54. package/courses/aws-lambda-debugging/scenarios/level-5/consulting-serverless-adoption.yaml +57 -0
  55. package/courses/aws-lambda-debugging/scenarios/level-5/industry-serverless-patterns.yaml +62 -0
  56. package/courses/aws-lambda-debugging/scenarios/level-5/ma-serverless-integration.yaml +75 -0
  57. package/courses/aws-lambda-debugging/scenarios/level-5/master-debugging-shift.yaml +61 -0
  58. package/courses/aws-lambda-debugging/scenarios/level-5/organizational-serverless-transformation.yaml +65 -0
  59. package/courses/aws-lambda-debugging/scenarios/level-5/regulatory-serverless.yaml +61 -0
  60. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-economics.yaml +65 -0
  61. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-future-technology.yaml +66 -0
  62. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-platform-design.yaml +71 -0
  63. package/courses/docker-container-debugging/course.yaml +11 -0
  64. package/courses/docker-container-debugging/scenarios/level-1/container-exit-codes.yaml +59 -0
  65. package/courses/docker-container-debugging/scenarios/level-1/container-networking-basics.yaml +69 -0
  66. package/courses/docker-container-debugging/scenarios/level-1/docker-logs-debugging.yaml +67 -0
  67. package/courses/docker-container-debugging/scenarios/level-1/dockerfile-build-failures.yaml +71 -0
  68. package/courses/docker-container-debugging/scenarios/level-1/environment-variable-issues.yaml +74 -0
  69. package/courses/docker-container-debugging/scenarios/level-1/first-debugging-shift.yaml +70 -0
  70. package/courses/docker-container-debugging/scenarios/level-1/image-pull-failures.yaml +68 -0
  71. package/courses/docker-container-debugging/scenarios/level-1/port-mapping-issues.yaml +67 -0
  72. package/courses/docker-container-debugging/scenarios/level-1/resource-limits-oom.yaml +70 -0
  73. package/courses/docker-container-debugging/scenarios/level-1/volume-mount-problems.yaml +66 -0
  74. package/courses/docker-container-debugging/scenarios/level-2/container-health-checks.yaml +73 -0
  75. package/courses/docker-container-debugging/scenarios/level-2/docker-compose-debugging.yaml +66 -0
  76. package/courses/docker-container-debugging/scenarios/level-2/docker-exec-debugging.yaml +71 -0
  77. package/courses/docker-container-debugging/scenarios/level-2/image-layer-optimization.yaml +81 -0
  78. package/courses/docker-container-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +73 -0
  79. package/courses/docker-container-debugging/scenarios/level-2/logging-and-log-rotation.yaml +76 -0
  80. package/courses/docker-container-debugging/scenarios/level-2/multi-stage-build-debugging.yaml +76 -0
  81. package/courses/docker-container-debugging/scenarios/level-2/network-debugging-tools.yaml +67 -0
  82. package/courses/docker-container-debugging/scenarios/level-2/pid1-signal-handling.yaml +71 -0
  83. package/courses/docker-container-debugging/scenarios/level-2/security-scanning-basics.yaml +67 -0
  84. package/courses/docker-container-debugging/scenarios/level-3/advanced-debugging-shift.yaml +77 -0
  85. package/courses/docker-container-debugging/scenarios/level-3/buildkit-optimization.yaml +67 -0
  86. package/courses/docker-container-debugging/scenarios/level-3/container-filesystem-debugging.yaml +70 -0
  87. package/courses/docker-container-debugging/scenarios/level-3/container-security-hardening.yaml +74 -0
  88. package/courses/docker-container-debugging/scenarios/level-3/disk-space-management.yaml +74 -0
  89. package/courses/docker-container-debugging/scenarios/level-3/docker-api-automation.yaml +72 -0
  90. package/courses/docker-container-debugging/scenarios/level-3/docker-daemon-issues.yaml +73 -0
  91. package/courses/docker-container-debugging/scenarios/level-3/docker-in-docker-ci.yaml +69 -0
  92. package/courses/docker-container-debugging/scenarios/level-3/overlay-network-debugging.yaml +70 -0
  93. package/courses/docker-container-debugging/scenarios/level-3/production-container-ops.yaml +71 -0
  94. package/courses/docker-container-debugging/scenarios/level-4/cicd-pipeline-design.yaml +66 -0
  95. package/courses/docker-container-debugging/scenarios/level-4/container-monitoring-observability.yaml +63 -0
  96. package/courses/docker-container-debugging/scenarios/level-4/container-orchestration-strategy.yaml +62 -0
  97. package/courses/docker-container-debugging/scenarios/level-4/container-performance-engineering.yaml +64 -0
  98. package/courses/docker-container-debugging/scenarios/level-4/container-security-architecture.yaml +66 -0
  99. package/courses/docker-container-debugging/scenarios/level-4/enterprise-image-management.yaml +58 -0
  100. package/courses/docker-container-debugging/scenarios/level-4/expert-debugging-shift.yaml +63 -0
  101. package/courses/docker-container-debugging/scenarios/level-4/incident-response-containers.yaml +70 -0
  102. package/courses/docker-container-debugging/scenarios/level-4/multi-environment-management.yaml +65 -0
  103. package/courses/docker-container-debugging/scenarios/level-4/stateful-service-containers.yaml +65 -0
  104. package/courses/docker-container-debugging/scenarios/level-5/board-infrastructure-strategy.yaml +58 -0
  105. package/courses/docker-container-debugging/scenarios/level-5/consulting-container-strategy.yaml +61 -0
  106. package/courses/docker-container-debugging/scenarios/level-5/container-platform-architecture.yaml +67 -0
  107. package/courses/docker-container-debugging/scenarios/level-5/container-platform-economics.yaml +67 -0
  108. package/courses/docker-container-debugging/scenarios/level-5/container-technology-evolution.yaml +67 -0
  109. package/courses/docker-container-debugging/scenarios/level-5/disaster-recovery-containers.yaml +66 -0
  110. package/courses/docker-container-debugging/scenarios/level-5/industry-container-patterns.yaml +71 -0
  111. package/courses/docker-container-debugging/scenarios/level-5/master-debugging-shift.yaml +62 -0
  112. package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml +67 -0
  113. package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml +61 -0
  114. package/courses/github-actions-cicd/course.yaml +10 -0
  115. package/courses/github-actions-cicd/scenarios/level-1/actions-and-runners.yaml +58 -0
  116. package/courses/github-actions-cicd/scenarios/level-1/basic-workflow-syntax.yaml +52 -0
  117. package/courses/github-actions-cicd/scenarios/level-1/branch-protection-checks.yaml +63 -0
  118. package/courses/github-actions-cicd/scenarios/level-1/environment-variables-secrets.yaml +65 -0
  119. package/courses/github-actions-cicd/scenarios/level-1/first-cicd-shift.yaml +62 -0
  120. package/courses/github-actions-cicd/scenarios/level-1/job-dependencies-outputs.yaml +62 -0
  121. package/courses/github-actions-cicd/scenarios/level-1/simple-ci-pipeline.yaml +57 -0
  122. package/courses/github-actions-cicd/scenarios/level-1/workflow-debugging.yaml +90 -0
  123. package/courses/github-actions-cicd/scenarios/level-1/workflow-status-notifications.yaml +59 -0
  124. package/courses/github-actions-cicd/scenarios/level-1/workflow-triggers.yaml +56 -0
  125. package/courses/github-actions-cicd/scenarios/level-2/concurrency-control.yaml +58 -0
  126. package/courses/github-actions-cicd/scenarios/level-2/conditional-execution.yaml +60 -0
  127. package/courses/github-actions-cicd/scenarios/level-2/custom-actions-development.yaml +55 -0
  128. package/courses/github-actions-cicd/scenarios/level-2/dependency-caching.yaml +58 -0
  129. package/courses/github-actions-cicd/scenarios/level-2/deployment-workflows.yaml +61 -0
  130. package/courses/github-actions-cicd/scenarios/level-2/github-packages-publishing.yaml +59 -0
  131. package/courses/github-actions-cicd/scenarios/level-2/intermediate-cicd-shift.yaml +68 -0
  132. package/courses/github-actions-cicd/scenarios/level-2/matrix-builds.yaml +59 -0
  133. package/courses/github-actions-cicd/scenarios/level-2/reusable-workflows.yaml +61 -0
  134. package/courses/github-actions-cicd/scenarios/level-2/workflow-cost-optimization.yaml +61 -0
  135. package/courses/github-actions-cicd/scenarios/level-3/advanced-cicd-shift.yaml +64 -0
  136. package/courses/github-actions-cicd/scenarios/level-3/compliance-automation.yaml +68 -0
  137. package/courses/github-actions-cicd/scenarios/level-3/docker-action-development.yaml +65 -0
  138. package/courses/github-actions-cicd/scenarios/level-3/github-environments.yaml +65 -0
  139. package/courses/github-actions-cicd/scenarios/level-3/monorepo-ci.yaml +68 -0
  140. package/courses/github-actions-cicd/scenarios/level-3/oidc-cloud-deployments.yaml +55 -0
  141. package/courses/github-actions-cicd/scenarios/level-3/release-automation.yaml +61 -0
  142. package/courses/github-actions-cicd/scenarios/level-3/security-hardening.yaml +63 -0
  143. package/courses/github-actions-cicd/scenarios/level-3/self-hosted-runners.yaml +60 -0
  144. package/courses/github-actions-cicd/scenarios/level-3/workflow-optimization.yaml +59 -0
  145. package/courses/github-actions-cicd/scenarios/level-4/cicd-data-architecture.yaml +63 -0
  146. package/courses/github-actions-cicd/scenarios/level-4/cicd-economics-roi.yaml +63 -0
  147. package/courses/github-actions-cicd/scenarios/level-4/cicd-executive-communication.yaml +58 -0
  148. package/courses/github-actions-cicd/scenarios/level-4/cicd-incident-response.yaml +60 -0
  149. package/courses/github-actions-cicd/scenarios/level-4/cicd-org-design.yaml +59 -0
  150. package/courses/github-actions-cicd/scenarios/level-4/cicd-platform-architecture.yaml +63 -0
  151. package/courses/github-actions-cicd/scenarios/level-4/cicd-training-program.yaml +65 -0
  152. package/courses/github-actions-cicd/scenarios/level-4/cicd-vendor-evaluation.yaml +59 -0
  153. package/courses/github-actions-cicd/scenarios/level-4/enterprise-cicd-governance.yaml +55 -0
  154. package/courses/github-actions-cicd/scenarios/level-4/expert-cicd-shift.yaml +60 -0
  155. package/courses/github-actions-cicd/scenarios/level-5/cicd-ai-future.yaml +63 -0
  156. package/courses/github-actions-cicd/scenarios/level-5/cicd-behavioral-science.yaml +70 -0
  157. package/courses/github-actions-cicd/scenarios/level-5/cicd-board-strategy.yaml +56 -0
  158. package/courses/github-actions-cicd/scenarios/level-5/cicd-consulting-engagement.yaml +61 -0
  159. package/courses/github-actions-cicd/scenarios/level-5/cicd-industry-benchmarks.yaml +63 -0
  160. package/courses/github-actions-cicd/scenarios/level-5/cicd-ma-integration.yaml +73 -0
  161. package/courses/github-actions-cicd/scenarios/level-5/cicd-product-development.yaml +68 -0
  162. package/courses/github-actions-cicd/scenarios/level-5/cicd-regulatory-landscape.yaml +72 -0
  163. package/courses/github-actions-cicd/scenarios/level-5/comprehensive-cicd-system.yaml +66 -0
  164. package/courses/github-actions-cicd/scenarios/level-5/master-cicd-shift.yaml +76 -0
  165. package/courses/github-pr-review/scenarios/level-2/api-change-review.yaml +82 -0
  166. package/courses/github-pr-review/scenarios/level-2/automated-review-tooling.yaml +53 -0
  167. package/courses/github-pr-review/scenarios/level-2/cross-team-review.yaml +61 -0
  168. package/courses/github-pr-review/scenarios/level-2/intermediate-review-shift.yaml +66 -0
  169. package/courses/github-pr-review/scenarios/level-2/performance-review-patterns.yaml +99 -0
  170. package/courses/github-pr-review/scenarios/level-2/review-disagreement-resolution.yaml +64 -0
  171. package/courses/github-pr-review/scenarios/level-2/review-metrics-analysis.yaml +63 -0
  172. package/courses/github-pr-review/scenarios/level-2/review-turnaround-sla.yaml +54 -0
  173. package/courses/github-pr-review/scenarios/level-2/stacked-pr-review.yaml +65 -0
  174. package/courses/github-pr-review/scenarios/level-3/advanced-review-shift.yaml +65 -0
  175. package/courses/github-pr-review/scenarios/level-3/ai-powered-review.yaml +58 -0
  176. package/courses/github-pr-review/scenarios/level-3/compliance-review-process.yaml +64 -0
  177. package/courses/github-pr-review/scenarios/level-3/cross-functional-review.yaml +60 -0
  178. package/courses/github-pr-review/scenarios/level-3/incident-driven-review.yaml +63 -0
  179. package/courses/github-pr-review/scenarios/level-3/large-scale-review-operations.yaml +55 -0
  180. package/courses/github-pr-review/scenarios/level-3/monorepo-review-process.yaml +68 -0
  181. package/courses/github-pr-review/scenarios/level-3/review-automation-platform.yaml +61 -0
  182. package/courses/github-pr-review/scenarios/level-3/review-culture-design.yaml +62 -0
  183. package/courses/github-pr-review/scenarios/level-3/review-data-pipeline.yaml +62 -0
  184. package/courses/github-pr-review/scenarios/level-4/enterprise-review-operations.yaml +61 -0
  185. package/courses/github-pr-review/scenarios/level-4/expert-review-shift.yaml +62 -0
  186. package/courses/github-pr-review/scenarios/level-4/review-data-architecture.yaml +69 -0
  187. package/courses/github-pr-review/scenarios/level-4/review-economics-roi.yaml +63 -0
  188. package/courses/github-pr-review/scenarios/level-4/review-executive-communication.yaml +61 -0
  189. package/courses/github-pr-review/scenarios/level-4/review-incident-postmortem.yaml +69 -0
  190. package/courses/github-pr-review/scenarios/level-4/review-org-design.yaml +62 -0
  191. package/courses/github-pr-review/scenarios/level-4/review-platform-architecture.yaml +64 -0
  192. package/courses/github-pr-review/scenarios/level-4/review-training-program.yaml +66 -0
  193. package/courses/github-pr-review/scenarios/level-4/review-vendor-evaluation.yaml +76 -0
  194. package/courses/github-pr-review/scenarios/level-5/comprehensive-review-system.yaml +68 -0
  195. package/courses/github-pr-review/scenarios/level-5/master-review-shift.yaml +73 -0
  196. package/courses/github-pr-review/scenarios/level-5/review-ai-future.yaml +69 -0
  197. package/courses/github-pr-review/scenarios/level-5/review-behavioral-science.yaml +66 -0
  198. package/courses/github-pr-review/scenarios/level-5/review-board-strategy.yaml +62 -0
  199. package/courses/github-pr-review/scenarios/level-5/review-consulting-engagement.yaml +62 -0
  200. package/courses/github-pr-review/scenarios/level-5/review-devtools-product.yaml +71 -0
  201. package/courses/github-pr-review/scenarios/level-5/review-industry-benchmarks.yaml +64 -0
  202. package/courses/github-pr-review/scenarios/level-5/review-ma-integration.yaml +76 -0
  203. package/courses/github-pr-review/scenarios/level-5/review-regulatory-landscape.yaml +78 -0
  204. package/courses/kubernetes-deployment-troubleshooting/course.yaml +12 -0
  205. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/configmap-secret-issues.yaml +69 -0
  206. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/crashloopbackoff.yaml +68 -0
  207. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/deployment-rollout.yaml +56 -0
  208. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/first-troubleshooting-shift.yaml +65 -0
  209. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/health-probe-failures.yaml +70 -0
  210. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/imagepullbackoff.yaml +57 -0
  211. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/kubectl-debugging-basics.yaml +56 -0
  212. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/oomkilled.yaml +70 -0
  213. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/pending-pods.yaml +68 -0
  214. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/service-not-reachable.yaml +66 -0
  215. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/dns-resolution-failures.yaml +63 -0
  216. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/helm-deployment-failures.yaml +63 -0
  217. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/hpa-scaling-issues.yaml +62 -0
  218. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/ingress-routing-issues.yaml +63 -0
  219. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/init-container-failures.yaml +63 -0
  220. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/intermediate-troubleshooting-shift.yaml +66 -0
  221. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/network-policy-blocking.yaml +67 -0
  222. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/persistent-volume-issues.yaml +69 -0
  223. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/rbac-permission-denied.yaml +57 -0
  224. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/resource-quota-limits.yaml +64 -0
  225. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/advanced-troubleshooting-shift.yaml +69 -0
  226. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/cluster-upgrade-failures.yaml +71 -0
  227. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/gitops-drift-detection.yaml +62 -0
  228. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/job-cronjob-failures.yaml +67 -0
  229. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/monitoring-alerting-gaps.yaml +64 -0
  230. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/multi-container-debugging.yaml +68 -0
  231. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/node-pressure-evictions.yaml +70 -0
  232. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/pod-disruption-budgets.yaml +59 -0
  233. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/service-mesh-debugging.yaml +64 -0
  234. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/statefulset-troubleshooting.yaml +69 -0
  235. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/capacity-planning.yaml +65 -0
  236. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/cost-optimization.yaml +57 -0
  237. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/disaster-recovery-design.yaml +56 -0
  238. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/executive-communication.yaml +62 -0
  239. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/expert-troubleshooting-shift.yaml +65 -0
  240. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/incident-management-process.yaml +59 -0
  241. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-cluster-operations.yaml +62 -0
  242. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-tenancy-design.yaml +55 -0
  243. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/platform-engineering.yaml +59 -0
  244. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/security-hardening.yaml +58 -0
  245. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/behavioral-science.yaml +62 -0
  246. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/board-strategy.yaml +61 -0
  247. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/cloud-native-future.yaml +65 -0
  248. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/comprehensive-platform.yaml +57 -0
  249. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/consulting-engagement.yaml +62 -0
  250. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/industry-benchmarks.yaml +58 -0
  251. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/ma-integration.yaml +62 -0
  252. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/master-troubleshooting-shift.yaml +73 -0
  253. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/product-development.yaml +65 -0
  254. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/regulatory-compliance.yaml +76 -0
  255. package/courses/mysql-query-optimization/course.yaml +11 -0
  256. package/courses/mysql-query-optimization/scenarios/level-1/buffer-pool-basics.yaml +65 -0
  257. package/courses/mysql-query-optimization/scenarios/level-1/explain-basics.yaml +66 -0
  258. package/courses/mysql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +78 -0
  259. package/courses/mysql-query-optimization/scenarios/level-1/innodb-index-fundamentals.yaml +68 -0
  260. package/courses/mysql-query-optimization/scenarios/level-1/join-basics.yaml +66 -0
  261. package/courses/mysql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +67 -0
  262. package/courses/mysql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +66 -0
  263. package/courses/mysql-query-optimization/scenarios/level-1/select-star-problems.yaml +68 -0
  264. package/courses/mysql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +65 -0
  265. package/courses/mysql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +65 -0
  266. package/courses/mysql-query-optimization/scenarios/level-2/buffer-pool-tuning.yaml +64 -0
  267. package/courses/mysql-query-optimization/scenarios/level-2/composite-index-design.yaml +71 -0
  268. package/courses/mysql-query-optimization/scenarios/level-2/covering-and-invisible-indexes.yaml +69 -0
  269. package/courses/mysql-query-optimization/scenarios/level-2/cte-and-window-functions.yaml +78 -0
  270. package/courses/mysql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +68 -0
  271. package/courses/mysql-query-optimization/scenarios/level-2/join-optimization.yaml +67 -0
  272. package/courses/mysql-query-optimization/scenarios/level-2/performance-schema-analysis.yaml +69 -0
  273. package/courses/mysql-query-optimization/scenarios/level-2/query-optimizer-hints.yaml +74 -0
  274. package/courses/mysql-query-optimization/scenarios/level-2/subquery-optimization.yaml +70 -0
  275. package/courses/mysql-query-optimization/scenarios/level-2/write-optimization.yaml +63 -0
  276. package/courses/mysql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
  277. package/courses/mysql-query-optimization/scenarios/level-3/connection-management.yaml +67 -0
  278. package/courses/mysql-query-optimization/scenarios/level-3/full-text-search.yaml +77 -0
  279. package/courses/mysql-query-optimization/scenarios/level-3/json-optimization.yaml +87 -0
  280. package/courses/mysql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +68 -0
  281. package/courses/mysql-query-optimization/scenarios/level-3/monitoring-alerting.yaml +63 -0
  282. package/courses/mysql-query-optimization/scenarios/level-3/online-schema-changes.yaml +79 -0
  283. package/courses/mysql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +83 -0
  284. package/courses/mysql-query-optimization/scenarios/level-3/query-profiling-deep-dive.yaml +84 -0
  285. package/courses/mysql-query-optimization/scenarios/level-3/replication-optimization.yaml +66 -0
  286. package/courses/mysql-query-optimization/scenarios/level-4/aurora-vs-rds-evaluation.yaml +61 -0
  287. package/courses/mysql-query-optimization/scenarios/level-4/data-architecture.yaml +62 -0
  288. package/courses/mysql-query-optimization/scenarios/level-4/database-migration-planning.yaml +59 -0
  289. package/courses/mysql-query-optimization/scenarios/level-4/enterprise-governance.yaml +50 -0
  290. package/courses/mysql-query-optimization/scenarios/level-4/executive-communication.yaml +54 -0
  291. package/courses/mysql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +67 -0
  292. package/courses/mysql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +60 -0
  293. package/courses/mysql-query-optimization/scenarios/level-4/optimizer-internals.yaml +62 -0
  294. package/courses/mysql-query-optimization/scenarios/level-4/performance-sla-design.yaml +52 -0
  295. package/courses/mysql-query-optimization/scenarios/level-4/read-replica-scaling.yaml +51 -0
  296. package/courses/mysql-query-optimization/scenarios/level-5/ai-database-future.yaml +45 -0
  297. package/courses/mysql-query-optimization/scenarios/level-5/behavioral-science.yaml +44 -0
  298. package/courses/mysql-query-optimization/scenarios/level-5/benchmark-design.yaml +47 -0
  299. package/courses/mysql-query-optimization/scenarios/level-5/board-strategy.yaml +48 -0
  300. package/courses/mysql-query-optimization/scenarios/level-5/comprehensive-platform.yaml +49 -0
  301. package/courses/mysql-query-optimization/scenarios/level-5/consulting-engagement.yaml +52 -0
  302. package/courses/mysql-query-optimization/scenarios/level-5/ma-database-integration.yaml +47 -0
  303. package/courses/mysql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +56 -0
  304. package/courses/mysql-query-optimization/scenarios/level-5/product-development.yaml +48 -0
  305. package/courses/mysql-query-optimization/scenarios/level-5/regulatory-compliance.yaml +48 -0
  306. package/courses/postgresql-query-optimization/course.yaml +11 -0
  307. package/courses/postgresql-query-optimization/scenarios/level-1/explain-analyze-basics.yaml +80 -0
  308. package/courses/postgresql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +77 -0
  309. package/courses/postgresql-query-optimization/scenarios/level-1/index-fundamentals.yaml +76 -0
  310. package/courses/postgresql-query-optimization/scenarios/level-1/join-basics.yaml +73 -0
  311. package/courses/postgresql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +62 -0
  312. package/courses/postgresql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +69 -0
  313. package/courses/postgresql-query-optimization/scenarios/level-1/select-star-problems.yaml +69 -0
  314. package/courses/postgresql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +63 -0
  315. package/courses/postgresql-query-optimization/scenarios/level-1/vacuum-and-statistics.yaml +62 -0
  316. package/courses/postgresql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +74 -0
  317. package/courses/postgresql-query-optimization/scenarios/level-2/autovacuum-tuning.yaml +76 -0
  318. package/courses/postgresql-query-optimization/scenarios/level-2/composite-index-design.yaml +81 -0
  319. package/courses/postgresql-query-optimization/scenarios/level-2/covering-indexes.yaml +74 -0
  320. package/courses/postgresql-query-optimization/scenarios/level-2/cte-optimization.yaml +83 -0
  321. package/courses/postgresql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +66 -0
  322. package/courses/postgresql-query-optimization/scenarios/level-2/join-optimization.yaml +72 -0
  323. package/courses/postgresql-query-optimization/scenarios/level-2/partial-and-expression-indexes.yaml +75 -0
  324. package/courses/postgresql-query-optimization/scenarios/level-2/query-planner-settings.yaml +62 -0
  325. package/courses/postgresql-query-optimization/scenarios/level-2/subquery-optimization.yaml +67 -0
  326. package/courses/postgresql-query-optimization/scenarios/level-2/window-function-optimization.yaml +63 -0
  327. package/courses/postgresql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
  328. package/courses/postgresql-query-optimization/scenarios/level-3/connection-pooling.yaml +60 -0
  329. package/courses/postgresql-query-optimization/scenarios/level-3/full-text-search-optimization.yaml +66 -0
  330. package/courses/postgresql-query-optimization/scenarios/level-3/jsonb-optimization.yaml +88 -0
  331. package/courses/postgresql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +80 -0
  332. package/courses/postgresql-query-optimization/scenarios/level-3/materialized-view-optimization.yaml +73 -0
  333. package/courses/postgresql-query-optimization/scenarios/level-3/parallel-query-execution.yaml +74 -0
  334. package/courses/postgresql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +71 -0
  335. package/courses/postgresql-query-optimization/scenarios/level-3/specialized-index-types.yaml +67 -0
  336. package/courses/postgresql-query-optimization/scenarios/level-3/write-optimization.yaml +65 -0
  337. package/courses/postgresql-query-optimization/scenarios/level-4/data-architecture-analytics.yaml +64 -0
  338. package/courses/postgresql-query-optimization/scenarios/level-4/database-executive-communication.yaml +64 -0
  339. package/courses/postgresql-query-optimization/scenarios/level-4/database-migration-planning.yaml +57 -0
  340. package/courses/postgresql-query-optimization/scenarios/level-4/enterprise-database-governance.yaml +52 -0
  341. package/courses/postgresql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +73 -0
  342. package/courses/postgresql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +62 -0
  343. package/courses/postgresql-query-optimization/scenarios/level-4/optimizer-internals.yaml +69 -0
  344. package/courses/postgresql-query-optimization/scenarios/level-4/performance-sla-design.yaml +58 -0
  345. package/courses/postgresql-query-optimization/scenarios/level-4/read-replica-optimization.yaml +62 -0
  346. package/courses/postgresql-query-optimization/scenarios/level-4/vendor-evaluation.yaml +73 -0
  347. package/courses/postgresql-query-optimization/scenarios/level-5/comprehensive-database-system.yaml +70 -0
  348. package/courses/postgresql-query-optimization/scenarios/level-5/database-ai-future.yaml +81 -0
  349. package/courses/postgresql-query-optimization/scenarios/level-5/database-behavioral-science.yaml +63 -0
  350. package/courses/postgresql-query-optimization/scenarios/level-5/database-board-strategy.yaml +77 -0
  351. package/courses/postgresql-query-optimization/scenarios/level-5/database-consulting-engagement.yaml +61 -0
  352. package/courses/postgresql-query-optimization/scenarios/level-5/database-industry-benchmarks.yaml +64 -0
  353. package/courses/postgresql-query-optimization/scenarios/level-5/database-ma-integration.yaml +71 -0
  354. package/courses/postgresql-query-optimization/scenarios/level-5/database-product-development.yaml +72 -0
  355. package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml +76 -0
  356. package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +66 -0
  357. package/courses/rest-api-error-handling/course.yaml +11 -0
  358. package/courses/rest-api-error-handling/scenarios/level-1/authentication-errors.yaml +71 -0
  359. package/courses/rest-api-error-handling/scenarios/level-1/content-negotiation-errors.yaml +63 -0
  360. package/courses/rest-api-error-handling/scenarios/level-1/error-logging-basics.yaml +63 -0
  361. package/courses/rest-api-error-handling/scenarios/level-1/error-response-format.yaml +58 -0
  362. package/courses/rest-api-error-handling/scenarios/level-1/first-error-handling-shift.yaml +67 -0
  363. package/courses/rest-api-error-handling/scenarios/level-1/http-status-codes.yaml +46 -0
  364. package/courses/rest-api-error-handling/scenarios/level-1/not-found-errors.yaml +52 -0
  365. package/courses/rest-api-error-handling/scenarios/level-1/rate-limiting-errors.yaml +56 -0
  366. package/courses/rest-api-error-handling/scenarios/level-1/request-validation-errors.yaml +59 -0
  367. package/courses/rest-api-error-handling/scenarios/level-1/server-error-handling.yaml +55 -0
  368. package/courses/rest-api-error-handling/scenarios/level-2/api-versioning-errors.yaml +66 -0
  369. package/courses/rest-api-error-handling/scenarios/level-2/batch-request-errors.yaml +61 -0
  370. package/courses/rest-api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +52 -0
  371. package/courses/rest-api-error-handling/scenarios/level-2/error-code-taxonomy.yaml +62 -0
  372. package/courses/rest-api-error-handling/scenarios/level-2/error-monitoring-alerting.yaml +53 -0
  373. package/courses/rest-api-error-handling/scenarios/level-2/intermediate-error-shift.yaml +69 -0
  374. package/courses/rest-api-error-handling/scenarios/level-2/pagination-errors.yaml +66 -0
  375. package/courses/rest-api-error-handling/scenarios/level-2/retry-and-idempotency.yaml +60 -0
  376. package/courses/rest-api-error-handling/scenarios/level-2/rfc7807-problem-details.yaml +60 -0
  377. package/courses/rest-api-error-handling/scenarios/level-2/webhook-error-handling.yaml +55 -0
  378. package/courses/rest-api-error-handling/scenarios/level-3/advanced-error-shift.yaml +72 -0
  379. package/courses/rest-api-error-handling/scenarios/level-3/api-gateway-errors.yaml +71 -0
  380. package/courses/rest-api-error-handling/scenarios/level-3/async-api-errors.yaml +67 -0
  381. package/courses/rest-api-error-handling/scenarios/level-3/caching-error-scenarios.yaml +65 -0
  382. package/courses/rest-api-error-handling/scenarios/level-3/chaos-engineering-apis.yaml +62 -0
  383. package/courses/rest-api-error-handling/scenarios/level-3/database-error-handling.yaml +79 -0
  384. package/courses/rest-api-error-handling/scenarios/level-3/distributed-error-propagation.yaml +63 -0
  385. package/courses/rest-api-error-handling/scenarios/level-3/error-budgets-sre.yaml +61 -0
  386. package/courses/rest-api-error-handling/scenarios/level-3/error-correlation.yaml +58 -0
  387. package/courses/rest-api-error-handling/scenarios/level-3/graphql-vs-rest-errors.yaml +73 -0
  388. package/courses/rest-api-error-handling/scenarios/level-4/compliance-error-handling.yaml +65 -0
  389. package/courses/rest-api-error-handling/scenarios/level-4/enterprise-error-governance.yaml +62 -0
  390. package/courses/rest-api-error-handling/scenarios/level-4/error-analytics-platform.yaml +65 -0
  391. package/courses/rest-api-error-handling/scenarios/level-4/error-cost-optimization.yaml +63 -0
  392. package/courses/rest-api-error-handling/scenarios/level-4/error-executive-communication.yaml +60 -0
  393. package/courses/rest-api-error-handling/scenarios/level-4/error-handling-architecture.yaml +67 -0
  394. package/courses/rest-api-error-handling/scenarios/level-4/error-org-design.yaml +68 -0
  395. package/courses/rest-api-error-handling/scenarios/level-4/error-sla-design.yaml +65 -0
  396. package/courses/rest-api-error-handling/scenarios/level-4/error-training-program.yaml +61 -0
  397. package/courses/rest-api-error-handling/scenarios/level-4/expert-error-shift.yaml +63 -0
  398. package/courses/rest-api-error-handling/scenarios/level-5/comprehensive-error-system.yaml +68 -0
  399. package/courses/rest-api-error-handling/scenarios/level-5/error-ai-future.yaml +75 -0
  400. package/courses/rest-api-error-handling/scenarios/level-5/error-behavioral-science.yaml +73 -0
  401. package/courses/rest-api-error-handling/scenarios/level-5/error-board-strategy.yaml +60 -0
  402. package/courses/rest-api-error-handling/scenarios/level-5/error-consulting-engagement.yaml +58 -0
  403. package/courses/rest-api-error-handling/scenarios/level-5/error-industry-benchmarks.yaml +72 -0
  404. package/courses/rest-api-error-handling/scenarios/level-5/error-ma-integration.yaml +68 -0
  405. package/courses/rest-api-error-handling/scenarios/level-5/error-product-development.yaml +66 -0
  406. package/courses/rest-api-error-handling/scenarios/level-5/error-regulatory-landscape.yaml +80 -0
  407. package/courses/rest-api-error-handling/scenarios/level-5/master-error-shift.yaml +73 -0
  408. package/courses/terraform-infrastructure-setup/course.yaml +11 -0
  409. package/courses/terraform-infrastructure-setup/scenarios/level-1/terraform-init-errors.yaml +72 -0
  410. package/dist/cli/commands/add.d.ts.map +1 -1
  411. package/dist/cli/commands/add.js +6 -5
  412. package/dist/cli/commands/add.js.map +1 -1
  413. package/dist/cli/commands/generate.d.ts.map +1 -1
  414. package/dist/cli/commands/generate.js +4 -0
  415. package/dist/cli/commands/generate.js.map +1 -1
  416. package/dist/cli/commands/list.d.ts.map +1 -1
  417. package/dist/cli/commands/list.js +6 -18
  418. package/dist/cli/commands/list.js.map +1 -1
  419. package/dist/cli/commands/train.d.ts.map +1 -1
  420. package/dist/cli/commands/train.js +18 -18
  421. package/dist/cli/commands/train.js.map +1 -1
  422. package/dist/cli/index.js +93 -55
  423. package/dist/cli/index.js.map +1 -1
  424. package/dist/cli/run-demo.js +2 -1
  425. package/dist/cli/run-demo.js.map +1 -1
  426. package/dist/cli/setup.d.ts +18 -0
  427. package/dist/cli/setup.d.ts.map +1 -0
  428. package/dist/cli/setup.js +154 -0
  429. package/dist/cli/setup.js.map +1 -0
  430. package/dist/engine/agent-bridge.d.ts +5 -2
  431. package/dist/engine/agent-bridge.d.ts.map +1 -1
  432. package/dist/engine/agent-bridge.js +36 -9
  433. package/dist/engine/agent-bridge.js.map +1 -1
  434. package/dist/engine/loader.d.ts +21 -0
  435. package/dist/engine/loader.d.ts.map +1 -1
  436. package/dist/engine/loader.js +54 -1
  437. package/dist/engine/loader.js.map +1 -1
  438. package/dist/engine/training-loop.d.ts.map +1 -1
  439. package/dist/engine/training-loop.js +1 -0
  440. package/dist/engine/training-loop.js.map +1 -1
  441. package/dist/engine/training.d.ts.map +1 -1
  442. package/dist/engine/training.js +1 -0
  443. package/dist/engine/training.js.map +1 -1
  444. package/dist/generator/skill-generator.d.ts +1 -1
  445. package/dist/generator/skill-generator.d.ts.map +1 -1
  446. package/dist/generator/skill-generator.js +21 -2
  447. package/dist/generator/skill-generator.js.map +1 -1
  448. package/dist/mcp/server.d.ts.map +1 -1
  449. package/dist/mcp/server.js +11 -26
  450. package/dist/mcp/server.js.map +1 -1
  451. package/dist/mcp/session-manager.d.ts +9 -4
  452. package/dist/mcp/session-manager.d.ts.map +1 -1
  453. package/dist/mcp/session-manager.js +65 -28
  454. package/dist/mcp/session-manager.js.map +1 -1
  455. package/dist/types/schemas.d.ts +38 -13
  456. package/dist/types/schemas.d.ts.map +1 -1
  457. package/dist/types/schemas.js +9 -5
  458. package/dist/types/schemas.js.map +1 -1
  459. package/package.json +1 -1
@@ -0,0 +1,66 @@
1
+ meta:
2
+ id: intermediate-troubleshooting-shift
3
+ level: 2
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Combined intermediate troubleshooting shift — diagnose interconnected failures involving storage, networking, RBAC, and scaling"
7
+ tags: [Kubernetes, troubleshooting, combined, shift-simulation, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're investigating a complex outage in the "ecommerce" namespace.
13
+ A Helm upgrade was deployed 30 minutes ago and multiple things broke:
14
+
15
+ $ kubectl get pods -n ecommerce
16
+ NAME READY STATUS RESTARTS AGE
17
+ catalog-svc-new-7a8b-c9d0 0/1 Pending 0 30m
18
+ catalog-svc-old-1e2f-g3h4 1/1 Running 0 2d
19
+ cart-svc-5i6j7k8l-m9n0 0/1 CrashLoopBackOff 8 30m
20
+ search-svc-1o2p3q4r-s5t6 1/1 Running 0 30m
21
+ payment-svc-7u8v9w0x-y1z2 1/1 Running 0 2d
22
+
23
+ $ kubectl get hpa -n ecommerce
24
+ NAME TARGETS MINPODS MAXPODS REPLICAS
25
+ catalog-svc <unknown>/80% 2 20 1
26
+
27
+ $ kubectl get ingress -n ecommerce
28
+ NAME HOSTS ADDRESS PORTS AGE
29
+ ecommerce shop.example.com 80, 443 30m
30
+
31
+ Investigation reveals four interconnected issues:
32
+
33
+ 1. catalog-svc — new pod Pending, PVC can't bind. The Helm upgrade
34
+ changed StorageClass from "standard" to "premium-ssd" which doesn't
35
+ exist. Old pod still running because Deployment strategy is
36
+ RollingUpdate with maxUnavailable=0.
37
+
38
+ 2. cart-svc — CrashLoopBackOff, logs show "FORBIDDEN: cannot list
39
+ endpoints in namespace ecommerce." The new version uses Kubernetes
40
+ API for service discovery but the ServiceAccount lacks RBAC.
41
+
42
+ 3. HPA — showing <unknown> targets because the Helm upgrade removed
43
+ resource requests from the catalog-svc Deployment spec.
44
+
45
+ 4. Ingress — no ADDRESS assigned. The Ingress resource was recreated
46
+ with an invalid ingressClassName that doesn't match any controller.
47
+
48
+ Task: Walk through diagnosing and fixing all four issues. Write:
49
+ the triage approach for a Helm-triggered multi-failure incident,
50
+ how to identify the Helm upgrade as the common cause, the fix for
51
+ each issue, whether to rollback the entire Helm release or fix
52
+ forward, and the post-incident review process.
53
+
54
+ assertions:
55
+ - type: llm_judge
56
+ criteria: "All four issues are diagnosed — (1) PVC binding failure from non-existent StorageClass, (2) RBAC Forbidden error for cart-svc ServiceAccount, (3) HPA <unknown> from missing CPU requests, (4) Ingress no address from wrong ingressClassName. The root cause is identified as the Helm upgrade introducing multiple configuration errors"
57
+ weight: 0.35
58
+ description: "All issues diagnosed"
59
+ - type: llm_judge
60
+ criteria: "Rollback vs fix-forward decision is analyzed — helm rollback is faster and safer when multiple issues exist (reverts all changes at once), but may lose legitimate improvements in the new version. Fix-forward makes sense for single, well-understood issues. In this case with 4 issues, rollback to last good revision is recommended, then fix the chart and re-deploy"
61
+ weight: 0.35
62
+ description: "Rollback decision"
63
+ - type: llm_judge
64
+ criteria: "Post-incident process is covered — review the Helm chart diff (helm diff), add validation checks (helm lint, --dry-run, OPA policies), implement staging environment that mirrors production, use helm test for post-deploy verification, add monitoring alerts for HPA issues and Ingress health, consider GitOps with ArgoCD for change review"
65
+ weight: 0.30
66
+ description: "Post-incident process"
@@ -0,0 +1,67 @@
1
+ meta:
2
+ id: network-policy-blocking
3
+ level: 2
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Debug NetworkPolicy issues — diagnose why pods can't communicate when network policies restrict traffic"
7
+ tags: [Kubernetes, NetworkPolicy, networking, security, traffic, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ After a security team applied NetworkPolicies, your microservices
13
+ stopped communicating:
14
+
15
+ $ kubectl exec -it frontend-pod -- curl -s http://api-service:8080/health
16
+ curl: (7) Failed to connect to api-service port 8080: Connection timed out
17
+
18
+ Before the NetworkPolicies, this worked fine. The services are in the
19
+ same namespace.
20
+
21
+ $ kubectl get networkpolicy -n app
22
+ NAME POD-SELECTOR AGE
23
+ deny-all <none> 5m
24
+ allow-frontend app=frontend 5m
25
+
26
+ $ kubectl describe networkpolicy deny-all
27
+ Spec:
28
+ PodSelector: <none> (applies to all pods)
29
+ Allowing ingress traffic: <none> (deny all ingress)
30
+ Allowing egress traffic: <none> (deny all egress)
31
+
32
+ $ kubectl describe networkpolicy allow-frontend
33
+ Spec:
34
+ PodSelector: app=frontend
35
+ Allowing ingress traffic:
36
+ From: <any> (allow all ingress to frontend)
37
+ Allowing egress traffic: <none> (not specified)
38
+
39
+ The deny-all policy blocks all ingress AND egress for every pod.
40
+ The allow-frontend policy allows ingress TO frontend but doesn't
41
+ allow egress FROM frontend. And there's no policy allowing ingress
42
+ to the api-service.
43
+
44
+ Problems:
45
+ 1. Frontend can't send requests (egress blocked by deny-all)
46
+ 2. API service can't receive requests (ingress blocked by deny-all)
47
+ 3. DNS resolution also blocked (egress to kube-dns on port 53)
48
+
49
+ Task: Explain NetworkPolicies and how to debug them. Write: how
50
+ NetworkPolicies work (default allow-all, additive when applied),
51
+ ingress vs egress rules, how to read policy selectors (podSelector,
52
+ namespaceSelector, ipBlock), why DNS breaks when egress is blocked,
53
+ how to write a working zero-trust policy set, and debugging techniques.
54
+
55
+ assertions:
56
+ - type: llm_judge
57
+ criteria: "NetworkPolicy behavior is explained — by default all traffic allowed, applying any policy to a pod makes it deny-all for that direction (ingress/egress), then rules are additive (allow specific traffic). A deny-all policy with empty podSelector applies to ALL pods in namespace. Policies are namespace-scoped. Must explicitly allow both directions — if frontend needs to talk to API, frontend needs egress rule AND API needs ingress rule"
58
+ weight: 0.35
59
+ description: "NetworkPolicy behavior"
60
+ - type: llm_judge
61
+ criteria: "DNS and common pitfalls are addressed — when egress is denied, DNS resolution breaks (CoreDNS runs in kube-system on port 53 UDP/TCP). Must add egress rule allowing port 53 to kube-system namespace. Common pitfall: forget to allow DNS, forget both directions needed, label selectors don't match pods, missing namespaceSelector for cross-namespace policies"
62
+ weight: 0.35
63
+ description: "DNS and pitfalls"
64
+ - type: llm_judge
65
+ criteria: "Debugging workflow is practical — check what policies apply to a pod (kubectl get netpol, match podSelector to pod labels), verify traffic is blocked vs application error (test with kubectl exec curl/nc), check if CNI plugin supports NetworkPolicy (not all do — e.g., Flannel doesn't by default, Calico does), use packet capture or logging to trace blocked connections"
66
+ weight: 0.30
67
+ description: "Debugging workflow"
@@ -0,0 +1,69 @@
1
+ meta:
2
+ id: persistent-volume-issues
3
+ level: 2
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Debug PersistentVolume issues — diagnose PVC binding failures, mount errors, and storage class misconfigurations"
7
+ tags: [Kubernetes, PersistentVolume, PVC, storage, StorageClass, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your StatefulSet for PostgreSQL won't start. The pods are stuck in
13
+ Pending because their PVCs can't bind:
14
+
15
+ $ kubectl get pods
16
+ NAME READY STATUS RESTARTS AGE
17
+ postgres-0 0/1 Pending 0 10m
18
+
19
+ $ kubectl get pvc
20
+ NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
21
+ data-postgres-0 Pending fast-ssd 10m
22
+
23
+ $ kubectl describe pvc data-postgres-0
24
+ Events:
25
+ Warning ProvisioningFailed 2m persistentvolume-controller
26
+ storageclass.storage.k8s.io "fast-ssd" not found
27
+
28
+ The StorageClass "fast-ssd" doesn't exist in this cluster. But there's
29
+ more — even after creating the StorageClass, a second issue appears:
30
+
31
+ $ kubectl get pvc
32
+ NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
33
+ data-postgres-0 Pending fast-ssd 15m
34
+
35
+ $ kubectl describe pvc data-postgres-0
36
+ Events:
37
+ Warning ProvisioningFailed 1m ebs.csi.aws.com_ebs-csi-controller
38
+ could not create volume in zone "us-east-1c": volume limit of 25
39
+ per node reached
40
+
41
+ The CSI driver can't provision because the node has hit its volume
42
+ attachment limit.
43
+
44
+ Key concepts:
45
+ - PV/PVC binding: PVCs request storage, PVs provide it
46
+ - StorageClass: defines how storage is provisioned dynamically
47
+ - Access modes: RWO, ROX, RWX — must match between PV and PVC
48
+ - volumeBindingMode: Immediate vs WaitForFirstConsumer
49
+ - CSI drivers: external storage providers
50
+
51
+ Task: Explain how Kubernetes persistent storage works and how to
52
+ debug issues. Write: the PV/PVC/StorageClass relationship, dynamic
53
+ vs static provisioning, access modes and their constraints, common
54
+ binding failures (missing StorageClass, capacity, access mode
55
+ mismatch, zone affinity), CSI driver issues, and volumeBindingMode.
56
+
57
+ assertions:
58
+ - type: llm_judge
59
+ criteria: "PV/PVC/StorageClass relationship is explained — PVCs are requests for storage (size, access mode, StorageClass), PVs are the actual storage resources, StorageClass defines the provisioner and parameters for dynamic provisioning. When a PVC is created, the StorageClass provisioner automatically creates a PV. Static provisioning means pre-creating PVs for PVCs to bind to"
60
+ weight: 0.35
61
+ description: "Storage relationship explained"
62
+ - type: llm_judge
63
+ criteria: "Common binding failures are covered — missing StorageClass, insufficient capacity, access mode mismatch (requesting RWX when storage only supports RWO), zone affinity (PV in different zone than pod), CSI driver issues (volume attachment limits, driver not installed), volumeBindingMode Immediate creates PV immediately vs WaitForFirstConsumer waits until pod is scheduled (better for zone-aware provisioning)"
64
+ weight: 0.35
65
+ description: "Binding failures covered"
66
+ - type: llm_judge
67
+ criteria: "Debugging workflow is practical — check PVC status and events (kubectl describe pvc), check StorageClass exists (kubectl get sc), verify CSI driver pods running (kubectl get pods -n kube-system), check node volume limits, verify access modes match. For StatefulSets: PVCs persist even after pod deletion, must manually delete PVC to re-provision"
68
+ weight: 0.30
69
+ description: "Debugging workflow"
@@ -0,0 +1,57 @@
1
+ meta:
2
+ id: rbac-permission-denied
3
+ level: 2
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Debug RBAC permission issues — diagnose Forbidden errors when pods or users can't access Kubernetes API resources"
7
+ tags: [Kubernetes, RBAC, ServiceAccount, permissions, security, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your application pod needs to list other pods for service discovery,
13
+ but it's getting Forbidden errors:
14
+
15
+ $ kubectl logs discovery-agent-pod
16
+ Error: pods is forbidden: User "system:serviceaccount:app:default"
17
+ cannot list resource "pods" in API group "" in the namespace "app"
18
+
19
+ The application uses the Kubernetes API client to discover peer pods
20
+ for cluster coordination. It's using the default ServiceAccount which
21
+ has no permissions beyond the basics.
22
+
23
+ $ kubectl auth can-i list pods --as=system:serviceaccount:app:default -n app
24
+ no
25
+
26
+ You need to create proper RBAC resources. But which combination?
27
+
28
+ Current state of RBAC resources:
29
+ - A Role "pod-reader" exists but only grants "get" (not "list" or "watch")
30
+ - A RoleBinding exists but binds to ServiceAccount "discovery-agent"
31
+ (which doesn't exist) instead of "default"
32
+ - The pod is using the "default" ServiceAccount
33
+
34
+ Multiple issues:
35
+ 1. Role needs "list" and "watch" verbs, not just "get"
36
+ 2. RoleBinding references wrong ServiceAccount name
37
+ 3. Should create a dedicated ServiceAccount instead of using default
38
+
39
+ Task: Explain Kubernetes RBAC and how to debug permission issues.
40
+ Write: the RBAC model (Role, ClusterRole, RoleBinding, ClusterRoleBinding),
41
+ how ServiceAccounts work (pods authenticate as their SA), how to
42
+ check permissions (kubectl auth can-i), common RBAC mistakes, and
43
+ the principle of least privilege.
44
+
45
+ assertions:
46
+ - type: llm_judge
47
+ criteria: "RBAC model is explained — Role defines permissions (verbs on resources) within a namespace, ClusterRole defines cluster-wide permissions, RoleBinding grants a Role to a subject (User, Group, ServiceAccount) within a namespace, ClusterRoleBinding grants cluster-wide. Pods authenticate to the API server using their ServiceAccount token mounted at /var/run/secrets/kubernetes.io/serviceaccount/"
48
+ weight: 0.35
49
+ description: "RBAC model explained"
50
+ - type: llm_judge
51
+ criteria: "Debugging permission issues is systematic — use kubectl auth can-i to test specific permissions, check which ServiceAccount the pod uses (kubectl get pod -o yaml | grep serviceAccountName), verify Role has correct verbs and resources, verify RoleBinding references correct Role and ServiceAccount, check namespace scope (Role vs ClusterRole). The 'system:serviceaccount:<namespace>:<name>' format identifies ServiceAccounts"
52
+ weight: 0.35
53
+ description: "Permission debugging"
54
+ - type: llm_judge
55
+ criteria: "Best practices and fixes are covered — create dedicated ServiceAccounts per application (don't use default), grant minimum required permissions (least privilege), use Role/RoleBinding for namespace-scoped access (prefer over ClusterRole), audit permissions regularly (kubectl auth can-i --list), never use cluster-admin for application ServiceAccounts"
56
+ weight: 0.30
57
+ description: "Best practices"
@@ -0,0 +1,64 @@
1
+ meta:
2
+ id: resource-quota-limits
3
+ level: 2
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Debug ResourceQuota and LimitRange issues — diagnose why deployments fail due to namespace resource constraints"
7
+ tags: [Kubernetes, ResourceQuota, LimitRange, QoS, resource-management, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your team's deployment suddenly fails to create new pods:
13
+
14
+ $ kubectl apply -f deployment.yaml
15
+ Error from server (Forbidden): error when creating "deployment.yaml":
16
+ pods "cache-svc-7a8b9c0d-e1f2" is forbidden: exceeded quota:
17
+ team-alpha-quota, requested: cpu=500m,memory=512Mi,
18
+ used: cpu=3500m,memory=7Gi, limited: cpu=4,memory=8Gi
19
+
20
+ $ kubectl get resourcequota -n team-alpha
21
+ NAME AGE REQUEST LIMIT
22
+ team-alpha-quota 30d cpu: 3500m/4, memory: 7Gi/8Gi cpu: 8/8, memory: 16Gi/16Gi
23
+
24
+ The namespace has a ResourceQuota and you're hitting the ceiling.
25
+ But wait — your deployment doesn't specify resource requests:
26
+
27
+ $ kubectl get deployment cache-svc -o yaml | grep -A5 resources
28
+ resources: {}
29
+
30
+ Yet the error says it's requesting 500m CPU and 512Mi memory. Why?
31
+
32
+ $ kubectl get limitrange -n team-alpha
33
+ NAME CREATED AT
34
+ default-limits 2025-11-01T00:00:00Z
35
+
36
+ $ kubectl describe limitrange default-limits
37
+ Type Resource Min Max Default Request Default Limit
38
+ Container cpu 100m 2 500m 1
39
+ Container memory 128Mi 4Gi 512Mi 1Gi
40
+
41
+ The LimitRange is automatically injecting default requests! The pod
42
+ gets 500m CPU and 512Mi memory even though the deployment doesn't
43
+ specify them.
44
+
45
+ Task: Explain ResourceQuotas and LimitRanges. Write: how ResourceQuotas
46
+ enforce namespace-level limits, how LimitRanges set per-container
47
+ defaults and min/max, how they interact (when quota exists, all pods
48
+ must have requests — LimitRange provides defaults), QoS classes
49
+ (Guaranteed, Burstable, BestEffort) and eviction priority, and how
50
+ to right-size resource settings.
51
+
52
+ assertions:
53
+ - type: llm_judge
54
+ criteria: "ResourceQuota and LimitRange interaction is explained — ResourceQuota sets total namespace limits (aggregate CPU, memory, pod count). When ResourceQuota exists, every pod MUST specify resource requests — if not set, LimitRange provides defaults. LimitRange also enforces min/max per container. If no LimitRange default and no request specified, pod creation fails with quota enabled"
55
+ weight: 0.35
56
+ description: "Quota and LimitRange interaction"
57
+ - type: llm_judge
58
+ criteria: "QoS classes are explained — Guaranteed (requests=limits for all containers, highest priority, last evicted), Burstable (requests<limits or partial specification, medium priority), BestEffort (no requests or limits, first evicted under pressure). Understanding QoS helps prioritize which pods survive during resource contention"
59
+ weight: 0.35
60
+ description: "QoS classes explained"
61
+ - type: llm_judge
62
+ criteria: "Right-sizing and debugging are practical — check quota usage (kubectl describe quota), check LimitRange defaults (kubectl describe limitrange), use kubectl top pod for actual usage vs requests, review QoS class with kubectl get pod -o yaml. Right-sizing: set requests to P95 usage, limits to peak + buffer. Avoid BestEffort for production workloads"
63
+ weight: 0.30
64
+ description: "Right-sizing and debugging"
@@ -0,0 +1,69 @@
1
+ meta:
2
+ id: advanced-troubleshooting-shift
3
+ level: 3
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Combined advanced troubleshooting shift — diagnose a production incident involving node failures, storage issues, service mesh, and monitoring gaps"
7
+ tags: [Kubernetes, troubleshooting, combined, shift-simulation, production-incident, advanced]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ 3:00 AM alert: "Multiple services degraded in production." You're the
13
+ on-call SRE. The incident cascaded from a single root cause:
14
+
15
+ Timeline:
16
+ - 2:30 AM: worker-5 hits MemoryPressure, starts evicting pods
17
+ - 2:35 AM: Evicted pods reschedule to worker-2 and worker-3
18
+ - 2:40 AM: worker-2 runs out of disk space from container logs
19
+ - 2:45 AM: StatefulSet database pods fail to reschedule (PVC zone affinity)
20
+ - 2:50 AM: Services depending on the database start failing
21
+ - 2:55 AM: Alertmanager didn't page because Slack webhook expired
22
+ - 3:00 AM: Customer reports trigger manual investigation
23
+
24
+ Current state:
25
+ $ kubectl get nodes
26
+ NAME STATUS ROLES VERSION
27
+ worker-1 Ready worker v1.29.0
28
+ worker-2 Ready,SchedulingDisabled worker v1.29.0
29
+ worker-3 Ready worker v1.29.0
30
+ worker-4 Ready worker v1.29.0
31
+ worker-5 NotReady,SchedulingDisabled worker v1.29.0
32
+
33
+ $ kubectl get pods -n critical --field-selector=status.phase!=Running
34
+ NAME STATUS RESTARTS AGE
35
+ postgres-1 Pending 0 25m
36
+ search-indexer-7a8b-c9d0 Failed 0 25m
37
+ api-cache-1e2f-g3h4 Failed 0 25m
38
+
39
+ Issues to address:
40
+ 1. worker-5 MemoryPressure — identify memory-hungry pod, assess if
41
+ node can recover or needs replacement
42
+ 2. worker-2 DiskPressure — container log rotation not configured,
43
+ /var/lib/docker full
44
+ 3. postgres-1 Pending — PVC bound to volume in worker-5's AZ, can't
45
+ reschedule to other AZ
46
+ 4. Cascading failures — services failing because database unavailable
47
+ 5. Monitoring gap — Alertmanager webhook expired, no backup channel
48
+ 6. No PDB on critical services — evictions were uncontrolled
49
+
50
+ Task: Walk through this cascading incident. Write: the root cause
51
+ analysis (chain of events), immediate remediation steps for each
52
+ issue, how to restore service for the database (PVC zone affinity
53
+ options), why the monitoring gap let this escalate for 30 minutes,
54
+ and the post-incident improvements (PDBs, log rotation, monitoring
55
+ redundancy, capacity planning).
56
+
57
+ assertions:
58
+ - type: llm_judge
59
+ criteria: "Cascading failure chain is explained — initial trigger was MemoryPressure on worker-5 causing evictions. Evicted pods redistributed, overloading worker-2 which then hit DiskPressure. StatefulSet pods couldn't reschedule due to PVC zone affinity. Dependent services failed. Monitoring gap delayed response by 30 minutes. Each failure amplified the next"
60
+ weight: 0.35
61
+ description: "Cascade chain explained"
62
+ - type: llm_judge
63
+ criteria: "Immediate remediation is practical — (1) free disk on worker-2 (truncate/rotate logs, clear unused images: crictl rmi --prune), (2) for postgres-1: either bring worker-5 back online or create new PV in available AZ and restore from backup, (3) restart failed pods once dependencies are back, (4) fix Alertmanager config immediately. Prioritize database recovery as it's the dependency for other services"
64
+ weight: 0.35
65
+ description: "Immediate remediation"
66
+ - type: llm_judge
67
+ criteria: "Post-incident improvements are comprehensive — add PodDisruptionBudgets for critical services, configure container log rotation (logrotate or container runtime config), add backup alerting channels (PagerDuty + Slack), implement capacity alerts before pressure (warn at 80%), use WaitForFirstConsumer for PVCs, run regular backup/restore tests, add pod anti-affinity to spread critical pods across nodes"
68
+ weight: 0.30
69
+ description: "Post-incident improvements"
@@ -0,0 +1,71 @@
1
+ meta:
2
+ id: cluster-upgrade-failures
3
+ level: 3
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Debug Kubernetes cluster upgrade failures — diagnose API deprecations, node rotation issues, and workload disruptions during upgrades"
7
+ tags: [Kubernetes, cluster-upgrade, API-deprecation, node-rotation, advanced]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your team is upgrading a Kubernetes cluster from 1.28 to 1.30 and
13
+ encountering multiple failures:
14
+
15
+ Phase 1 — Control plane upgrade:
16
+ Pre-upgrade validation shows deprecated API usage:
17
+
18
+ $ kubectl get --raw /metrics | grep apiserver_requested_deprecated_apis
19
+ apiserver_requested_deprecated_apis{group="extensions",version="v1beta1",
20
+ resource="ingresses"} 47
21
+ apiserver_requested_deprecated_apis{group="policy",version="v1beta1",
22
+ resource="podsecuritypolicies"} 12
23
+
24
+ 47 Ingress resources still use extensions/v1beta1 (removed in 1.22)
25
+ and 12 PodSecurityPolicy resources use policy/v1beta1 (removed in 1.25).
26
+
27
+ Phase 2 — Node rotation:
28
+ After control plane upgrade, worker node drain fails:
29
+
30
+ $ kubectl drain worker-1 --ignore-daemonsets
31
+ error: unable to drain node "worker-1": cannot evict pod
32
+ "critical-db-0": disruption budget prevents eviction
33
+
34
+ PDB blocks eviction. After increasing replicas to allow drain:
35
+
36
+ $ kubectl get nodes
37
+ NAME STATUS VERSION
38
+ master-1 Ready v1.30.0
39
+ worker-1 Ready,SchedulingDisabled v1.28.5
40
+ worker-2 Ready v1.30.0
41
+ worker-3 Ready v1.28.5
42
+
43
+ Mixed version cluster! The skew policy allows at most 1 minor version
44
+ between control plane and nodes. 1.30 to 1.28 is 2 versions — worker-1
45
+ and worker-3 are out of skew support.
46
+
47
+ Phase 3 — Workload issues post-upgrade:
48
+ After all nodes upgraded, some DaemonSets fail because they use
49
+ privileged containers and the new Pod Security Standards enforce
50
+ restricted profile on certain namespaces.
51
+
52
+ Task: Explain Kubernetes cluster upgrade process and troubleshooting.
53
+ Write: the upgrade sequence (control plane first, then nodes), API
54
+ deprecation checking and migration, version skew policy (kubelet can
55
+ be at most N-1 relative to API server), PDB considerations during
56
+ node drain, Pod Security Standards/Admission replacing PodSecurityPolicy,
57
+ and upgrade planning best practices.
58
+
59
+ assertions:
60
+ - type: llm_judge
61
+ criteria: "Upgrade sequence is explained — always upgrade control plane first (API server, controller manager, scheduler, etcd), then worker nodes one by one. Version skew policy: kubelet can be at most 1 minor version behind API server. Cannot skip minor versions (must go 1.28→1.29→1.30). Check deprecated API usage before upgrade with metrics or kubectl commands"
62
+ weight: 0.35
63
+ description: "Upgrade sequence"
64
+ - type: llm_judge
65
+ criteria: "API deprecation and migration are covered — deprecated APIs continue working until removed. Track deprecations with apiserver_requested_deprecated_apis metric. Use kubectl convert or manual manifest updates to migrate (e.g., extensions/v1beta1 Ingress → networking.k8s.io/v1). PodSecurityPolicy removed in 1.25, replaced by Pod Security Standards/Admission. Plan migration before upgrading"
66
+ weight: 0.35
67
+ description: "API deprecation"
68
+ - type: llm_judge
69
+ criteria: "Operational considerations are practical — pre-upgrade checklist: check API deprecations, review PDBs for drain compatibility, backup etcd, test in staging first. During upgrade: drain nodes one at a time, monitor workload health, use surge capacity for zero-downtime. Post-upgrade: verify all nodes at new version, run integration tests, check for Pod Security Standard violations. Use managed Kubernetes (EKS/GKE/AKS) to simplify"
70
+ weight: 0.30
71
+ description: "Operational considerations"
@@ -0,0 +1,62 @@
1
+ meta:
2
+ id: gitops-drift-detection
3
+ level: 3
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Debug GitOps drift — diagnose when cluster state diverges from Git and how ArgoCD/Flux detect and reconcile drift"
7
+ tags: [Kubernetes, GitOps, ArgoCD, Flux, drift-detection, reconciliation, advanced]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your ArgoCD dashboard shows several applications as "OutOfSync" and
13
+ one as "Degraded":
14
+
15
+ ArgoCD Applications:
16
+ | NAME | SYNC STATUS | HEALTH STATUS | MESSAGE |
17
+ |---------------|-------------|---------------|------------------------|
18
+ | api-gateway | OutOfSync | Healthy | live != desired |
19
+ | user-service | Synced | Degraded | 0/3 pods available |
20
+ | order-service | OutOfSync | Healthy | manual override |
21
+ | monitoring | Unknown | Unknown | ComparisonError |
22
+
23
+ Investigation:
24
+
25
+ 1. api-gateway (OutOfSync, Healthy) — someone used kubectl edit to
26
+ change the replica count from 2 to 5 directly in the cluster.
27
+ ArgoCD detects the drift but auto-sync is disabled, so it shows
28
+ OutOfSync without correcting it.
29
+
30
+ 2. user-service (Synced, Degraded) — Git has the correct manifest but
31
+ the pods are failing. ArgoCD shows Synced because the desired state
32
+ matches Git, but the health check shows Degraded because pods
33
+ aren't running. The issue is in the application code, not GitOps.
34
+
35
+ 3. order-service (OutOfSync, Healthy) — a Helm values override was
36
+ applied directly, bypassing the Git repo. The rendered manifests
37
+ differ from what Git produces.
38
+
39
+ 4. monitoring (Unknown, ComparisonError) — ArgoCD can't compare the
40
+ desired state because a CRD was deleted from the cluster, making
41
+ the custom resources unresolvable.
42
+
43
+ Task: Explain GitOps drift detection and reconciliation. Write: what
44
+ drift means (cluster state differs from Git source of truth), how
45
+ ArgoCD detects drift (periodic comparison), sync vs health status,
46
+ auto-sync vs manual sync, why manual kubectl changes are problematic
47
+ in GitOps, how to handle legitimate emergency changes, and CRD
48
+ dependency management.
49
+
50
+ assertions:
51
+ - type: llm_judge
52
+ criteria: "Drift detection is explained — ArgoCD periodically compares live cluster state with the desired state from Git. OutOfSync means live != Git. Sync status and health status are independent: an app can be Synced but Degraded (code bug), or OutOfSync but Healthy (manual scale change). Auto-sync automatically corrects drift by applying Git state. Manual sync requires human approval"
53
+ weight: 0.35
54
+ description: "Drift detection"
55
+ - type: llm_judge
56
+ criteria: "Manual changes problem is addressed — kubectl edit/apply bypasses Git, creating drift that ArgoCD flags. In GitOps, ALL changes should go through Git (PR → merge → sync). For emergencies: make the change directly BUT immediately commit the same change to Git so the source of truth is updated. ArgoCD self-heal option auto-reverts manual changes. Flux uses similar reconciliation loop"
57
+ weight: 0.35
58
+ description: "Manual changes problem"
59
+ - type: llm_judge
60
+ criteria: "CRD and operational issues are covered — CRD deletion causes ComparisonError because ArgoCD can't parse custom resources without the CRD. Fix: ensure CRDs are managed by ArgoCD with proper sync waves (CRDs before resources). Use app-of-apps pattern for dependency ordering. Monitor ArgoCD itself for health. Use argocd app diff to see what changed, argocd app sync --dry-run to preview"
61
+ weight: 0.30
62
+ description: "CRD and operations"
@@ -0,0 +1,67 @@
1
+ meta:
2
+ id: job-cronjob-failures
3
+ level: 3
4
+ course: kubernetes-deployment-troubleshooting
5
+ type: output
6
+ description: "Debug Job and CronJob failures — diagnose stuck jobs, missed schedules, concurrent execution issues, and backoff limits"
7
+ tags: [Kubernetes, Job, CronJob, batch-processing, scheduling, advanced]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your data pipeline CronJobs are failing silently — reports aren't
13
+ being generated but nobody noticed for 3 days:
14
+
15
+ $ kubectl get cronjobs -n data
16
+ NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
17
+ daily-report 0 2 * * * False 0 3d 30d
18
+ hourly-etl 0 * * * * False 3 5m 30d
19
+ weekly-cleanup 0 0 * * 0 True 0 7d 30d
20
+
21
+ Issues discovered:
22
+
23
+ 1. daily-report — Last scheduled 3 days ago, no recent Jobs:
24
+ $ kubectl get jobs -n data -l job-name=daily-report --sort-by=.status.startTime
25
+ NAME COMPLETIONS DURATION AGE
26
+ daily-report-28930560 0/1 3d 3d
27
+
28
+ The job is still running (stuck) from 3 days ago. The CronJob's
29
+ concurrencyPolicy is "Forbid", so no new Jobs are created while the
30
+ old one is active. The Job's pod is stuck in Init:0/1 waiting for
31
+ a database migration init container that will never complete.
32
+
33
+ 2. hourly-etl — 3 active jobs running concurrently:
34
+ concurrencyPolicy is "Allow" (default), so every hour a new Job
35
+ starts even if previous ones haven't finished. Jobs are piling up,
36
+ consuming resources and causing database contention.
37
+
38
+ 3. weekly-cleanup — Suspended=True:
39
+ Someone suspended it during debugging and forgot to re-enable it.
40
+
41
+ Additionally:
42
+ $ kubectl get jobs -n data | grep -c "0/1"
43
+ 47
44
+
45
+ 47 failed jobs sitting in the namespace, never cleaned up because
46
+ failedJobsHistoryLimit wasn't set.
47
+
48
+ Task: Explain Job and CronJob troubleshooting. Write: how Jobs work
49
+ (completions, parallelism, backoffLimit), CronJob scheduling (schedule
50
+ syntax, concurrencyPolicy, startingDeadlineSeconds), common failure
51
+ modes (stuck jobs blocking schedules, missed schedules, resource
52
+ accumulation), cleanup and history limits, and monitoring Jobs
53
+ effectively.
54
+
55
+ assertions:
56
+ - type: llm_judge
57
+ criteria: "Job mechanics are explained — completions: how many pod completions needed, parallelism: how many pods run simultaneously, backoffLimit: retries before marking as Failed (default 6), activeDeadlineSeconds: maximum runtime. Jobs create pods that run to completion. Failed pods are retried with exponential backoff. A Job stuck in active state blocks CronJobs with Forbid concurrency"
58
+ weight: 0.35
59
+ description: "Job mechanics"
60
+ - type: llm_judge
61
+ criteria: "CronJob-specific issues are covered — concurrencyPolicy: Allow (multiple jobs simultaneously, risk of pile-up), Forbid (skip if previous still running, risk of stuck blocking), Replace (kill previous, start new). startingDeadlineSeconds: if a schedule is missed by more than this, skip it. successfulJobsHistoryLimit and failedJobsHistoryLimit control cleanup (default 3/1). Suspended field pauses scheduling. Always check for suspended CronJobs during debugging"
62
+ weight: 0.35
63
+ description: "CronJob issues"
64
+ - type: llm_judge
65
+ criteria: "Debugging and monitoring are practical — check CronJob last schedule time, list active Jobs, check Job pod status and logs. For stuck Jobs: delete the Job or set activeDeadlineSeconds. Monitor: alert on CronJobs that haven't run within expected window, alert on failed Job count, use ttlSecondsAfterFinished (K8s 1.23+) for automatic cleanup. Set appropriate history limits to prevent namespace resource accumulation"
66
+ weight: 0.30
67
+ description: "Debugging and monitoring"