Training Module
Kubernetes Operator betreiben: Lifecycle-Management mit OLM
In diesem 140-Minuten-Modul schließt ihr die Lücke, die beide
Vorgängerkurse unabhängig voneinander offengelassen haben: Weder
Kubernetes Operator entwickeln mit Kubebuilder (Go)
noch Kubernetes Operator härten: Admission- & Conversion-Webhooks mit Kubebuilder
hatten ein eigenes Hands-on zum Operator Lifecycle Manager
(OLM) – beide haben ihn nur benannt, keiner hat ihn gezeigt.
Bisher ist jedes Update des crontab-operator ein manueller
make deploy-Aufruf mit neuem Image-Tag. Heute verwandelt
ihr denselben Operator in ein versioniertes, katalogisiertes Paket. Los
geht es mit OLM selbst: operator-sdk olm
install installiert die OLM-Controller in einen frischen
Minikube-Cluster, operator-sdk olm status bestätigt den
Rollout. Im Kern des Moduls baut ihr aus dem bereits bestehenden
crontab-operator-Projekt – Reconciler, Mutating-/
Validating-Webhook und Conversion-Webhook, alle unverändert aus den
beiden Vorgängerkursen – ein echtes OLM-Bundle
(operator-sdk generate bundle -q –overwrite –version
0.0.1, operator-sdk bundle validate ./bundle) und
lernt dabei ein Feld kennen, das den cert-manager-Punkt aus
der Abgrenzung des Webhook-Kurses tatsächlich schließt:
spec.webhookdefinitions in der
ClusterServiceVersion (CSV) übergibt die
TLS-Zertifikatsverwaltung für eure drei Webhook-Typen komplett an OLM –
kein cert-manager, kein envtest-Testzertifikat mehr nötig.
Danach baut ihr mit opm einen eigenen
File-Based Catalog (opm init,
opm render, opm validate) und registriert ihn
im Cluster über eine CatalogSource. Eine
Subscription mit installPlanApproval:
Manual abonniert das Paket, ihr genehmigt den entstehenden
InstallPlan von Hand und beobachtet live, wie OLM
daraus die CSV und damit den laufenden Operator erzeugt. Zum Abschluss
ein koordinierter Upgrade-Pfad: eine zweite
Bundle-Version 0.0.2 mit replaces:
crontab-operator.v0.0.1, ein neuer InstallPlan, erneut manuell
genehmigt – derselbe Mechanismus, den ein produktiver Cluster für jedes
Operator-Update nutzt. Voraussetzung sind die Module
“Kubernetes Operator entwickeln mit Kubebuilder (Go)”
UND “Kubernetes Operator härten: Admission- &
Conversion-Webhooks mit Kubebuilder” – beide Pflicht, beide
werden hier vorausgesetzt und nicht wiederholt. Die Session läuft
komplett lokal über Minikube (–driver=docker), ohne
Cloud-Account und ohne Kostenwirkung.
Format
140 Minuten, live (remote oder vor Ort), Input & fünf Hands-on-Blöcke
Teilnehmende
Entwickler:innen, die ihren eigenen Kubernetes-Operator koordiniert paketieren, verteilen und upgraden wollen statt jedes Update manuell mit make deploy auszurollen
Voraussetzungen
Abgeschlossene Module “Kubernetes Operator entwickeln mit Kubebuilder (Go)” UND “Kubernetes Operator härten: Admission- & Conversion-Webhooks mit Kubebuilder” (beide Pflicht), lauffähige lokale Docker-Umgebung für Minikube
Warum dieses Training für deine Organisation wirkt
Vom manuellen make deploy zum koordinierten Paket
Beide Vorgängerkurse endeten bewusst bei einem einzelnen, manuell
deployten Operator. Dieses Modul liefert die fehlende
Lifecycle-Schicht nach – am selben crontab-operator,
nicht an einem neuen Spielzeug.
Der cert-manager-Punkt tatsächlich geschlossen
Der Webhook-Kurs hat cert-manager nur konzeptionell
eingeordnet. Hier seht ihr die Alternative in echtem CSV-YAML:
spec.webhookdefinitions übergibt dieselbe
TLS-Aufgabe komplett an OLM.
Vier OLM-Objekte, live erzeugt statt nur benannt
CatalogSource, Subscription, InstallPlan und ClusterServiceVersion
entstehen im Hands-on tatsächlich im Cluster – nicht als
Foliendiagramm, sondern als Objekte, die ihr per
kubectl get selbst seht.
Was Teilnehmende mitnehmen
- OLM lokal installieren und den Rollout prüfen mit
operator-sdk olm installundoperator-sdk olm status. - Aus einem bestehenden Kubebuilder-Projekt ein echtes OLM-Bundle erzeugen (
operator-sdk generate bundle -q –overwrite –version 0.0.1) und gegen die OLM-Spezifikation validieren (operator-sdk bundle validate ./bundle). - Die vier zentralen OLM-Objekte CatalogSource, Subscription, InstallPlan und ClusterServiceVersion (CSV) benennen, ihre jeweilige apiVersion (
operators.coreos.com/v1bzw.v1alpha1) einordnen und ihr Zusammenspiel im Cluster live beobachten. - Einen eigenen File-Based Catalog mit
opm init,opm renderundopm validatebauen und perdocker buildzu einem Katalog-Image machen. - Eine Subscription mit
installPlanApproval: Manualanlegen, den entstehenden InstallPlan bewusst von Hand freigeben und den daraus entstehenden CSV-StatusSucceedednachvollziehen. - Einen koordinierten Upgrade-Pfad durchspielen: eine zweite Bundle-Version mit
replacesauf die erste, ein zweiter InstallPlan, erneut manuell genehmigt. - Benennen, was dieses Modul bewusst nicht behandelt: Veröffentlichung auf dem OperatorHub.io-Marketplace als eigenes Hands-on und Helm-basierte Operator-Verteilung.
Für wen dieses Modul ideal ist
- • Entwickler:innen mit abgeschlossenen Modulen “Kubernetes Operator entwickeln mit Kubebuilder (Go)” UND “Kubernetes Operator härten: Admission- & Conversion-Webhooks mit Kubebuilder” oder gleichwertigen Vorkenntnissen
- • Alle, die in beiden Kubebuilder-Kursen bewusst am “OLM nur benannt, kein Hands-on”-Punkt aufgehört haben und jetzt die fehlende Lifecycle-Schicht nachholen wollen
- • Teams, die einen eigenen Operator produktiv über mehrere Cluster hinweg verteilen und koordiniert aktualisieren wollen, statt jedes Update manuell mit make deploy auszurollen
Rahmendaten
- • Dauer: 140 Minuten live (remote oder vor Ort)
- • Format: Input, Live-Coding, fünf Hands-on-Blöcke (OLM-Installation, Bundle bauen & validieren, File-Based Catalog & CatalogSource, Subscription & InstallPlan-Freigabe, Upgrade-Pfad)
- • Voraussetzungen: abgeschlossene Module “Kubernetes Operator entwickeln mit Kubebuilder (Go)” UND “Kubernetes Operator härten: Admission- & Conversion-Webhooks mit Kubebuilder” (beide Pflicht), lauffähige lokale Docker-Umgebung für Minikube, keine Cloud-Kostenwirkung
Modulaufbau & Agenda
Kick-off & Abgrenzung (10 min): Rückbezug auf den manuell deployten Operator aus beiden Vorgängerkursen, kein erneutes Reconciler-/Webhook-Repetitorium.
OLM-Architektur: CatalogSource, Subscription, InstallPlan, CSV (15 min): die vier zentralen Objekte im Zusammenspiel einordnen, bevor die erste Zeile YAML geschrieben wird.
Hands-on: OLM lokal installieren (15 min, Hands-on):
operator-sdk olm install,operator-sdk olm status, die entstehenden Namespaces und Controller-Pods einordnen.Hands-on: Operator-Bundle bauen & validieren (25 min, Hands-on):
operator-sdk generate bundle -q –overwrite –version 0.0.1auf dem bestehendencrontab-operator,spec.webhookdefinitionsin der CSV ergänzen,operator-sdk bundle validate ./bundle.Hands-on: File-Based Catalog & CatalogSource (25 min, Hands-on):
opm init/opm render/opm validate, Katalog-Image bauen, perminikube image loadohne externe Registry ins Cluster holen, CatalogSource registrieren.Hands-on: Subscription & manuelle InstallPlan-Freigabe (20 min, Hands-on): Subscription mit
installPlanApproval: Manual, InstallPlan von Hand genehmigen, CSV-StatusSucceededlive beobachten.Hands-on: Koordinierter Upgrade-Pfad (20 min, Hands-on): Bundle-Version
0.0.2mitreplaces: crontab-operator.v0.0.1, zweiter InstallPlan, erneute manuelle Freigabe.Deployment-Realität, OperatorHub.io-Ausblick & Abgrenzung (10 min): was ein produktiver Katalog-Betrieb zusätzlich braucht (Registry, CI-Bundle-Build), OperatorHub.io als Marketplace-Konzept ohne Publishing-Hands-on; explizit NICHT behandelt: Helm-basierte Operator-Verteilung.
Dieses Modul setzt die Aufbaumodule
Kubernetes Operator entwickeln mit Kubebuilder (Go)
UND
Kubernetes Operator härten: Admission- & Conversion-Webhooks mit Kubebuilder
zwingend gleichzeitig voraus. Reconciler, Status-Subresource sowie
Mutating-, Validating- und Conversion-Webhook des
crontab-operator gelten als bekannt und werden hier
nicht neu erklärt – dieses Modul verpackt den bestehenden Operator,
es baut ihn nicht neu.
Was dieses Modul bewusst nicht behandelt: Reconciler, CRD-Design und Webhook-Implementierung erneut erklären (Vorwissen aus den beiden Vorgängerkursen); das Veröffentlichen auf dem OperatorHub.io-Marketplace als eigenes Hands-on – Modul 8 ordnet es nur als Konzept ein (was zusätzlich zu einem selbst gehosteten Katalog nötig wäre), kein eigener Publishing-Durchlauf und kein zugesagter Folgetermin dafür; sowie Helm-basierte Operator-Verteilung als Alternative zu OLM – dazu das eigenständige Modul Helm — Paketmanagement für Kubernetes.
Hands-on Inhalte (Auszug)
OLM-Installation
operator-sdk olm installinstalliert die OLM-Controller in einen frischen Minikube-Clusteroperator-sdk olm statusbestätigt, dass alle OLM-Deployments laufen, bevor der erste eigene Katalog registriert wird
Bundle & CSV
operator-sdk generate bundle -q –overwrite –version 0.0.1erzeugtbundle/manifests/crontab-operator.clusterserviceversion.yamlaus dem bestehenden Kubebuilder-Projektspec.webhookdefinitions(TypenMutatingAdmissionWebhook,ValidatingAdmissionWebhook,ConversionWebhook) übergibt die TLS-Zertifikatsverwaltung für alle drei Webhooks an OLM
File-Based Catalog
opm init crontab-operator –default-channel=alpha –output yamlundopm renderbauen den Katalog aus dem eigenen Bundle-Imageopm validateprüftolm.package/olm.channel/olm.bundle-Schema, bevor daraus ein Katalog-Image entsteht
Subscription, InstallPlan & Upgrade
- Subscription mit
installPlanApproval: Manual, manuell freigegebener InstallPlan, CSV-StatusSucceeded - Zweite Bundle-Version mit
replaces: crontab-operator.v0.0.1als koordinierter Upgrade-Pfad über einen zweiten InstallPlan
Dieses Modul ist Teil unserer Pilotphase. Gemeinsam mit euch definieren wir passende Metriken (z. B. Zeit vom ersten Bundle bis zur genehmigten InstallPlan) und werten sie im Anschluss transparent aus. Ergebnisse veröffentlichen wir, sobald sie belastbar sind.
Bereit, das Modul zu buchen?
Wir passen die Hands-on-Übung auf euren Erfahrungsstand und eure Zielumgebung an.
Academy Briefing anfragen