Subsections of Openshift-Learning-Paths
Module 0 β Prerequisites & How to Use
Audience: Everyone starting the path β new hires and existing engineers upskilling.
Outcomes: Set up a personal lab, understand how verification works in this path, and adopt the “model before commands” mindset that every later module assumes.
Checklist β work through in order
- Read Why this module exists and adopt the “model before commands” mindset
- Stand up a lab you can reach by console + CLI
- Complete access onboarding (SSO, repo access, cluster access)
- Confirm you know where completion is recorded and who reviews it
- Pass the Verification checks at the bottom
Why this module exists
This path deliberately teaches models before commands. The single biggest obstacle to learning DevOps tooling is not missing knowledge β it is a mental model that needs rebuilding, not extending. Each module opens with the mental shift required. Treat the lab as non-negotiable: every concept should map to something you can inspect in a console or from a CLI.
Topics
- Lab options β a single local cluster (or cloud trial) for Modules 1β4; a hub + managed cluster for Modules 5β6; bare-metal/simulated nodes for Module 8.
- Verification philosophy β scenario-based checks, not flash-card recall. If you need notes to do the check, the module is not done.
- Beginner’s mind β some prior knowledge transfers; much does not. Anchor too hard on old analogies (e.g., “clusters are like vCenters”) and the gaps get harder to find.
- Pace β self-paced. Modules 1β2 are days; Modules 3β7 are weeks. Module 8 is a specialist track.
Resources
Verification
- You have a working lab environment you can
ssh/CLI into. - You can state, without notes, the difference between learning a command and learning a model, and why this path leads with the model.
- You know where to record completion and who reviews it.
Module 1 β Git, GitHub & GitLab Best Practices
Audience: Anyone using Git day to day β developers, writers, infrastructure and platform engineers. If you’ve used Git but not internalized why the model works, this module is for you.
Outcomes: Understand how Git stores history (the inside-out mental model); use the daily workflow (clone β branch β commit β push β PR/MR β merge) without looking up commands; reason about git log, diff, revert; operate comfortably in both GitHub and GitLab with branch protection, CODEOWNERS, and SSO/SAML; and earn the GitHub Foundations certification.
Checklist β work through in order
- Stage 0 (do first): watch Git For Ages 4 And Up and draw the object model
- Stage 1: Microsoft Learn β GitHub Fundamentals path + GitHub Skills (in-browser); GitLab users add GitLab for Beginners
- Stage 2: finish learngitbranching.js.org “Introduction Sequence” + “Ramping Up”; read Pro Git Ch.1β3
- Work the Mechanics checklist (clone/branch/commit/push/PR, diff, log, revert vs reset, CODEOWNERS, branch protection)
- Complete enterprise hosting onboarding (SSO-authorized PAT, 2FA)
- Certify: book GitHub Foundations (GitHub/PSI Β· $99 Β· 75 questions Β· 120 min Β· 700/1000 Β· no prerequisites). Study aids: Microsoft Learn GitHub Fundamentals, Pro Git, LadyKerr github-certification-guide
- Pass the scenario-based Verification at the bottom
Mental model first β not just “how to Git”
Most Git tutorials start with commands. This module starts with the model, because commands make no sense without it. Git stores snapshots, not diffs; commits are immutable, content-addressed objects; branches are labels, not containers. Every confusing moment (detached HEAD, merge vs rebase, rejected pushes) is a model mismatch.
Do Stage 0 before anything else.
Git vs Git hosting platforms
- Git = decentralized version control (created by Linus Torvalds, 2005). Every developer has the full history. Identical everywhere it’s installed.
- GitHub / GitLab = hosting services on top of Git: web UI, PRs/MRs, issues, CI/CD, wikis. The collaborative layer differs; Git itself does not care which host you use.
- Core workflow is identical on both:
cloneβcheckout -b featureβaddβcommitβpush -u origin featureβ open PR (GitHub) / MR (GitLab).
| GitHub | GitLab | Meaning |
|---|---|---|
| Pull Request (PR) | Merge Request (MR) | Proposed, reviewed change |
| GitHub Actions | GitLab CI | CI/CD (GitLab built-in, GitHub opt-in) |
| Organizations | Groups | Team management |
gh CLI | glab CLI | Terminal tooling |
Git as the tool for change management
Git doesn’t create governance β the workflows on top do. This reframe is the cultural core of everything later (especially GitOps).
| Traditional process | Git / hosting-platform equivalent |
|---|---|
| Change ticket | PR / MR β the diff is the change; description is the body |
| Peer review / approval | PR/MR review β named, required approvers via branch protection |
| Approval record | Merge commit β named, timestamped, traceable |
| “Who changed this?” | git log, git blame, PR history |
| Emergency / break-glass | Emergency PR with post-hoc review; audit trail preserved |
| Rollback | git revert β both change and rollback preserved in history |
Git makes governance faster, more traceable, and automatable at the enforcement layer.
Stage 0 β Mental model (free, ~2h)
Git For Ages 4 And Up β Michael Schwern (~1h 40m). Teaches objects β commits β labels β staging β remotes with physical props. After this, detached HEAD, rebase, and reset become logical consequences of the model.
Verification: On paper/whiteboard, draw the relationship between a blob, a tree, a commit object, a branch label, HEAD, and a remote ref. Explain what git commit physically does to those objects.
Stage 1 β Hands-on basics (free, 2β4h)
| Resource | What it covers | Link |
|---|---|---|
| Microsoft Learn β GitHub Fundamentals | Structured, exam-aligned path: Git basics, GitHub flow, collaboration, PRs, issues, project boards | GitHub Fundamentals (Microsoft Learn) |
| GitHub Skills (in-browser) | Introduction to Git; Introduction to GitHub β automated feedback via Actions | skills.github.com |
| GitLab for Beginners (in-browser) | Same fundamentals in the GitLab UI | about.gitlab.com/learn/gitlab-for-beginners |
| Microsoft Learn β Introduction to Git | Modules: Intro to Git (~1h26m), Collaborate with Git (44m), Introduction to GitHub | learn.microsoft.com/…/intro-to-git |
Verification: Clone a repo, create a branch, edit one line, commit, push, open a PR/MR. Write the description as a change ticket: what changed, why, risk, how to verify.
Stage 2 β Internals & interactive practice (free)
| Resource | Covers | Notes |
|---|---|---|
| learngitbranching.js.org | Branching, merging, rebasing, cherry-pick β visually | Start with “Introduction Sequence” |
| Pro Git book (free) | Everything; Ch.1β3 fundamentals, Ch.10 internals | Deeper chapters for submodules, rerere, merge strategies |
Verification: Complete “Introduction Sequence” + “Ramping Up” of learngitbranching. Explain, without notes, git rebase main vs git merge main on a feature branch.
Mechanics checklist (Day-to-day GitOps work)
| Topic | Why it matters |
|---|---|
Install Git; set user.name / user.email | Every commit attributed; matches policy/audit |
| Clone, remote, fetch vs pull | GitOps tooling reads from remotes; needs reproducible local copy |
| Branch / commit / push | Feature branch β PR β merge to main/env branch |
| PR/MR lifecycle | Where review/approval gate automation |
Diff (git diff, IDE) | Constantly compare YAML to cluster behavior |
git log / git log --oneline --graph | “What changed and when?” |
git stash | Shelve WIP when switching branches |
git revert vs git reset | revert safe on shared branches; reset rewrites history (local only) |
| Org basics: permissions, CODEOWNERS, branch protection | You may not push to main β that is correct and intentional |
Optional: gh / glab CLI | Open PRs/MRs, check CI from terminal |
Enterprise hosting notes
- Complete IT device/token onboarding before pushing β PATs often need one-time SSO authorization.
- Prefer fine-grained PATs (or deploy keys / service-account tokens for CI) over classic repo-scoped tokens.
Certification
| Certification | Aligns with | Notes |
|---|---|---|
| GitHub Foundations | Stage 0β2 + enterprise notes | Validates Git + GitHub fundamentals; pair with the Microsoft GitHub Fundamentals learn path as study material. Exam booked via |
Verification (scenario-based)
- Clone β branch β edit β push β PR: as above, with ticket-style description.
- Explain the model: without notes β
git commit(local) vsgit push(publish);git pull(laptop) vs merging a PR/MR (review gates, approval record, audit). - Read history: from
git log, answer who changeddeployment.yamltwo weeks ago, what, and was it reviewed? - Recover: make a bad commit on a feature branch;
git revertit; explain why notgit reseton a shared branch.
Module 2 β Containers & Registries
Audience: Engineers new to containerization, or coming from VM-centric operations.
Outcomes: Build and run container images; understand the layer model, image digests, and registries; reason about base images, tags vs digests, and registry authentication β the foundation for Kubernetes (Module 3).
Checklist β work through in order
- Read the mental model below (images, layers, tags vs digests, Podman vs Docker)
- Learn containers before Kubernetes β do a Docker/Podman fundamentals course: KodeKloud “Docker for the Absolute Beginner” or Podman docs getting-started
- Build and run your first image from a minimal base (UBI/distroless)
- DO180 (Red Hat: Containers, Kubernetes & OpenShift) as the formal path β free Red Hat Developer tutorials as a no-cost alternative
- Practice registry push/pull, tags vs digests, and image scanning
- Pass the scenario-based Verification at the bottom
Mental model
A container is an isolated, runnable instance of an image β an immutable, layered filesystem plus metadata. Unlike a VM, a container shares the host kernel and has no hypervisor. The unit Kubernetes reasons about is the container (packed into Pods), not the VM.
Key shifts from VM thinking:
- Images are immutable artifacts, not running state. You rebuild, not “snapshot and edit.”
- Layers are content-addressed and shared β changes only add new layers.
- Tags are mutable pointers; digests are immutable. Production should pin by digest.
Topics
- Images & layers β
Dockerfile/Containerfileinstructions; layer caching; minimal base images (UBI, distroless). - Building & running β
build,run,exec,logs, port/publish, volumes, environment. - Registries β pull/push, tags vs digests, auth, mirror registries, private/internal registries.
- Image hygiene β sizing, non-root users, multistage builds, scanning for CVEs.
- Podman vs Docker β rootless containers;
podmanis OCI-compliant and often the platform default (no daemon).
Resources
- Red Hat β DO180: Containers, Kubernetes, and Red Hat OpenShift (formal course; containers + K8s intro).
- OpenShift learning (Red Hat Developer) β no-cost tutorials (URLs change; use as hub).
- Podman documentation β docs.podman.io;
podman build/runmirror Docker CLI.
Verification (scenario-based)
- Write a
Containerfilefor a small HTTP app from a minimal base image; build it; run it;curlthe exposed port. - Inspect layers (
podman history/docker history); explain which instruction added which layer and why caching matters. - Pull an image by tag, then by digest; explain why the digest is reproducible and the tag is not.
- Push an image to a registry; explain auth and how a cluster later pulls it (ties to Module 3 image pulls + Module 8 disconnected mirrors).
Module 3 β Kubernetes & OpenShift Core
Audience: Infrastructure/platform engineers and developers operating or deploying on Kubernetes/OpenShift. (VMware admins: this is where you rebuild the mental model from Kubernetes up β see the mapping scaffold, then discard it.)
Outcomes: Read and reason about YAML; navigate console + CLI; deploy and diagnose a stateless app; operate cluster-level concerns β cluster operators, MachineConfig, nodes, auth, SCCs, OLM, multi-tenancy, networking, storage, observability, and backup/DR.
Checklist β work through in order
- Prereq: basic Linux (Red Hat RH124 or equivalent) β you will live on the CLI
- Read the Mental shift below and internalize desired-state / nodes-are-cattle
- 3.1 App layer β Deployments, Services, Routes/Ingress, ConfigMaps/Secrets, RBAC, Operators
- 3.2 Cluster ops β cluster operators, MachineConfig, nodes, OAuth, SCCs, OLM, observability, backup/DR
- 3.3 Networking β OVN-Kubernetes, NetworkPolicy, Multus/NAD, MetalLB, NMState
- 3.4 Storage β StorageClass, PV/PVC, CSI, ODF, RWX vs RWO
- Courses: KodeKloud “Kubernetes for the Absolute Beginners” / CKA / CKAD (Mumshad) for vendor-neutral depth; DO180 β DO280 for the OpenShift track
- Certify (optional, vendor-neutral): CNCF KCNA (entry) β CKAD or CKA (performance-based, 66% to pass, $445). OpenShift track: EX280 (Module 9)
- Pass the scenario-based Verification in each sub-section
Mental shift (read first)
OpenShift is a Kubernetes platform. OpenShift Virtualization (Module 4) is a Kubernetes add-on that runs VMs inside Kubernetes. The substrate is Kubernetes β not a hypervisor.
Treat vCenter/ESXi analogies as a temporary scaffold only. They break:
- Console is read/observe, not source of truth β Git is (Modules 5+).
- Nodes are cattle β drainable/replaceable; state lives in PVCs.
- Manifests are desired-state β controllers reconcile continuously; divergence is auto-corrected.
| VMware concept | K8s/OCP analogue | Discard when⦠|
|---|---|---|
| vCenter UI | OpenShift Console (observe only) | Breaks in Module 5 (GitOps) |
| ESXi host | Worker node | Breaks in Module 3.1 (nodes are cattle) |
| Resource pool / reservation | Requests/limits, PriorityClasses, scheduling | Breaks in Module 3.1 |
| VM / template | Deployment+Pods (containers); VirtualMachine (Module 4) | Breaks in 3.1β3.2 |
| Port group / dvSwitch | OVN-Kubernetes, NAD/Multus | Breaks in networking deep dive |
| vSAN / datastore | StorageClass, PV/PVC, CSI | Breaks in storage deep dive |
| DRS / HA | Scheduling, affinity, PodDisruptionBudgets | Breaks in 3.1 |
| Change ticket / CAB | PR + merge (Module 1) | Slowest reframe |
3.1 β Kubernetes internals & application layer (1β2 weeks)
Topics
- Images, registries, Deployments, Services, Routes/Ingress, ConfigMaps, Secrets
- Namespaces/Projects, RBAC β who can
getwhat - Operators β platform extends itself via CRDs (the same mechanism that adds VM support in Module 4)
Official
- Pods (Kubernetes docs) β the atom
- OpenShift learning (Red Hat Developer)
- An introduction to GitOps (read once so Module 5 connects)
Verification
- Given unseen Deployment YAML: identify image, replicas, port, env vars, volume mounts β unaided.
- Run a pod that fails (bad image tag / missing env). Diagnose with
oc get pods,describe,logs,get eventsβ no console. - Expose an app with a Route;
curlit; explain what the Route did and which operator manages it.
3.2 β Cluster operations (admin lens) (2β4 weeks, parallel with 3.1)
Topics
- Cluster operators β
oc get cois the platform-health dashboard - MachineConfig / MachineConfigPool β declarative node config (don’t SSH to fix nodes)
- Nodes β cordon, drain, conditions (maintenance-mode equivalent)
- Authentication β OAuth, identity providers; diagnose “can’t log in”
- Security Context Constraints (SCCs) β pod-level security model, no VMware equivalent;
restricted-v2default is stricter than upstream K8s. Audit withoc adm policy who-can use scc. - Operator Lifecycle Manager (OLM) β
CatalogSource,Subscription,InstallPlan,CSV. A CSV stuckInstallingis the most common failure. - Multi-tenancy β namespace isolation (
ResourceQuota,LimitRange) vs separate clusters; RBAC for self-service. - Observability β Prometheus + Alertmanager (default);
PrometheusRule,AlertmanagerConfig; LokiStack logging;oc adm must-gather/oc adm inspect. - Backup & DR β
etcdbackup (control-plane recovery); OADP/Velero for workload PVs. Two models: restore (etcd + node rebuild) vs rebuild (GitOps re-apply) β neither fully replaces the other.
Official
- OCP documentation β bookmark Operators, Nodes, Networking, Security
- Managing Security Context Constraints
- Backing up etcd
- OADP
- Monitoring overview
Verification
oc get co; find a degraded operator; explain (viadescribe/events/logs) what’s wrong.- (multi-node) Cordon β confirm no eviction; drain β confirm pods moved; uncordon. On SNO: trace the procedure and name constraints.
- SCCs: deploy a pod requesting
hostNetwork: true; find the SCC failure;oc adm policy who-can use scc hostnetwork; explainrestricted-v2vsprivileged. - OLM: install via
Subscription; break the channel; diagnose stuckInstallPlan/CSV; recover without deleting the operator. - Observability: write a
PrometheusRulefiring when >10 podsPending>5min; confirm in Alertmanager. Explainmust-gathervsinspect. - Backup/DR: run/trace an etcd backup; compare to a vSphere snapshot β what etcd preserves that GitOps rebuild can’t, and vice versa.
3.3 β Networking deep dive
- OVN-Kubernetes β default CNI; logical routers/switches managed via APIs, not a topology editor.
- NetworkPolicy β allow rules, not a firewall. Without any policy, all pod traffic is allowed.
- Multus CNI β multiple interfaces; primary via OVN, secondary via Multus (bridge/MACVLAN/IPVLAN).
- NetworkAttachmentDefinition (NAD) β CR defining a secondary network; VMs reference it in Module 4.
- MetalLB β LoadBalancer services on bare metal.
- NMState β declarative node networking (
NodeNetworkConfigurationPolicy). - SR-IOV β hardware virt for high-throughput/low-latency (telco/RAN).
Verification: Create a NAD bridge; attach a pod; confirm secondary interface; explain which component provisioned each. Write a default-deny + explicit-allow NetworkPolicy; confirm it blocks unlabeled traffic; explain why it is not an NSX firewall rule.
3.4 β Storage deep dive
- StorageClass β provisioner (CSI) + params; the datastore-type choice.
- PVC / PV β request vs provisioned; PVC persists independently of the pod.
- CSI β plugin API to storage back ends; swap back end = StorageClass change.
- ODF β Ceph-based SDS; RWX (CephFS) required for live migration (Module 4).
- DataVolume / CDI β how every VM disk is imported (Module 4).
- VolumeSnapshot / VolumeSnapshotClass β CSI point-in-time snapshots (data only, not memory).
- RWX vs RWO β live migration needs RWX.
Verification: Create PVC from default StorageClass; mount in pod; write file; delete pod; confirm persistence. Set reclaim Retain on another PVC; delete; find retained PV; explain next step. Explain why live migration needs RWX.
Module 4 β OpenShift Virtualization
Audience: Platform engineers who need to run and migrate VMs on Kubernetes/OpenShift.
Outcomes: Create, start, stop, and migrate VMs; connect storage/networking; understand KubeVirt primitives (VirtualMachine, VirtualMachineInstance, DataVolume) as Kubernetes resources β because that is what they are; perform live migration and plan bulk migration from vSphere (MTV).
Prerequisite: Module 3 substantially complete. A VirtualMachineInstance is a Pod β you cannot operate it without understanding Pods, scheduling, networking, and storage.
Checklist β work through in order
- Confirm Module 3 is substantially complete (a VMI is a Pod)
- Read the mental model + skim About OpenShift Virtualization
- Browse the Red Hat OpenShift Virtualization learning hub and kubevirt.io for the upstream project
- Create/start/stop a VM; find its backing VMI Pod
- Practice live migration (needs multi-node + RWX) and walk one MTV migration plan
- Formal course: DO317 β Managing VMs with OpenShift Virtualization (includes EX316 exam)
- Pass the scenario-based Verification at the bottom
Mental model
OpenShift Virtualization runs VMs inside Kubernetes via KubeVirt. The hypervisor is a process inside a Pod. The scheduler does not know or care it’s a VM. This is why Modules 2β3 come first.
Topics
- KubeVirt primitives β
VirtualMachine(desired-state),VirtualMachineInstance(running Pod with hypervisor),DataVolume(managed PVC + import pipeline) - VM networking β secondary networks via NAD; pod overlay (OVN) vs bridge-attached VLANs
- VM storage β DataVolume import (HTTP/registry/PVC clone); RWX requirement for live migration; VolumeSnapshot for disk backups
- Live migration β mechanism, objects (
VirtualMachineInstanceMigration), shared-storage + node-scheduling requirements - Migration Toolkit for Virtualization (MTV) β bulk vSphere import: source inventory, network maps, storage maps, cutover
- Performance tuning (read-ahead) β CPU pinning/NUMA (
dedicatedCpuPlacement), HugePages, SR-IOV, real-time kernel, Node Tuning Operator
Official
Formal courses: DO317 β Managing VMs with OpenShift Virtualization (includes EX316 exam); DO156 Administration I as an alternative entry point.
Verification (scenario-based)
- Create a VM from template/YAML; console/SSH in; find the backing VMI Pod via
oc get pods; describe it; confirm it’s what Kubernetes schedules. - Live migration (multi-node + RWX required; not on SNO): migrate between workers; explain which K8s mechanisms determined placement. SNO fallback: trace every object (
VirtualMachineInstanceMigration, source/target VMI pods, shared RWX PVC, QEMU channel); explain why SNO can’t (no valid target node) and the minimum topology. - Walk one MTV planning chapter: source inventory, network/storage maps, cutover β even if you migrate only one small VM.
Module 5 β CI/CD & GitOps
Audience: Engineers ready to apply Git-as-change-management to cluster configuration and application delivery.
Outcomes: Build CI/CD pipelines; use Argo CD (OpenShift GitOps) as the reconciliation engine; structure a multi-cluster GitOps repo; handle secrets safely; diagnose sync/drift and failure modes.
Depends on: Module 1 (Git) and Module 3 (cluster operations). Lab: one cluster + one Git repo is sufficient.
Checklist β work through in order
- Confirm Module 1 (Git) + Module 3 (cluster ops) are done
- Read the mental model (Git is source of truth; console is observe-only)
- Learn GitOps + Argo CD: Akuity Academy β Intro to GitOps & Argo CD (free, by the Argo creators) or KodeKloud/Coursera “Argo CD for the Absolute Beginners”. Argo CD is a CNCF Graduated project.
- Deploy your first Argo CD Application from Git; test drift + self-heal
- Learn ApplicationSet and app-of-apps; build the
components/groups/clustersrepo structure from the redhat-cop template - Pick a secrets pattern (Sealed Secrets / External Secrets Operator)
- CI side: build a pipeline (GitHub Actions / GitLab CI / Tekton) that publishes images + manifests
- Pass the scenario-based Verification at the bottom
Mental model
A PR merge replaces a change ticket. A git revert replaces an emergency rollback. Argo CD closes the loop: it continuously reconciles what is in Git against what runs in the cluster. The console is read/observe only β changes made there do not survive a sync.
Topics
- OpenShift GitOps (Argo CD) β Application, AppProject, sync policies, health checks, self-healing
- ApplicationSet β generate many Applications from one template (by cluster label, directory, branch)
- App-of-apps β a root Application managing child Applications; full inventory lives in Git
- Configuration drift β what Argo CD detects;
selfHealvs manual sync - Sync options β
Validate,CreateNamespace,RespectIgnoreDifferences, retries - GitOps repo structure β get this right early. Use the
components / groups / clusterspattern:
components/ # atomic, reusable building blocks β one concern per subfolder
groups/ # composable cluster profiles (Kustomize Component, not overlay)
clusters/ # cluster-specific config β selects which groups to composeGroups are Kustomize kind: Component (composable, not inherited) β a cluster can belong to all + non-prod + geo-east simultaneously. Reference redhat-cop/gitops-standards-repo-template and the 80+ component library redhat-cop/gitops-catalog as remote bases instead of writing operator YAML from scratch. A Helm variant uses mustMergeOverwrite with component-<name> keys.
- Mono-repo vs multi-repo β most teams start mono-repo, split when access control forces it.
- Secrets in GitOps β never commit plaintext/base64 secrets. Three patterns: (1) Sealed Secrets (asymmetric, in-cluster decrypt β simple); (2) External Secrets Operator (vault-backed, preferred for prod); (3) Helm Secrets / SOPS (encrypted values).
CI/CD (pipelines)
- Build/test/publish images and manifests in CI; let GitOps deliver to clusters.
Official
Verification (scenario-based)
- Create an Argo CD Application from Git. Change replica count/image tag in Git; watch convergence. Roll back via
git revert; watch follow. - Introduce drift β change a resource via
oc, bypassing Git. Confirm Argo CD detects/remediates per sync policy; explain why the console change didn’t survive. - Create an ApplicationSet generating one Application per directory; add a directory; confirm auto-creation.
- Failure modes: push broken YAML (syntax error / missing field) β what state? How to find the sync error without console? Deploy a crashlooping pod β distinguish
OutOfSync(differs from Git) fromDegraded(matches Git but unhealthy); explain how both can be true. - Repo structure: clone the COP template; map each folder from
kustomization.yamlonly. Designgroups/forall+virt-enabled+edge-sno; explain how a cluster in bothvirt-enabledandedge-snoreferences both viakind: Component. - Catalog: find NMState/MetalLB/ESO bases in
gitops-catalog; createcomponents/nmstate/kustomization.yamlreferencing the catalog; point an Application at it; confirm install. - Secrets: a teammate committed a base64
Secret. Explain exposure, remediate with Sealed Secrets vs ESO (why), and prevent recurrence via pre-commit hook or CODEOWNERS.
Module 6 β Fleet Management with ACM
Audience: Engineers operating multiple clusters who need consistency, compliance, and declarative correction at fleet scale.
Outcomes: Govern a fleet declaratively with RHACM β import clusters, target via labels, report compliance, enforce or inform, and bridge ACM + Argo CD (hybrid). Understand the decision framework: when should a config NOT be in Argo CD?
Prerequisite: Modules 3 and 5. Lab: hub cluster with ACM + OpenShift GitOps, plus β₯1 managed cluster. Single-node lab is insufficient.
Checklist β work through in order
- Read the fleet-thinking mental shift below (policy-first, not cluster-first)
- Stand up the lab: hub cluster with RHACM + OpenShift GitOps + β₯1 managed cluster
- RHACM governance & policy β ACM governance docs; import a cluster, label it, write your first policy
- Learn PolicyGenerator (YAML β policies) and Placements/PlacementBindings for label targeting
- Practice
informvsenforceand the Argo CD Application vs ACM Policy decision table - DO432 (Multicluster Management with Red Hat Advanced Cluster Management for Kubernetes) β validates with EX432
- Complete the scenario-based verification at the bottom
Mental shift β fleet thinking
| Single-cluster instinct | Fleet-operator reframe |
|---|---|
| “I’ll fix this cluster” | “I’ll fix the policy; ACM applies it everywhere” |
| “Who changed that?” | “Which commit changed the policy? Which clusters are non-compliant?” |
| “I’ll deploy this operator” | “All virt=enabled clusters should have the Virt operator β write a policy” |
| Console change then document | Console is observe; Git is the fleet change record |
Topics
- Cluster lifecycle with ACM β import, label for targeting, view fleet compliance
- PolicyGenerator β YAML β RHACM policies via kustomize plugin
- Placements / PlacementBindings β label-based targeting
informvsenforceβ detect/report vs auto-remediatePolicyAutomationβ link a compliance event to an AAP job (ServiceNow, PagerDuty, Day-2 tasks)- Ansible + ACM bridge β AAP generates CRs via Jinja (Redfish/Vault/DNS); ACM deploys; policies trigger AAP post-provisioning. Idempotent.
- Secret management β ESO + Vault back end (prereq for Module 8)
Key decision: Argo CD Application vs ACM Policy
| Signal | Argo CD / operators-installer | ACM Policy |
|---|---|---|
| Who decides it exists? | A team owns it | Platform mandate for all of type X |
| If missing? | Workload breaks; team fixes | Compliance violation; platform must know |
| Enforcement required? | Reconciliation sufficient | Drift detected/auto-corrected |
| Environment variation? | Yes (dev alpha, prod stable) | No (same baseline) |
| Audit needed? | Git log + PR | ACM dashboard + policy report + Git log |
| Lifecycle stage | Day 2 workload | Day 1 bootstrap / org baseline |
Use ACM Policy for: NMState, cert-manager, Virt operator, file-integrity, OAuth, kubelet config, kubeadmin removal, pull-secret distribution. Use Argo CD for: team-owned operators varying by env/team.
Grey zone: a mandate on a heterogeneous fleet needing version variation β use ACM policy templating (Go-template against cluster labels), not a switch to Argo CD. The hybrid pattern: ACM delivers an Argo CD ApplicationSet to every cluster; ACM ensures the object exists, Argo CD reconciles content.
Official
Verification (scenario-based)
- Import a second cluster; label it; write a PolicyGenerator enforcing an RBAC/alertmanager rule on that label; confirm compliance in ACM console; flip
informβenforce; observe difference. - Explain fleet compliance without notes: what “non-compliant” means, who’s notified, monitoring vs remediation policy.
- Scenario: Virt operator on all prod clusters (mandate) + Strimzi only on one team’s clusters. Argue the tool for each; what changes if Virt becomes a regulatory requirement?
Module 7 β Observability & Day-2 Operations
Audience: Engineers responsible for keeping workloads and clusters healthy, observable, and recoverable.
Outcomes: Monitor with Prometheus/Alertmanager; aggregate logs with Loki; define SLO-style alerts; back up and recover workloads (OADP) and the control plane (etcd); reason about the two recovery models.
Builds on: Module 3.2 (observability + backup/DR sections).
Checklist β work through in order
- Read the Day-2 mental model below (detect and recover, not click and hope)
- Metrics β Prometheus docs + OCP Monitoring; enable user-workload monitoring, write a
PrometheusRule - Dashboards & alerting β Grafana docs; wire Alertmanager routes
- Logs β deploy and query LokiStack (current logging backend)
- Diagnostics β practice
oc adm must-gathervsoc adm inspect - Backup & DR β OADP/Velero for workloads + etcd backup for the control plane; understand the two recovery models (restore vs rebuild)
- Complete the scenario-based verification at the bottom
Mental model
Day-2 operations is detect and recover, not click and hope. Observability tells you what’s wrong; backup/DR tells you how to get back. Both are declarative and version-controllable.
Topics
- Metrics β Prometheus + Alertmanager (installed by default); user-workload monitoring is opt-in (
enableUserWorkload: truein cluster-monitoring ConfigMap). Key objects:PrometheusRule,AlertmanagerConfig. - Logs β LokiStack is the current logging backend (replaced EFK/Elasticsearch).
- Diagnostics β
oc adm must-gather(full snapshot for support/post-incident) vsoc adm inspect(targeted resource inspection). - Fleet observability β ACM Observability aggregates hub-level metrics across managed clusters.
- Backup & DR β
etcdbackup = control-plane recovery (certs, cluster ID, custom CRs). OADP/Velero backs up workload namespaces, PVs, metadata to object storage; Virt VMs need the KubeVirt Velero plugin. - Two recovery models: restore (etcd backup + node rebuild β recovers cluster state) vs rebuild (GitOps re-apply β recovers workloads but not cluster state). Neither replaces the other.
Official
Verification (scenario-based)
- Write a
PrometheusRulefiring when any namespace has >10 podsPending>5min; confirm in Alertmanager. (Prereq: enable user-workload monitoring.) - Explain what
oc adm must-gathercollects and when to use it vsoc adm inspect. - Run/trace an etcd backup; describe contents, storage location, restore procedure. Compare to a vSphere snapshot: what etcd preserves that GitOps rebuild can’t, and vice versa.
- Explain the OADP backup flow for a Virt VM and why the KubeVirt Velero plugin is required for consistent VM backup.
Module 8 β Zero Touch Provisioning (Specialist Track)
Who this is for: Teams managing 50+ clusters, especially remote/edge sites where manual install isn’t viable (retail, utility, telco). This is a distinct engineering specialty β Day 0/1/2 automation β beyond fleet operations. If you manage 3β20 clusters in a datacenter, Module 6 is sufficient; return here when provisioning becomes a bottleneck.
Outcomes: Automate the full cluster lifecycle β bare-metal prep through install into Day-2 β via the GitOps ZTP pipeline (SiteConfig, PolicyGenTemplate, TALM, ClusterGroupUpgrade, ClusterCurator/AAP, ESO).
Depends on: Modules 3β6 complete. ZTP uses Pods, operators, ACM policy, and Argo CD Applications internally.
Checklist β work through in order
Specialist track β complete Modules 3β6 first. This is Day 0/1/2 automation for 50+ cluster / edge fleets.
- Read the Day 0 / 1 / 2 framework below and the ZTP pipeline diagram
- RHACM edge computing / ZTP β ZTP at scale (OCP edge computing)
- Day 1 install β author a
SiteConfig(+AgentClusterInstall,infraenv,NMStateConfig); understand Assisted Installer + ApplicationSet-per-cluster - Day 2 config β author a
PolicyGenTemplate; orchestrate with TALM viaClusterGroupUpgrade(canary waves) - Updating GitOps ZTP β updating the ZTP pipeline
- Secrets β wire ESO/vault for pull-secrets, BMH creds, certs (never in Git)
- Complete the scenario-based verification at the bottom
Day 0 / 1 / 2 framework
| Day | Covers | ZTP component |
|---|---|---|
| Day 0 | Pre-install: network, bare-metal prep, health checks | ClusterCurator + AAP hooks |
| Day 1 | Install & initial provisioning | SiteConfig, AgentClusterInstall, infraenv, Assisted Installer |
| Day 2 | Config, upgrades, compliance, scaling | PolicyGenTemplate, TALM, ClusterGroupUpgrade |
The ZTP pipeline
Git commit (SiteConfig / PolicyGenTemplate)
β Argo CD (hub) applies CRs to ACM
β ACM + Assisted Installer provisions cluster (Day 1)
β TALM applies Day 2 policies via ClusterGroupUpgrade
β Managed cluster: running, compliant, GitOps-managed- Day 0 β ClusterCurator pre/post hooks run AAP jobs (network/storage/firmware checks).
- Day 1 β
SiteConfig(+AgentClusterInstall,infraenv,ManagedCluster,NMStateConfig) committed to Git; ApplicationSet auto-creates an Application per cluster directory. - Day 2 β
PolicyGenTemplateproduces ACM policies; TALM orchestrates viaClusterGroupUpgrade(concurrency, canary, timeout). Upgrades follow the same Git-commit pattern.
Upgrade strategy depends on hardware: TALM in-place canary waves (no spare capacity), serial/parallel blue-green (spare pool or fast provisioning). Canary designation is the primary risk control for SNO fleets.
Secrets β ESO pulls pull-secrets, BMH creds, ingress certs, Htpasswd, ACM tokens from a vault at runtime. Never in Git.
Official
Verification (scenario-based)
- Commit a new
SiteConfigdirectory; trace: ApplicationSet β Application β ACM ManagedCluster β Assisted Installer. - Write a
PolicyGenTemplateinstalling the Virt operator onvirt=enabledclusters; apply via TALMClusterGroupUpgrade; confirm on managed cluster. - Trace a version-bump commit end-to-end:
git pushβ Argo CD β ACM β PolicyGenTemplate β TALM β CGU β ClusterVersion operator. - Walk the ESO flow: where the secret lives, how ESO auths to vault, when the K8s Secret appears.
Module 9 β Certifications & Next Steps
Audience: Engineers planning formal credentials alongside the learning path.
Outcomes: Map each module to relevant public certifications, choose a sensible sequence, and identify deeper specializations.
Checklist β choose your track
- Pick a vendor-neutral track (portable across employers) and/or a Red Hat track (matches our OCP stack)
- GitHub Foundations (after Module 1) β GitHub/PSI, $99, 75Q, no prereq
- Linux base (Red Hat): RH124 β RH134 β RHCSA (EX200)
- Kubernetes (CNCF, vendor-neutral): KCNA (entry) β CKAD or CKA (66%, $445) β CKS (requires CKA)
- OpenShift (Red Hat): DO180 β DO280 β EX280; then DO317 (Virt + EX316 included), DO432 β EX432 (fleet)
- Book one exam with a target date; the rest follow the module sequence below
Certification map
| Certification | Track | After which module(s) | Notes |
|---|---|---|---|
| GitHub Foundations | Vendor-neutral | Module 1 | Git + GitHub fundamentals; GitHub/PSI, $99, 75Q, no prereq; study via Microsoft Learn GitHub Fundamentals path |
| RHCSA (EX200) | Red Hat / Linux | Module 0β2 (Linux base) | RH124 β RH134 β EX200; the Linux foundation OCP assumes |
| KCNA β Kubernetes & Cloud Native Associate | CNCF (vendor-neutral) | Module 3 (entry) | Multiple-choice entry credential; good onboarding milestone |
| CKAD β Certified Kubernetes Application Developer | CNCF (vendor-neutral) | Module 3 (app layer) | Performance-based, 66%, $445; for those deploying apps to K8s |
| CKA β Certified Kubernetes Administrator | CNCF (vendor-neutral) | Module 3 depth | Performance-based, 66%, $445; the benchmark admin cert |
| CKS β Certified Kubernetes Security Specialist | CNCF (vendor-neutral) | after CKA | Requires a valid CKA; advanced security |
| EX280 β Red Hat Certified OpenShift Administrator | Red Hat | Module 3 depth | Core cluster admin; 3hr perf-based, 210/300; prep with DO180 β DO280 |
| EX280 β Red Hat Certified OpenShift Administrator | Red Hat | Module 3 depth | Core cluster admin; 3hr perf-based, 210/300; prep with DO180 β DO280 |
| EX316 β Red Hat Certified Specialist in OpenShift Virtualization | Red Hat | Module 4 depth | Included in DO317 bundle; covers VM management with KubeVirt |
| EX432 β Red Hat Certified Specialist in OpenShift Advanced Cluster Management | Red Hat | Module 6 depth | RHACM, policy, fleet governance; prep with DO432; replaces retired EX480. Red Hat lists DO380 (OpenShift Admin III) as a recommended prereq β optional but useful for deeper cluster-scaling context |
| DO180 / DO280 / DO317 / DO432 | Red Hat (courses) | Modules 2 / 3 / 4 / 6 | Formal Red Hat courses aligned to each module; DO317 bundles EX316 exam |
Suggested sequencing
- GitHub Foundations (Module 1) β early, low-cost, universally useful.
- RHCSA (EX200) β if Linux is new to you; the base OCP assumes (RH124 β RH134 β EX200).
- KCNA β CKA/CKAD after Module 3 β vendor-neutral, portable Kubernetes proof.
- EX280 after Module 3 β validates core OCP admin on our stack.
- EX432 after Module 6 β validates fleet governance for platform roles. Red Hat recommends DO280 β DO380 (optional) β DO432 as the prep path; DO380 covers cluster scaling and is useful but not required to attempt the exam.
- Role-specific: DO317 (Virt, includes EX316) for virtualization focus; CKS (after CKA) for security; ZTP/specialist for edge fleets.
Beyond this path
- Contribute to internal runbooks; mentor the next cohort through Modules 0β1.
- Deepen weakest verification checks β they mark real operational gaps.
- Track upstream changes (course renumbers, ZTP tooling, ACM policy API) and update this path.
OpenShift Learning Curriculum
Purpose
This curriculum provides structured, role-based learning paths for engineers and support staff working with the OpenShift / RHOSV platform. Each path draws from a shared set of modules; the modules differ in depth and scope by role.
Philosophy: Learn the model before the commands. Most failures come from a wrong mental model, not a missing command. Every module front-loads the mental shift, then the mechanics. Treat the lab as non-negotiable β concepts should map to something you can inspect in a console or from a CLI.
Modules are maintained in learning-path/modules/. Each module page is self-contained: audience, outcomes, topics, curated resources, scenario-based verification, and
<!-- ORG-SPECIFIC -->slots for internal details.
Role Paths
Platform / Infrastructure Engineers
Audience: Server engineers, platform engineers, and infrastructure engineers who build, operate, and extend the OpenShift platform.
Outcome: Full platform-engineering foundation β from Linux and Git fundamentals through cluster operations, virtualization, GitOps-driven delivery, fleet governance, observability, and (for specialists) zero-touch provisioning.
| # | Module | Required / Optional |
|---|---|---|
| 0 | Prerequisites & How to Use | Required |
| 1 | Git, GitHub & GitLab Best Practices | Required |
| 2 | Containers & Registries | Required |
| 3 | Kubernetes & OpenShift Core | Required |
| 4 | OpenShift Virtualization | Required |
| 5 | CI/CD & GitOps | Required |
| 6 | Fleet Management with ACM | Required |
| 7 | Observability & Day-2 Operations | Required |
| 8 | Zero Touch Provisioning | Optional β specialist track (50+ cluster / edge fleets) |
| 9 | Certifications & Next Steps | Required |
Suggested sequence: Complete modules in order. Module 3 is the largest β work through its sub-sections (app layer β cluster ops β networking β storage) before moving to Module 4.
Expected outcomes:
- Perform essential Linux administration tasks and live on the CLI
- Work confidently with Git, GitHub, and GitLab-based collaboration workflows
- Build, run, and reason about container images and registries
- Deploy, diagnose, and operate workloads and cluster-level concerns on Kubernetes/OpenShift
- Run and migrate VMs on Kubernetes via OpenShift Virtualization (KubeVirt)
- Build CI/CD pipelines and drive cluster state declaratively with Argo CD (GitOps)
- Govern a multi-cluster fleet with RHACM policies and compliance
- Monitor, alert, back up, and recover workloads and clusters
- (Specialist) Automate full cluster lifecycle via the GitOps ZTP pipeline
Support Engineers
Audience: Support staff who diagnose, triage, and escalate issues on the OpenShift platform. Operational and diagnostic depth; does not include pipeline engineering, GitOps authoring, fleet governance, or ZTP.
Outcome: Solid operational foundation β understand the platform model, navigate the CLI and console confidently, diagnose workload and cluster issues, and apply observability tooling to identify and escalate problems.
| # | Module | Required / Optional |
|---|---|---|
| 0 | Prerequisites & How to Use | Required |
| 1 | Git, GitHub & GitLab Best Practices | Required |
| 2 | Containers & Registries | Required |
| 3 | Kubernetes & OpenShift Core | Required |
| 4 | OpenShift Virtualization | Required |
| 7 | Observability & Day-2 Operations | Required |
| 9 | Certifications & Next Steps | Required |
Modules 5 (CI/CD & GitOps), 6 (Fleet Management), and 8 (ZTP) are not included in the support path. Support staff should be consumers of the GitOps/fleet model β understanding that Git is the source of truth and the console is read/observe β but are not expected to author pipelines or ACM policies.
Suggested sequence: Complete modules in order. Skip from Module 4 directly to Module 7 β observability and diagnostics are the primary day-to-day toolset for support work.
Expected outcomes:
- Navigate the OpenShift console and CLI to inspect cluster and workload state
- Understand the container and Kubernetes model well enough to reason about failures
- Diagnose and triage VM issues on OpenShift Virtualization
- Use
oc adm must-gather,oc adm inspect, Prometheus, and LokiStack to gather diagnostic data - Understand backup/DR models (OADP/Velero, etcd) to support restore operations
- Escalate effectively with structured, evidence-based incident summaries
Module Library
All modules live in learning-path/modules/. Each is self-contained and can be read independently, though the paths above define the recommended sequence.
| # | Module | Short description |
|---|---|---|
| 0 | Prerequisites & How to Use | Lab setup, verification philosophy, beginner’s mind |
| 1 | Git, GitHub & GitLab Best Practices | Git object model, daily workflow, GitHub Foundations cert |
| 2 | Containers & Registries | Images, layers, tags vs digests, registry auth |
| 3 | Kubernetes & OpenShift Core | App layer, cluster ops, networking, storage |
| 4 | OpenShift Virtualization | KubeVirt VMs, live migration, MTV from vSphere |
| 5 | CI/CD & GitOps | Pipelines, Argo CD, GitOps repo structure, secrets |
| 6 | Fleet Management with ACM | RHACM policies, compliance, ACM + GitOps hybrid |
| 7 | Observability & Day-2 Operations | Prometheus, Loki, OADP, etcd backup/DR |
| 8 | Zero Touch Provisioning | SiteConfig, PolicyGenTemplate, TALM β specialist track |
| 9 | Certifications & Next Steps | RHCSA, KCNA, CKA, CKAD, EX280, EX480 map |