Skip to content

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 "…"