← Übersicht  ·  Skripte & Dateien  ·  cloud-host · OpenShift · Operatoren

Einen Operator installieren mit OLM

Das Modell steht in den Atlas-Diagrammen D2, D3 und D4. Hier spielst du es von Hand durch: eine Subscription abonnieren, den InstallPlan live genehmigen, die ClusterServiceVersion durch ihre Phasen bis Succeeded verfolgen – am Beispiel OpenShift GitOps, dem Operator, den das Projekt als Nächstes real braucht (E3). EX280-relevant.

Stand: 4. September 2026 OKD 4.x / OCP 4.x ns openshift-gitops-operator

Voraussetzung: ein Cluster mit oc login als Admin. Die Default-Kataloge in openshift-marketplace müssen laufen (oc get catalogsource -A). Auf SNO reserviert der Operator-Pod plus GitOps selbst spürbar RAM – nach dem Test wieder deinstallieren (Schritt 7).

1 Die OLM-Objekte im Überblick

Fünf Objektarten, ein Weg vom Katalog zum laufenden Operator.

CatalogSourceein Pod, der einen Katalog-Index verfügbarer Operatoren aus einem Image serviert (ns openshift-marketplace)
OperatorGrouplegt den Wirkbereich fest – jeder Namespace mit Operatoren braucht genau eine
Subscriptiondeine Bestellung: welcher Operator, welcher channel, installPlanApproval: Automatic oder Manual
InstallPlandie konkrete Objektliste, die OLM anlegen wird – CRDs, RBAC, das Operator-Deployment, die CSV
CSVdas Paket-Manifest – Deployment-Spec, RBAC, eigene und benötigte CRDs, Beispiel-CRs

2 Die vier Default-Kataloge

OperatorHub ist die Konsolen-Oberfläche über den CatalogSources – unter Operators → OperatorHub. Von der CLI aus:

Laptop · Bash
oc get catalogsource -n openshift-marketplace
oc get packagemanifests -n openshift-marketplace | grep -i gitops
oc describe packagemanifest openshift-gitops-operator -n openshift-marketplace | head -30
Katalogist
redhat-operatorsvon Red Hat, voll unterstützt im OCP-Abo – GitOps, Pipelines, Serverless, Logging
certified-operatorsvon Partnern zertifiziert, Support beim Partner – Crunchy Postgres, Confluent Kafka
community-operatorsvon der Community, kein Support, gut zum Lernen – Strimzi, CloudNativePG, cert-manager
redhat-marketplacekostenpflichtig, Kauf über marketplace.redhat.com

RAM auf SNOJeder Katalog ist ein eigener Pod in openshift-marketplace. disableAllDefaultSources: true am OperatorHub-Objekt cluster plus nur der gebrauchte Katalog spart etwa 300 MB.

3 Voraussetzung: die OperatorGroup

Ohne OperatorGroup bleibt jede Subscription im Namespace hängen.

Laptop · Bash
oc new-project openshift-gitops-operator

cat <<'YAML' | oc apply -f -
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: gitops-og
  namespace: openshift-gitops-operator
spec:
  targetNamespaces:
    - openshift-gitops-operator
YAML

oc get operatorgroup -n openshift-gitops-operator

Der Wirkbereich entscheidet, wen die im Namespace laufenden Operatoren sehen dürfen: OwnNamespace, SingleNamespace, MultiNamespace, AllNamespaces (leere targetNamespaces). Zwei OperatorGroups im selben Namespace brechen alle Operatoren dort – vorher immer prüfen, ob schon eine existiert.

4 Eine Subscription abonnieren

installPlanApproval: Manual – auf einer Single-Node immer Manual, ein Auto-Upgrade mitten in einer Demo ist unschön.

Laptop · Bash
cat <<'YAML' | oc apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: openshift-gitops-operator
  namespace: openshift-gitops-operator
spec:
  channel: latest
  name: openshift-gitops-operator
  source: redhat-operators
  sourceNamespace: openshift-marketplace
  installPlanApproval: Manual
YAML

oc get subscription -n openshift-gitops-operator
oc describe sub openshift-gitops-operator -n openshift-gitops-operator | grep -A3 Conditions

Channels (stable, latest, alpha) sind Release-Züge – die Subscription nennt einen, OLM hält dich auf dessen Spitze. startingCSV pinnt eine bestimmte Version. Jede Version nennt per replaces/skips, was sie ablöst – OLM geht die Kette Schritt für Schritt, nicht in einem Sprung.

