Red Hat OpenShift Container Platform lernen
Ein strukturierter 12-Wochen-Pfad für Developer, DevOps, Platform Engineering und Administration – mit Praxislabs, Kontrollfragen, Runbooks und Capstone-Projekt.
Inhaltsverzeichnis
Überblick und Lernziele
Was du am Ende können sollst
- OpenShift als Enterprise-Kubernetes-Plattform erklären und von Vanilla Kubernetes abgrenzen.
- Mit
oc, Web Console und YAML sicher arbeiten. - Projekte, Deployments, Services, Routes, ConfigMaps, Secrets, Volumes und Operatoren einsetzen.
- Applikationen aus Quellcode, Container Images und Git-Repositories deployen.
- Logs, Events, Ressourcenverbrauch und Health Checks analysieren.
- Security-Grundlagen wie RBAC, ServiceAccounts, Security Context Constraints, NetworkPolicies und Image-Sicherheit anwenden.
- CI/CD mit OpenShift Builds, Pipelines/Tekton und GitOps/Argo CD einordnen und praktisch nutzen.
- Grundlagen zu Installation, Upgrades, Nodes, Storage, Netzwerk, Monitoring, Backup und Day-2-Betrieb verstehen.
Zielrollen
| Rolle | Fokus | Ergebnis |
|---|---|---|
| Developer | App deployen, debuggen, Config, Secrets, Routes, CI/CD | Eigene App produktionsnah auf OpenShift betreiben |
| DevOps Engineer | Automatisierung, Pipelines, GitOps, Observability | Reproduzierbarer Delivery-Prozess |
| Platform Engineer | Cluster-Betrieb, Operatoren, Security, Upgrades | Plattform-Runbook und Betriebsstandards |
| Admin | Benutzer, Projekte, Ressourcen, Nodes, Storage | Stabiler nicht-produktiver Clusterbetrieb |
Empfohlene Lernumgebung
- Einsteigerfreundlich: Red Hat Developer Sandbox für OpenShift.
- Lokale Labs: Single Node OpenShift, CodeReady Containers/OpenShift Local oder eine vorbereitete VM-Umgebung, wenn verfügbar.
- Team-/Admin-Lab: Nicht-produktiver OCP-Cluster auf Cloud, vSphere, Bare Metal oder Lab-Infrastruktur.
Wichtig: Viele Admin-Aufgaben erfordern
cluster-admin. In der Developer Sandbox sind einige Berechtigungen eingeschränkt; nutze sie vor allem für Developer- und CI/CD-Labs.
Voraussetzungen und Setup
Technische Voraussetzungen
Du solltest vor dem Start diese Grundlagen besitzen oder parallel nachholen:
- Linux CLI: Prozesse, Dateien, Rechte, SSH, Paketmanager, Shell-Basics.
- Container: Images, Container, Registries, Dockerfile/Containerfile, Podman oder Docker.
- Netzwerk: DNS, HTTP/HTTPS, TLS, Ports, Load Balancing-Grundbegriffe.
- YAML und JSON: Einrückung, Listen, Maps, einfache Manifest-Strukturen.
- Git: Branches, Commits, Pull Requests,
.gitignore.
Lokale Tools
Installiere oder bereite vor:
# Pflicht
oc version
kubectl version --client
podman --version || docker --version
git --version
# Optional, aber hilfreich
tkn version # OpenShift Pipelines / Tekton CLI
argocd version # GitOps CLI, falls genutzt
helm version
jq --version
yq --version
Erstes Login
oc login --token=<TOKEN> --server=<API_SERVER>
oc whoami
oc cluster-info
oc project
Arbeitsverzeichnis
Lege dir ein Repo an, in dem du alle Übungen dokumentierst:
openshift-learning/
├── _intern/sources/_intern\sources\README.md
├── week-01-foundations/
├── week-02-kubernetes-basics/
├── week-03-openshift-core/
├── week-04-app-deployments/
├── week-05-config-storage/
├── week-06-networking/
├── week-07-security/
├── week-08-observability/
├── week-09-builds-cicd/
├── week-10-gitops/
├── week-11-operations/
└── week-12-capstone/12-Wochen-Fahrplan
Lernplan in Phasen
| Woche | Thema | Hauptziel | Ergebnisartefakt |
|---|---|---|---|
| 1 | Cloud-native Grundlagen | Begriffe und Architektur verstehen | Mindmap + Glossar |
| 2 | Kubernetes-Basics | Pods, Deployments, Services sicher nutzen | YAML-Manifeste für Beispiel-App |
| 3 | OpenShift Core | Projekte, oc, Console, Routes, Images | Laufende Web-App mit Route |
| 4 | App-Deployment | Deployment-Strategien, Health Checks, Rollbacks | Deployment-Runbook |
| 5 | Config & Storage | ConfigMaps, Secrets, PVCs, Stateful Apps | App mit externer Konfiguration |
| 6 | Networking | Services, Routes, Ingress, NetworkPolicies | Netzwerkdiagramm + Policies |
| 7 | Security | RBAC, SCC, ServiceAccounts, Image Security | Security-Baseline pro Projekt |
| 8 | Observability | Logs, Events, Monitoring, Alerts, Debugging | Troubleshooting-Playbook |
| 9 | Builds & CI/CD | BuildConfig/Builds, Tekton, Image-Flows | Pipeline für App-Release |
| 10 | GitOps | Argo CD, App of Apps, Sync Policies | GitOps-Repo-Struktur |
| 11 | Operations | Nodes, Upgrades, Ressourcen, Backup-Basics | Plattform-Runbook |
| 12 | Capstone | End-to-End-Projekt | Produktnahe Demo + Doku |
Wöchentliche Routine
- 60–90 Minuten Theorie lesen.
- 2–3 Stunden Hands-on-Lab.
- 60 Minuten Fehler bewusst erzeugen und debuggen.
- 30 Minuten Notizen, Diagramm oder Runbook aktualisieren.
- 15 Minuten Selbsttest mit Kontrollfragen.
Woche 1 — Cloud-native und OpenShift-Grundlagen
Lernziele
- Verstehen, warum Container-Orchestrierung notwendig ist.
- Kubernetes-Kernobjekte einordnen: Pod, ReplicaSet, Deployment, Service, Namespace.
- OpenShift als Kubernetes-Distribution mit Enterprise-Funktionen verstehen.
- OpenShift-Begriffe lernen: Project, Route, Build, ImageStream, Operator, SCC, ClusterOperator.
Theorie
Lerne diese Konzepte:
- Container Image vs. laufender Container.
- Declarative State: gewünschter Zustand wird in YAML beschrieben.
- Controller Pattern: Kubernetes/OpenShift korrigiert Ist-Zustand Richtung Soll-Zustand.
- Multi-Tenancy: Projekte, Quotas, RBAC und Security Boundaries.
- OpenShift-Erweiterungen: Web Console, Routes, integrierte Registry, Operators, Builds, Pipelines, GitOps, Security Defaults.
Praxislab
- Erstelle ein Glossar mit mindestens 30 Begriffen.
- Zeichne eine grobe Architektur: Benutzer → Route → Service → Pod → Container → Image.
- Melde dich an einem Cluster an und inspiziere deine Berechtigungen:
oc whoami
oc auth can-i --list
oc projects
oc get clusterversion
oc get clusteroperators
Kontrollfragen
- Was ist der Unterschied zwischen Kubernetes Namespace und OpenShift Project?
- Warum sollte man Applikationen deklarativ beschreiben?
- Was macht ein Operator?
- Was ist der Unterschied zwischen Service und Route?
Ergebnis
Eine Markdown-Datei week-01-foundations/_intern/sources/_intern\sources\README.md mit Glossar, Diagramm und deinen ersten oc-Befehlen.
Woche 2 — Kubernetes-Basics für OpenShift
Lernziele
- Kubernetes-Objekte aus YAML erstellen, ändern und löschen.
- Pods, Deployments und Services debuggen.
- Labels und Selectors verstehen.
- Ressourcenlimits und Probes einsetzen.
Zentrale Objekte
| Objekt | Zweck | OpenShift-Relevanz |
|---|---|---|
| Pod | Kleinste ausführbare Einheit | Wird selten direkt erstellt, aber oft debuggt |
| Deployment | Steuert ReplicaSets und Rollouts | Standard für stateless Apps |
| Service | Stabile interne Adresse | Grundlage für Routes und Service Discovery |
| ConfigMap | Nicht-sensitive Konfiguration | App-Konfiguration ohne Image-Neubau |
| Secret | Sensitive Konfiguration | Tokens, Passwörter, Zertifikate |
| PersistentVolumeClaim | Storage-Anforderung | Grundlage für stateful Workloads |
Praxislab
oc new-project learn-k8s-basics
oc create deployment hello --image=quay.io/openshift/origin-hello-openshift:latest
oc expose deployment hello --port=8080
oc get pods,deploy,svc
oc logs deploy/hello
oc describe pod -l app=hello
Skaliere die Anwendung:
oc scale deployment hello --replicas=3
oc get pods -o wide
Erzeuge bewusst einen Fehler:
oc set image deployment/hello hello=quay.io/does-not-exist/broken:latest
oc rollout status deployment/hello
oc get events --sort-by=.lastTimestamp
oc rollout undo deployment/hello
Kontrollfragen
- Wie findet ein Service die passenden Pods?
- Was ist der Unterschied zwischen
oc get,oc describeundoc logs? - Warum ist ein Deployment besser als ein einzelner Pod?
- Was passiert bei einem kaputten Image?
Ergebnis
Ein Ordner mit YAML-Manifests, Fehlernotizen und einem Mini-Troubleshooting-Protokoll.
Woche 3 — OpenShift Core: Projects, Routes, CLI und Console
Lernziele
- OpenShift-spezifische Developer-Flows verstehen.
- Mit Web Console und
ocparallel arbeiten. - Routes für externen Zugriff nutzen.
- ImageStreams und
oc new-appkennenlernen.
Praxislab: App per CLI deployen
oc new-project learn-openshift-core
oc new-app quay.io/openshift/origin-hello-openshift:latest --name=hello
oc expose service/hello
oc get route hello
oc status
Teste die Route:
ROUTE=$(oc get route hello -o jsonpath='{.spec.host}')
curl -i "http://$ROUTE"
Praxislab: App per Source-to-Image-ähnlichem Flow
Je nach Cluster-Berechtigung kannst du eine App direkt aus Git erzeugen:
oc new-app nodejs:latest~https://github.com/sclorg/nodejs-ex.git --name=node-demo
oc logs -f bc/node-demo || oc logs -f deploy/node-demo
oc expose service/node-demo
Falls BuildConfig oder ImageStreams in deiner Umgebung eingeschränkt sind, nutze stattdessen ein fertiges Container Image.
Console-Aufgaben
- Wechsle zwischen Developer und Administrator Perspective.
- Öffne die Topology View.
- Prüfe Pods, Logs, Events und Route-Details.
- Ändere die Replica-Anzahl in der UI und prüfe sie mit
oc get deploy.
Kontrollfragen
- Was ist eine OpenShift Route?
- Wann nutzt du
oc new-app, wann YAML-Manifeste? - Welche Informationen liefert
oc status? - Was unterscheidet Developer- und Administrator-Perspektive?
Ergebnis
Eine öffentlich erreichbare Demo-App mit Route und Screenshots/Notizen aus Console und CLI.
Woche 4 — Deployments, Rollouts, Health Checks und Ressourcen
Lernziele
- Deployment-Strategien und Rollbacks sicher anwenden.
- Readiness, Liveness und Startup Probes konfigurieren.
- Requests und Limits setzen.
- Grundlegende Hochverfügbarkeit für stateless Apps erreichen.
Beispielmanifest
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: quay.io/openshift/origin-hello-openshift:latest
ports:
- containerPort: 8080
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 250m
memory: 256Mi
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 3
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 10
periodSeconds: 20
Praxislab
oc apply -f deployment.yaml
oc rollout status deploy/web
oc set image deploy/web web=quay.io/openshift/origin-hello-openshift:latest
oc rollout history deploy/web
oc rollout undo deploy/web
oc adm top pods # falls Metrics verfügbar sind
Fehlerübungen
- Setze absichtlich einen falschen Probe-Pfad.
- Setze ein zu niedriges Memory-Limit.
- Skaliere auf 0 und wieder hoch.
- Lösche einen Pod und beobachte die Selbstheilung.
Kontrollfragen
- Worin unterscheiden sich Readiness und Liveness Probe?
- Warum sind Requests wichtig für Scheduling?
- Was passiert bei
oc rollout undo? - Warum sollten Images möglichst immutable getaggt werden?
Ergebnis
Ein Deployment-Runbook mit Standardwerten für Probes, Ressourcen und Rollback-Schritte.
Woche 5 — Konfiguration, Secrets und Storage
Lernziele
- ConfigMaps und Secrets als Environment Variables und Dateien mounten.
- PersistentVolumeClaims nutzen.
- Stateful vs. stateless Workloads unterscheiden.
- Backup-Anforderungen für Daten verstehen.
ConfigMap und Secret
oc create configmap app-config \
--from-literal=APP_MODE=training \
--from-literal=FEATURE_FLAG=true
oc create secret generic app-secret \
--from-literal=DB_PASSWORD='change-me'
In ein Deployment einbinden:
oc set env deployment/web --from=configmap/app-config
oc set env deployment/web --from=secret/app-secret
oc describe deployment/web
PVC-Beispiel
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Praxislab
- Erstelle ConfigMap und Secret.
- Binde beide in eine App ein.
- Erstelle einen PVC und mounte ihn in einen Pod.
- Schreibe eine Datei in das Volume, lösche den Pod und prüfe Persistenz.
Kontrollfragen
- Warum gehören Secrets nicht ins Git-Repo?
- Was ist der Unterschied zwischen
ReadWriteOnceundReadWriteMany? - Welche Daten dürfen in einem Container-Layer liegen und welche nicht?
- Wie würdest du Konfigurationsänderungen kontrolliert ausrollen?
Ergebnis
Eine App, deren Verhalten über ConfigMap/Secret gesteuert wird, plus Storage-Testprotokoll.
Woche 6 — Networking: Services, Routes, DNS, TLS und Policies
Lernziele
- OpenShift-Netzwerkpfad Ende-zu-Ende verstehen.
- Cluster-internen und externen Zugriff unterscheiden.
- Routes mit TLS einordnen.
- NetworkPolicies als Mikrosegmentierung einsetzen.
Netzwerkpfad
Client
↓ HTTPS/HTTP
OpenShift Route / Ingress Controller
↓
Service
↓ label selector
Pod Endpoint
↓
Container Port
Wichtige Befehle
oc get svc,route,endpoints
oc describe route <name>
oc get dns.operator/default -o yaml 2>/dev/null || true
oc get network.operator/cluster -o yaml 2>/dev/null || true
NetworkPolicy-Beispiel
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-from-same-namespace
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- podSelector: {}
Praxislab
- Deploye zwei Apps in zwei Projekten.
- Teste Kommunikation mit
curlaus Debug-Pods. - Erstelle eine deny-by-default Policy.
- Erlaube gezielt Traffic von App A zu App B.
- Dokumentiere, welche Verbindungen funktionieren.
Kontrollfragen
- Wann nutzt du Service, wann Route?
- Was passiert, wenn ein Service keinen Endpoint hat?
- Warum kann eine NetworkPolicy scheinbar „nichts tun“, wenn das CNI-Plugin sie anders behandelt oder keine passende Auswahl greift?
- Welche TLS-Varianten können bei Routes relevant sein?
Ergebnis
Ein Netzwerkdiagramm und mindestens zwei getestete NetworkPolicies.
Woche 7 — Security: RBAC, ServiceAccounts, SCC und Image-Sicherheit
Lernziele
- Least Privilege auf Projekt- und Cluster-Ebene anwenden.
- Rollen, RoleBindings, ClusterRoles und ServiceAccounts verstehen.
- Security Context Constraints konzeptionell einordnen.
- Container Images sicherer bauen und betreiben.
RBAC-Befehle
oc get rolebindings
oc get roles
oc adm policy who-can get pods
oc auth can-i create deployments
oc create serviceaccount app-runner
oc adm policy add-role-to-user view system:serviceaccount:<project>:app-runner
Security-Prinzipien
- Keine Root-Container, wenn nicht zwingend notwendig.
- Images aus vertrauenswürdigen Registries beziehen.
- Keine Secrets in Images oder Logs.
- Ressourcenlimits setzen, um Noisy-Neighbor-Probleme zu reduzieren.
- Nur benötigte Berechtigungen vergeben.
- NetworkPolicies als zweite Schutzschicht nutzen.
Praxislab
- Lege eine Person oder einen ServiceAccount mit
view-Rechten an. - Prüfe, welche Aktionen erlaubt und verboten sind.
- Deploye eine App mit eigenem ServiceAccount.
- Vergleiche Pod-Security-Kontext und Events bei nicht erlaubten Einstellungen.
- Erstelle eine Security-Baseline für neue Projekte.
Kontrollfragen
- Unterschied zwischen Role und ClusterRole?
- Was bedeutet Least Privilege praktisch in OpenShift?
- Warum blockt OpenShift bestimmte Container-Patterns standardmäßig?
- Welche Risiken entstehen durch privilegierte Builds oder Container?
Ergebnis
Eine Security-Baseline mit RBAC-Minimalrollen, ServiceAccount-Pattern und Image-Regeln.
Woche 8 — Observability und Troubleshooting
Lernziele
- Logs, Events, Status Conditions und Metriken systematisch auswerten.
- Häufige Fehlerbilder erkennen.
- Debug-Container und
oc debugnutzen. - Ein Troubleshooting-Playbook erstellen.
Troubleshooting-Kette
oc get pods
oc describe pod <pod>
oc logs <pod> --all-containers
oc get events --sort-by=.lastTimestamp
oc get deploy,rs,svc,route,endpoints
oc rollout status deploy/<name>
oc adm top pods # falls verfügbar
Häufige Fehlerbilder
| Symptom | Mögliche Ursache | Erste Prüfung |
|---|---|---|
ImagePullBackOff | Falsches Image, Registry Auth, Netzwerk | oc describe pod |
CrashLoopBackOff | App startet und crasht | oc logs --previous |
| Route liefert 503 | Service ohne Endpoints, falscher Port | oc get endpoints |
| Pod Pending | Ressourcen, PVC, NodeSelector, Taints | oc describe pod |
| Probe schlägt fehl | Falscher Pfad/Port, langsamer Start | Probe-Konfiguration |
| Forbidden | RBAC/SCC | oc auth can-i, Events |
Praxislab
Erzeuge diese Fehler absichtlich:
- Falsches Image.
- Falscher Container-Port im Service.
- Kaputte Readiness Probe.
- Zu niedriges Memory-Limit.
- Fehlende Berechtigung für eine Aktion.
Dokumentiere jeweils: Symptom, Befehl, Diagnose, Fix, Prävention.
Kontrollfragen
- Wann verwendest du
logs --previous? - Warum sind Events oft schneller hilfreich als Logs?
- Wie findest du heraus, ob eine Route auf einen gesunden Pod zeigt?
- Welche Informationen gehören in ein Incident-Runbook?
Ergebnis
Ein Troubleshooting-Playbook mit mindestens fünf realen Fehlerfällen.
Woche 9 — Builds, Images und CI/CD mit OpenShift Pipelines
Lernziele
- Container Image Build-Strategien vergleichen.
- OpenShift Builds, BuildConfig und moderne Builds einordnen.
- OpenShift Pipelines/Tekton-Grundobjekte verstehen.
- Eine einfache CI/CD-Pipeline erstellen.
CI/CD-Grundobjekte
| Objekt | Bedeutung |
|---|---|
| Task | Wiederverwendbarer einzelner Schritt |
| Pipeline | Ablauf aus mehreren Tasks |
| PipelineRun | Konkrete Ausführung einer Pipeline |
| Workspace | Gemeinsamer Arbeitsbereich für Tasks |
| Trigger | Ereignisbasierter Pipeline-Start |
Minimaler Pipeline-Gedanke
Git Push
↓
Clone Source
↓
Build Image
↓
Push Image
↓
Deploy to OpenShift
↓
Smoke Test
Praxislab
- Erstelle ein Beispiel-App-Repo.
- Baue ein Image mit Podman oder Cluster-Build.
- Pushe das Image in eine Registry.
- Deploye es nach OpenShift.
- Automatisiere Clone → Build → Deploy mit einer Pipeline, wenn OpenShift Pipelines verfügbar ist.
Beispielhafte Befehle:
oc get operators
oc get pods -n openshift-pipelines 2>/dev/null || true
tkn pipeline list
tkn pipelinerun list
Kontrollfragen
- Warum sollte CI/CD nicht mit Cluster-Admin-Rechten laufen?
- Was ist der Unterschied zwischen Build und Deployment?
- Welche Secrets braucht eine Pipeline typischerweise?
- Wie machst du Pipeline-Ergebnisse nachvollziehbar?
Ergebnis
Eine dokumentierte Pipeline oder ein lokal reproduzierbarer Build-und-Deploy-Prozess.
Woche 10 — GitOps mit OpenShift GitOps / Argo CD
Lernziele
- Git als Source of Truth für Cluster- und App-Konfiguration nutzen.
- Argo CD / OpenShift GitOps-Grundkonzepte verstehen.
- Drift erkennen und Sync-Verhalten kontrollieren.
- Repo-Strukturen für mehrere Umgebungen planen.
Empfohlene Repo-Struktur
app-gitops/
├── apps/
│ └── demo-app/
│ ├── base/
│ └── overlays/
│ ├── dev/
│ ├── test/
│ └── prod/
├── platform/
│ ├── namespaces/
│ ├── rbac/
│ └── networkpolicies/
└── clusters/
├── lab/
└── prod/
Konzepte
- Desired State liegt im Git.
- Argo CD vergleicht Cluster-Zustand mit Git-Zustand.
- Sync kann manuell oder automatisch erfolgen.
- Drift wird sichtbar, muss aber bewusst behandelt werden.
- Secrets benötigen zusätzliche Strategie, z. B. External Secrets, Sealed Secrets oder Vault-Integration.
Praxislab
- Lege ein GitOps-Repo an.
- Packe Deployment, Service und Route deiner App hinein.
- Erstelle eine Argo CD Application, falls OpenShift GitOps verfügbar ist.
- Ändere manuell ein Replica-Feld im Cluster und beobachte Drift.
- Stelle den Git-Zustand wieder her.
Kontrollfragen
- Warum ist „kubectl/oc apply direkt auf Produktion“ riskant?
- Welche Änderungen gehören ins Git, welche nicht?
- Wie trennst du App- und Plattform-GitOps?
- Wie würdest du Secrets in GitOps behandeln?
Ergebnis
Ein GitOps-Repo mit App-Manifests und einer kurzen Erklärung des Sync-Flows.
Woche 11 — Betrieb: Nodes, Upgrades, Quotas, Backup und Day-2
Lernziele
- Cluster-Betriebsobjekte einordnen.
- Ressourcensteuerung mit Quotas und LimitRanges nutzen.
- Node- und Maschinenkonzepte verstehen.
- Upgrade-, Backup- und Disaster-Recovery-Basics kennen.
Admin-Objekte
| Bereich | Typische Objekte/Befehle |
|---|---|
| Version | oc get clusterversion |
| Operatoren | oc get clusteroperators |
| Nodes | oc get nodes, oc adm cordon, oc adm drain |
| Maschinen | MachineSet, MachineConfig, MachineConfigPool |
| Ressourcen | ResourceQuota, LimitRange |
| Storage | StorageClass, PV, PVC |
| Netzwerk | IngressController, DNS, Network, Egress |
Quota-Beispiel
apiVersion: v1
kind: ResourceQuota
metadata:
name: project-quota
spec:
hard:
requests.cpu: "2"
requests.memory: 4Gi
limits.cpu: "4"
limits.memory: 8Gi
pods: "20"
Praxislab
- Lege eine ResourceQuota und LimitRange in einem Testprojekt an.
- Deploye Pods mit und ohne Ressourcenangaben.
- Beobachte Fehlermeldungen bei Überschreitung.
- Prüfe ClusterOperators und dokumentiere ihre Bedeutung.
- Skizziere einen Upgrade- und Rollback-Plan für ein Lab-Cluster.
Kontrollfragen
- Warum sind Quotas in Multi-Tenant-Clustern wichtig?
- Was ist der Unterschied zwischen Node, Machine und MachineSet?
- Warum müssen Upgrades vorab mit Operator-Kompatibilität geprüft werden?
- Welche Daten müssen für Disaster Recovery gesichert werden?
Ergebnis
Ein Plattform-Runbook mit Quota-Standard, Upgrade-Checkliste und Backup-Fragenkatalog.
Woche 12 — Capstone-Projekt
Ziel
Baue eine kleine, aber produktionsnahe Anwendung auf OpenShift und dokumentiere sie so, als würdest du sie an ein Team übergeben.
Mindestumfang
Dein Capstone sollte enthalten:
- Ein eigenes Projekt/Namespace.
- Eine App mit mindestens zwei Replikas.
- Service und Route.
- ConfigMap und Secret.
- Readiness und Liveness Probe.
- Requests und Limits.
- Optional: PVC, wenn die App Daten persistiert.
- NetworkPolicy.
- RBAC mit eigenem ServiceAccount.
- Build-/Deploy-Automatisierung oder Pipeline.
- GitOps-Struktur oder mindestens deklarative YAML-Manifeste im Git.
- Monitoring-/Troubleshooting-Notizen.
Beispielidee
Frontend: einfache Web-App
Backend: REST API
Daten: PostgreSQL oder persistenter Dummy-Service
Delivery: GitOps oder Pipeline
Security: NetworkPolicy + nicht-root Container + minimale Rechte
Abnahmekriterien
- App ist über Route erreichbar.
- Rollout kann wiederholt ausgeführt werden.
- Ein kaputtes Image oder eine kaputte Probe kann diagnostiziert und zurückgerollt werden.
- Secrets sind nicht im Klartext im Repo.
- Ressourcenlimits sind gesetzt.
- Dokumentation erklärt Setup, Betrieb und Troubleshooting.
Abschlusspräsentation
Erstelle eine 10-minütige Demo:
- Architektur zeigen.
- Deployment zeigen.
- Route aufrufen.
- Config ändern und Rollout erklären.
- Fehler erzeugen und debuggen.
- Pipeline/GitOps zeigen.
- Lessons Learned nennen.
Vertiefung nach dem Lernpfad
Admin-Vertiefung
- Installation: Assisted Installer, IPI, UPI, Bare Metal, vSphere, Cloud.
- Cluster Lifecycle: Upgrades, Channels, Operator-Kompatibilität, Maintenance Windows.
- Maschinenverwaltung: MachineSets, MachineConfigPools, Node Tuning.
- Disconnected/Restricted Networks: Mirror Registry, ImageContentSourcePolicy/ImageDigestMirrorSet, Zertifikate.
- Backup/Restore: etcd-Snapshots, OADP/Velero-Konzepte, Restore-Tests.
- Multi-Cluster: Red Hat Advanced Cluster Management, Hosted Control Planes.
Developer-Vertiefung
- Dev Spaces, odo/Developer Tools, Helm/Kustomize.
- Progressive Delivery: Blue/Green, Canary, Feature Flags.
- Service Mesh: Traffic Splitting, mTLS, Retries, Circuit Breaking.
- Serverless: Knative Services, Eventing.
- App Modernization: 12-Factor-App, externalisierte Konfiguration, Health Checks.
Security-Vertiefung
- Supply Chain Security: Signierte Images, SBOMs, Vulnerability Scanning.
- Admission Control und Policy-as-Code.
- Secrets Management mit Vault oder External Secrets.
- Compliance Operator, Audit Logs, FIPS-Anforderungen.
- Tenant Isolation und Netzsegmentierung.
Platform Engineering-Vertiefung
- Golden Paths für Teams.
- Self-Service-Projektanlage.
- Standardisierte Templates und Helm Charts.
- Developer Portal / Backstage / Red Hat Developer Hub.
- SLOs, Error Budgets und Betriebsmetriken.
OpenShift CLI Cheat Sheet
Login und Kontext
oc login --token=<token> --server=<server>
oc whoami
oc project
oc projects
oc config current-context
Ressourcen anzeigen
oc get all
oc get pods -o wide
oc get deploy,rs,svc,route
oc describe pod <pod>
oc explain deployment.spec.template.spec.containers
Logs und Debugging
oc logs <pod>
oc logs deploy/<deployment>
oc logs <pod> --previous
oc get events --sort-by=.lastTimestamp
oc debug pod/<pod>
oc rsh <pod>
Deployments
oc create deployment app --image=<image>
oc expose deployment app --port=8080
oc expose service app
oc scale deployment app --replicas=3
oc rollout status deployment/app
oc rollout history deployment/app
oc rollout undo deployment/app
Konfiguration
oc create configmap app-config --from-literal=KEY=value
oc create secret generic app-secret --from-literal=PASSWORD=change-me
oc set env deployment/app --from=configmap/app-config
oc set env deployment/app --from=secret/app-secret
RBAC
oc auth can-i create pods
oc auth can-i --list
oc get rolebindings
oc adm policy add-role-to-user view <user> -n <project>
oc adm policy remove-role-from-user view <user> -n <project>
Admin-Blick
oc get clusterversion
oc get clusteroperators
oc get nodes
oc adm top nodes
oc adm top pods -ASelbsttest und Kompetenzmatrix
Kompetenzmatrix
Bewerte dich am Ende jeder Woche von 1 bis 5.
| Kompetenz | 1 | 3 | 5 |
|---|---|---|---|
| Kubernetes-Grundobjekte | Ich kenne Begriffe | Ich deploye einfache Apps | Ich debugge Fehler sicher |
| OpenShift CLI | Einzelne Befehle | Alltag mit oc möglich | Ich schreibe Runbooks/Skripte |
| Networking | Service/Route grob klar | Policies getestet | Ich entwerfe sichere Flows |
| Security | RBAC-Grundidee | Rollen und SAs genutzt | Security-Baseline definiert |
| CI/CD | Konzept verstanden | Pipeline gebaut | Reproduzierbarer Release-Flow |
| GitOps | Argo CD grob klar | App per GitOps deployt | Multi-Env-Struktur geplant |
| Operations | Clusterobjekte bekannt | Quotas/Operators geprüft | Day-2-Runbook erstellt |
Prüfungsnahe Übungsaufgaben
- Erstelle ein neues Projekt mit Quota und LimitRange.
- Deploye eine App aus einem Image und veröffentliche sie per Route.
- Füge ConfigMap, Secret, Probes und Ressourcenlimits hinzu.
- Erstelle einen ServiceAccount und gib ihm minimale Rechte.
- Beschränke Traffic mit einer NetworkPolicy.
- Simuliere
ImagePullBackOff,CrashLoopBackOffund Route-503. - Rolle ein fehlerhaftes Deployment zurück.
- Automatisiere Build und Deployment.
- Dokumentiere alle Schritte so, dass jemand anderes sie wiederholen kann.
Wann bist du bereit für reale Projekte?
Du bist bereit für ein Teamprojekt, wenn du ohne Spickzettel:
- Eine App deklarativ deployen kannst.
- Eine nicht funktionierende Route debuggen kannst.
- RBAC-Fehler erkennst.
- Logs, Events und Rollout-History nutzt.
- Secrets nicht unsicher behandelst.
- Eine einfache Pipeline oder GitOps-Struktur erklären kannst.
Offizielle Ressourcen und nächste Schritte
Offizielle Ressourcen
- Red Hat OpenShift Container Platform Dokumentation: https://docs.redhat.com/en/documentation/openshift_container_platform/
- OpenShift Tutorials: https://docs.redhat.com/en/documentation/openshift_container_platform/4.22/html/tutorials/index
- OpenShift CLI Tools: https://docs.redhat.com/en/documentation/openshift_container_platform/4.22/html/cli_tools/index
- CI/CD Overview: https://docs.redhat.com/en/documentation/openshift_container_platform/4.22/html-single/cicd_overview/index
- OpenShift GitOps: https://docs.redhat.com/en/documentation/openshift_container_platform/4.22/html/gitops/index
- Red Hat Developer Sandbox: https://developers.redhat.com/developer-sandbox
- EX280 OpenShift Administrator Exam: https://www.redhat.com/en/services/training/red-hat-certified-openshift-administrator-exam
- EX288 OpenShift Application Developer Exam: https://www.redhat.com/en/services/training/ex288-red-hat-certified-openshift-application-developer-exam
Empfohlene nächste Schritte
- Starte mit Woche 1 und erstelle dein persönliches Lern-Repo.
- Nutze die Developer Sandbox für Developer-Labs.
- Plane zusätzlich ein Admin-Lab, falls du EX280- oder Platform-Engineering-Ziele hast.
- Sammle alle Fehlerfälle als Runbook; Troubleshooting ist der wichtigste Lernhebel.
- Schließe mit dem Capstone ab und präsentiere es wie ein echtes Übergabeprojekt.