Die OpenShift Command Line Interface (CLI) stellt das zentrale
Werkzeug für die Verwaltung und Interaktion mit OpenShift-Clustern dar.
Das CLI-Tool trägt die Bezeichnung oc und fungiert als
primäre Schnittstelle zwischen Administratoren, Entwicklern und der
OpenShift-Plattform.
Die OpenShift CLI basiert auf dem REST-API-Konzept und übersetzt Kommandozeileneingaben in entsprechende HTTP-Anfragen an die OpenShift-API-Server. Dieses Design ermöglicht eine vollständige Verwaltung aller Cluster-Ressourcen über die Kommandozeile, wobei sämtliche Funktionalitäten der Web-Konsole auch über CLI-Befehle zugänglich sind.
Das oc-Tool erweitert die Kubernetes-CLI
kubectl um OpenShift-spezifische Funktionalitäten. Dadurch
bleiben alle Standard-Kubernetes-Befehle verfügbar, während zusätzliche
OpenShift-Konzepte wie Projects, Routes, Build-Konfigurationen und
Security Context Constraints über erweiterte Befehle zugänglich
werden.
Die CLI kommuniziert über HTTPS mit den API-Servern des
OpenShift-Clusters. Authentifizierung erfolgt über OAuth-Token, die nach
erfolgreicher Anmeldung lokal gespeichert werden. Die
Konfigurationsdaten werden in einer lokalen
kubeconfig-Datei gespeichert, die Cluster-Informationen,
Benutzerkontext und Authentifizierungsdetails enthält.
Die OpenShift CLI ist für verschiedene Betriebssysteme verfügbar und kann über mehrere Installationsmethoden bezogen werden.
| Betriebssystem | Download-Quelle | Installation |
|---|---|---|
| Windows | mirror.openshift.com | Executable herunterladen, PATH hinzufügen |
| macOS | mirror.openshift.com, Homebrew | brew install openshift-cli |
| Linux | mirror.openshift.com, Package Manager | rpm/deb-Pakete oder Binary |
| Web Console | Cluster-spezifisch | Download-Link in Web-Konsole |
# Binary herunterladen und installieren
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz
tar -xzf openshift-client-linux.tar.gz
sudo mv oc /usr/local/bin/
sudo chmod +x /usr/local/bin/oc
# Installation verifizieren
oc version --client# PowerShell: Binary herunterladen
Invoke-WebRequest -Uri "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-windows.zip" -OutFile "oc.zip"
Expand-Archive -Path "oc.zip" -DestinationPath "C:\OpenShift"
# PATH-Variable erweitern
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\OpenShift", "User")Die erste Interaktion mit einem OpenShift-Cluster erfordert eine Authentifizierung über verschiedene verfügbare Methoden.
Token-basierte Authentifizierung (empfohlen):
# Token aus Web-Konsole kopieren
oc login --token=<token> --server=https://api.cluster.example.com:6443
# Login-Status überprüfen
oc whoami
oc whoami --show-serverUsername/Password-Authentifizierung:
# Interaktive Anmeldung
oc login https://api.cluster.example.com:6443
# Username: developer
# Password: [eingeben]
# Direkter Login mit Credentials
oc login -u developer -p password https://api.cluster.example.com:6443Service Account-Token:
# Service Account Token verwenden
oc login --token=$(oc sa get-token myserviceaccount) --server=https://api.cluster.example.com:6443Die CLI-Konfiguration wird in ~/.kube/config gespeichert
und kann multiple Cluster-Verbindungen verwalten:
# Aktuelle Konfiguration anzeigen
oc config view
# Verfügbare Kontexte auflisten
oc config get-contexts
# Kontext wechseln
oc config use-context cluster1-developer
# Neuen Cluster zur Konfiguration hinzufügen
oc config set-cluster production --server=https://api.prod.example.com:6443
oc config set-context prod-admin --cluster=production --user=adminDie OpenShift CLI bietet eine Vielzahl von Befehlen für verschiedene Verwaltungsaufgaben, die in logische Kategorien unterteilt werden können.
| Befehl | Zweck | Beispiel |
|---|---|---|
oc projects |
Verfügbare Projekte anzeigen | oc projects |
oc project |
Aktuelles/Wechsel-Projekt | oc project my-app |
oc new-project |
Neues Projekt erstellen | oc new-project web-app --description="Web Application" |
oc delete project |
Projekt löschen | oc delete project old-project |
# Projekt-Workflow
oc new-project development --description="Development Environment"
oc project development
oc get all # Alle Ressourcen im aktuellen Projekt anzeigenEinfaches Deployment aus Git:
# Neue App aus Git-Repository
oc new-app https://github.com/openshift/nodejs-ex.git --name=nodejs-app
# App aus Docker-Image
oc new-app --docker-image=nginx:latest --name=web-server
# App mit spezifischem Builder-Image
oc new-app nodejs~https://github.com/user/node-app.gitSource-to-Image (S2I) Builds:
# S2I-Build starten
oc start-build nodejs-app --from-dir=./src --follow
# Build-Logs verfolgen
oc logs -f bc/nodejs-app
# Build-Status prüfen
oc get buildsGrundlegende CRUD-Operationen:
# Ressourcen auflisten
oc get pods # Alle Pods
oc get pods -o wide # Erweiterte Informationen
oc get all # Alle Ressourcen-Typen
# Detaillierte Ressourcen-Informationen
oc describe pod/nodejs-app-1-xxxxx
oc describe service/nodejs-app
# Ressourcen bearbeiten
oc edit deployment/nodejs-app # Mit Standard-Editor
oc patch pod nodejs-app-1-xxxxx -p '{"spec":{"containers":[{"name":"nodejs-app","image":"new-image"}]}}'YAML-basierte Verwaltung:
# Ressourcen als YAML exportieren
oc get deployment/nodejs-app -o yaml > deployment.yaml
# YAML-Datei anwenden
oc apply -f deployment.yaml
# Konfiguration aus mehreren Dateien
oc apply -f ./k8s-manifests/
# Ressourcen löschen
oc delete -f deployment.yaml
oc delete all --selector app=nodejs-appDie CLI bietet umfangreiche Funktionen für das Monitoring von Anwendungen und Troubleshooting.
# Container-Logs anzeigen
oc logs pod/nodejs-app-1-xxxxx
# Logs mehrerer Container
oc logs deployment/nodejs-app --all-containers=true
# Live-Log-Stream
oc logs -f deployment/nodejs-app
# Logs mit Zeitstempel
oc logs deployment/nodejs-app --timestamps
# Logs der letzten Stunde
oc logs deployment/nodejs-app --since=1hPod-Status und -Events:
# Pod-Details und Events
oc describe pod/nodejs-app-1-xxxxx
# Cluster-Events anzeigen
oc get events --sort-by='.lastTimestamp'
# Node-Informationen
oc get nodes
oc describe node/worker-1Interactive Debugging:
# Shell in laufendem Container öffnen
oc rsh pod/nodejs-app-1-xxxxx
# Befehl in Container ausführen
oc exec pod/nodejs-app-1-xxxxx -- ls -la /app
# Debug-Container starten
oc debug pod/nodejs-app-1-xxxxx --image=registry.redhat.io/ubi8/ubi
# Port-Forwarding für lokalen Zugriff
oc port-forward pod/nodejs-app-1-xxxxx 8080:8080# Resource-Utilization anzeigen
oc top pods # Pod CPU/Memory-Nutzung
oc top nodes # Node-Resource-Nutzung
# Resource-Quotas und -Limits
oc describe quota
oc describe limits
# Service-Endpunkte prüfen
oc get endpoints
oc describe service/nodejs-app# OpenShift-Templates verwenden
oc get templates -n openshift # Verfügbare Templates
oc new-app --template=mysql-persistent
# Parameter-basierte Template-Nutzung
oc process -f mysql-template.yaml -p MYSQL_USER=admin | oc apply -f -
# Kustomize-Integration
oc apply -k ./overlays/production/Ressourcen-Selektion:
# Label-basierte Operationen
oc get pods -l app=nodejs-app
oc delete all -l environment=development
# Feld-basierte Selektion
oc get pods --field-selector=status.phase=Running
oc delete pods --field-selector=status.phase=FailedCLI-Automatisierung:
# JSON-Output für Scripting
oc get pods -o json | jq '.items[].metadata.name'
# Custom Columns
oc get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase
# Watch-Modus für kontinuierliches Monitoring
oc get pods --watchDie CLI umfasst viele OpenShift-spezifische Befehle, die über Standard-Kubernetes-Funktionalitäten hinausgehen.
| Befehl | Zweck | Beispiel |
|---|---|---|
oc start-build |
Build-Prozess starten | oc start-build myapp --follow |
oc cancel-build |
Build abbrechen | oc cancel-build myapp-2 |
oc import-image |
Externe Images importieren | oc import-image nodejs --from=node:16 |
oc tag |
Image-Tags verwalten | oc tag myapp:latest myapp:v1.0 |
# Route für Service erstellen
oc expose service/nodejs-app --name=web-route
# Route mit Custom-Hostname
oc expose service/nodejs-app --hostname=app.example.com
# Secure Route mit TLS
oc create route edge --service=nodejs-app --hostname=secure-app.example.com
# Route-Status prüfen
oc get routes
oc describe route/web-route# Service Accounts verwalten
oc create serviceaccount myapp-sa
oc get serviceaccounts
# Berechtigungen zuweisen
oc adm policy add-role-to-user edit developer
oc adm policy add-scc-to-user anyuid -z myapp-sa
# Security Context Constraints prüfen
oc get scc
oc describe scc/restricted# Bash-Completion aktivieren
echo 'source <(oc completion bash)' >> ~/.bashrc
# Zsh-Completion
echo 'source <(oc completion zsh)' >> ~/.zshrc
# Nützliche Aliase
alias k=oc
alias kgp='oc get pods'
alias kgs='oc get services'
alias kd='oc describe'# kubectl-Plugins funktionieren auch mit oc
oc krew install tree # Pod-Hierarchie visualisieren
oc tree deployment/myapp
# Custom Scripts als Plugins
# Erstelle ausführbare Datei: oc-myplugin
# In PATH verfügbar machen: oc mypluginEffizientes Resource-Management:
# Bulk-Operationen mit Labels
oc label pods -l app=myapp version=v2.0
oc delete pods -l version=v1.0
# Conditional Operations
oc get pods -o json | jq -r '.items[] | select(.status.phase=="Failed") | .metadata.name' | xargs oc delete pod
# Rolling Deployment überwachen
oc rollout status deployment/myapp
oc rollout history deployment/myapp
oc rollout undo deployment/myapp --to-revision=2Systematische Problem-Analyse:
# 1. Cluster-Status prüfen
oc get nodes
oc get pods --all-namespaces | grep -v Running
# 2. Application-Health überprüfen
oc get all -l app=myapp
oc describe deployment/myapp
# 3. Events und Logs analysieren
oc get events --sort-by='.lastTimestamp' | tail -20
oc logs deployment/myapp --previous # Logs von vorherigem Container
# 4. Resource-Constraints prüfen
oc describe node/worker-1 | grep -A 10 "Allocated resources"
oc top pods --sort-by=memoryPerformance-Debugging:
# Network-Connectivity testen
oc run debug --image=registry.redhat.io/ubi8/ubi -- sleep 3600
oc exec -it debug -- curl -I http://myapp:8080
# DNS-Resolution prüfen
oc exec -it debug -- nslookup myapp.myproject.svc.cluster.localDie OpenShift CLI ist ein mächtiges Werkzeug, das sowohl für tägliche Verwaltungsaufgaben als auch für komplexe Automatisierungsszenarien geeignet ist. Die Kombination aus Kubernetes-Kompatibilität und OpenShift-spezifischen Erweiterungen macht sie zu einem unverzichtbaren Tool für jeden OpenShift-Administrator und -Entwickler.