Resources
This template, by topic
| I want to… |
Go to |
| understand why interactive content matters |
Welcome |
| follow the path from zero to a shipped training |
00 — Getting Started |
| open, fork or branch a training in the editor |
01 — Open or Fork a Training |
| get a live environment, a terminal, my apps |
02 — Start the Environment |
| try a command, a framework function or a DQL query |
03 — Command Center |
| write a step and test it |
04 — Write and Test Steps |
| rebuild the environment at a step |
05 — Recreate the Environment |
| commit, validate and open a pull request |
06 — Commit and Open a PR |
| take my training as a learner |
07 — Test as a Learner |
| know what happens when a learner clicks Start |
How It Works |
write post-create.sh, add an app, write my_functions.sh |
Automate the Environment |
| get an extra Dynatrace token minted for my training |
Automate → Tokens |
| change the DynaKube (mode, KSPM, extensions, ActiveGate size) |
Automate → DynaKube |
| structure a step |
Lesson Anatomy |
| look up a block's fields and operators |
Interactive Blocks |
| copy a complete lesson |
Example Lesson |
| refresh the app after a merge, ship into dynatrace-wwse |
Publish & Ship |
| work in VS Code, a Codespace or locally |
Appendix — Working Outside the App |
Reference training
- enablement-kubernetes-101 — the golden example: checks, quizzes, DQL validations and a solution on every step. Read its
docs/, .devcontainer/util/my_functions.sh and .devcontainer/yaml/dt-tokens.yaml side by side.
- EasyTrade sample lab
post-create.sh — Kubernetes 101 cloned, with the operator, DynaKube and EasyTrade automated in post-create.sh.
Codespaces Framework
Orbital and the app
MkDocs Material
Dynatrace
GitHub Codespaces
Quick reference — kubectl commands for trainers
# Cluster status
kubectl get nodes
kubectl get pods --all-namespaces
# Watch pod lifecycle
kubectl get pods -n <namespace> --watch
# Describe a resource
kubectl describe pod <pod-name> -n <namespace>
# Check annotations (OneAgent injection)
kubectl get pods -n todoapp -o jsonpath='{.items[*].metadata.annotations}'
# Rolling restart
kubectl rollout restart deployment -n <namespace>
kubectl rollout status deployment -n <namespace> --timeout=120s
# DynaKube
kubectl get dynakube -n dynatrace
kubectl describe dynakube -n dynatrace
Quick reference — framework shell functions
# Cluster
startCluster · stopCluster · deleteCluster # follow CLUSTER_ENGINE (k3d default)
installK9s
# Dynatrace
dynatraceDeployOperator
deployApplicationMonitoring # AppOnly (recommended on k3d / Orbital)
deployDynatrace [mode] # apponly | k8s-only | cloudnative
generateDynakube # only writes .devcontainer/yaml/gen/dynakube.yaml
undeployDynakubes
# Apps
deployApp # list; deployApp <name> [-d]
deployTodoApp
registerApp <name> <ns> <svc> <port>
# Waiting
waitForPod <ns> <name>
waitForAllReadyPods <ns>
# Docs
installMkdocs · exposeMkdocs · deployGhdocs
# Output
printInfoSection "…" · printInfo "…" · printWarn "…" · printError "…"