5 Den InstallPlan genehmigen

Bei Manual steht der InstallPlan auf RequiresApproval, bis du ihn freigibst.

Laptop · Bash
oc get installplan -n openshift-gitops-operator
IP=$(oc get installplan -n openshift-gitops-operator -o jsonpath='{.items[0].metadata.name}')
oc get installplan $IP -n openshift-gitops-operator -o jsonpath='{.spec.clusterServiceVersionNames}{"\n"}'

# ansehen was alles kommt (CRDs, RBAC, Deployment, ...):
oc get installplan $IP -n openshift-gitops-operator -o yaml | grep -A20 "resources:"

# freigeben:
oc patch installplan $IP -n openshift-gitops-operator --type=merge -p '{"spec":{"approved":true}}'

Dependency-Resolution: deklariert eine CSV required APIs, findet OLM selbst einen Anbieter im Katalog und installiert ihn mit – der InstallPlan zeigt dann auch die Objekte der Abhängigkeiten. Die deinstallieren sich beim Aufräumen (Schritt 7) nicht automatisch mit.

6 Die CSV-Phasen verfolgen

Von der Genehmigung bis zum laufenden Operator – live mitverfolgt.

Laptop · Bash
oc get csv -n openshift-gitops-operator -w
# Pending -> InstallReady -> Installing -> Succeeded

oc describe sub openshift-gitops-operator -n openshift-gitops-operator | grep -i state
oc get pods -n openshift-gitops-operator

Was hängt, steht in status.conditions der Subscription (oc describe sub <name>) – und in den Pod-Logs des Operator-Deployments, sobald es existiert. maxOpenShiftVersion in der CSV kann sogar ein Cluster-Upgrade blocken (G5) – vor einem OKD-Upgrade lohnt ein Blick auf die installierten CSVs.

7 Wieder deinstallieren

Rollback ist unschön: Subscription und CSV löschen, CRDs und Custom Resources bleiben stehen.

Laptop · Bash
oc delete subscription openshift-gitops-operator -n openshift-gitops-operator
oc delete csv -n openshift-gitops-operator --all
oc delete project openshift-gitops-operator

# CRDs bleiben clusterweit stehen, falls gewuenscht mit aufraeumen:
oc get crd | grep -i gitops

Ein älterer Kanal neu abonnieren funktioniert genauso – Subscription mit dem alten channel/startingCSV neu anlegen. Die vorhandenen CRDs und Custom Resources bleiben dabei unberührt.

8 Typische Fallen

Symptommeist
Subscription bleibt ohne InstallPlankeine passende OperatorGroup im Namespace, oder zwei auf einmal
InstallPlan hängt bei RequiresApprovalerwartet bei Manual – ganz normal, wartet auf oc patch ... approved:true
CSV bleibt Pendingeine benötigte API/Abhängigkeit fehlt im Katalog, oder RBAC für den Operator selbst reicht nicht
Operator-Pod CrashLoopBackOffCluster-CPU/RAM knapp (häufig auf SNO), oder eine SCC/RBAC-Einschränkung passt nicht

9 Warum die Bibliothek (noch) keinen Operator hat

Die zustandsbehaftete Infra der Bibliothek – Postgres, Kafka, Redis, Keycloak – kommt als Bitnami-Helm-Chart, nicht aus dem OperatorHub. Auf der SNO ist noch kein Operator installiert, OLM läuft aber bereit (oc get catalogsource -A zeigt die vier Default-Kataloge). Der erste echte Kandidat wäre OpenShift GitOps (E3) oder Pipelines (E2) aus redhat-operators – genau das Beispiel dieser Anleitung.

AllNamespaces auf einem Single-Node nur mit Vorsicht – der Operator-Pod und alle Operanden teilen sich die begrenzten ~11 GB RAM mit OKD und dem library-Stack, SingleNamespace wo möglich.

+ Die Kurzfassung

KetteCatalogSource + OperatorGroup + Subscription → InstallPlan → CSV-Phasen bis Succeeded
Manualauf SNO immer – jeder InstallPlan wartet auf approved:true, kein Überraschungs-Upgrade
AufräumenSubscription + CSV weg, CRDs und Custom Resources bleiben – kein automatisches Rollback