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 install und operator-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/v1 bzw. v1alpha1) einordnen und ihr Zusammenspiel im Cluster live beobachten.
  • Einen eigenen File-Based Catalog mit opm init, opm render und opm validate bauen und per docker build zu einem Katalog-Image machen.
  • Eine Subscription mit installPlanApproval: Manual anlegen, den entstehenden InstallPlan bewusst von Hand freigeben und den daraus entstehenden CSV-Status Succeeded nachvollziehen.
  • Einen koordinierten Upgrade-Pfad durchspielen: eine zweite Bundle-Version mit replaces auf 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

  1. Kick-off & Abgrenzung (10 min): Rückbezug auf den manuell deployten Operator aus beiden Vorgängerkursen, kein erneutes Reconciler-/Webhook-Repetitorium.

  2. OLM-Architektur: CatalogSource, Subscription, InstallPlan, CSV (15 min): die vier zentralen Objekte im Zusammenspiel einordnen, bevor die erste Zeile YAML geschrieben wird.

  3. Hands-on: OLM lokal installieren (15 min, Hands-on): operator-sdk olm install, operator-sdk olm status, die entstehenden Namespaces und Controller-Pods einordnen.

  4. Hands-on: Operator-Bundle bauen & validieren (25 min, Hands-on): operator-sdk generate bundle -q –overwrite –version 0.0.1 auf dem bestehenden crontab-operator, spec.webhookdefinitions in der CSV ergänzen, operator-sdk bundle validate ./bundle.

  5. Hands-on: File-Based Catalog & CatalogSource (25 min, Hands-on): opm init/opm render/opm validate, Katalog-Image bauen, per minikube image load ohne externe Registry ins Cluster holen, CatalogSource registrieren.

  6. Hands-on: Subscription & manuelle InstallPlan-Freigabe (20 min, Hands-on): Subscription mit installPlanApproval: Manual, InstallPlan von Hand genehmigen, CSV-Status Succeeded live beobachten.

  7. Hands-on: Koordinierter Upgrade-Pfad (20 min, Hands-on): Bundle-Version 0.0.2 mit replaces: crontab-operator.v0.0.1, zweiter InstallPlan, erneute manuelle Freigabe.

  8. 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 install installiert die OLM-Controller in einen frischen Minikube-Cluster
  • operator-sdk olm status bestätigt, dass alle OLM-Deployments laufen, bevor der erste eigene Katalog registriert wird

Bundle & CSV

  • operator-sdk generate bundle -q –overwrite –version 0.0.1 erzeugt bundle/manifests/crontab-operator.clusterserviceversion.yaml aus dem bestehenden Kubebuilder-Projekt
  • spec.webhookdefinitions (Typen MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ConversionWebhook) übergibt die TLS-Zertifikatsverwaltung für alle drei Webhooks an OLM

File-Based Catalog

  • opm init crontab-operator –default-channel=alpha –output yaml und opm render bauen den Katalog aus dem eigenen Bundle-Image
  • opm validate prüft olm.package/olm.channel/olm.bundle-Schema, bevor daraus ein Katalog-Image entsteht

Subscription, InstallPlan & Upgrade

  • Subscription mit installPlanApproval: Manual, manuell freigegebener InstallPlan, CSV-Status Succeeded
  • Zweite Bundle-Version mit replaces: crontab-operator.v0.0.1 als 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