- Authors

- Name
- Phillip Pham
- @ddppham
Kubernetes Change Management: Sichere Aenderungen in Production-Clustern
Jede Aenderung an einem Production-Cluster ist ein potenzieller Ausfall. Ohne Change Management passiert, was in vielen Teams Alltag ist: Jemand fuehrt kubectl apply direkt gegen Production aus, ohne dass jemand reviewed, getestet oder dokumentiert hat. Wenn es schiefgeht, weiss niemand, was sich geaendert hat.
Dieser Artikel beschreibt ein vollstaendiges Kubernetes Change Management Framework: von der Risikobewertung ueber GitOps-basierte Approval-Workflows bis zu Rollback-Strategien und Emergency Changes.
TL;DR
- Klassifizieren Sie jede Aenderung nach Risiko (Low, Medium, High, Emergency) -- unterschiedliche Risiken erfordern unterschiedliche Prozesse.
- Nutzen Sie GitOps als Change-Control-System: Pull Request = Change Request, Review = Approval, Merge = Deployment.
- Definieren Sie Change Windows fuer riskante Aenderungen und Change Freezes vor kritischen Geschaeftsphasen.
- Implementieren Sie Pre-Deployment-Checks (dry-run, diff) und Post-Deployment-Validierung automatisiert in der Pipeline.
- Dokumentieren Sie einen Break-Glass-Prozess fuer Emergency Changes, der schnelles Handeln erlaubt, ohne den Prozess komplett zu umgehen.
Warum Change Management fuer Kubernetes
Kubernetes-Cluster sind komplex. Eine einzelne fehlerhafte YAML-Datei kann Dutzende Services gleichzeitig betreffen. Change Management schafft die Struktur, die verhindert, dass Aenderungen unkontrolliert in Production landen.
Die haeufigsten Ursachen fuer Production-Ausfaelle sind nicht Hardware-Fehler, sondern menschliche Aenderungen:
- Falsche Resource Limits -- OOMKilled in Production
- Fehlerhafte NetworkPolicies -- Services koennen nicht mehr kommunizieren
- Ungepruefter Helm Upgrade -- Breaking Changes in Chart-Values
- RBAC-Aenderungen -- Service Accounts verlieren Berechtigungen
- Cluster-Upgrades -- Deprecated APIs brechen Workloads
Ein strukturierter Kubernetes Change Management Prozess reduziert diese Risiken systematisch.
Risk Classification: Vier Kategorien
Nicht jede Aenderung braucht denselben Prozess. Ein ConfigMap-Update ist etwas anderes als ein Kubernetes-Version-Upgrade. Die Risikostufe bestimmt den erforderlichen Prozess.
# change-classification.yaml
risk_levels:
low:
beschreibung: "Minimales Risiko, gut verstandene Aenderung"
beispiele:
- "ConfigMap Update (Feature Toggle)"
- "Replica Count anpassen"
- "Resource Requests/Limits anpassen (erhoehen)"
- "Label oder Annotation aendern"
- "Non-critical CronJob aendern"
approval: "Automatisch oder 1 Reviewer"
change_window: "Jederzeit"
rollback_plan: "Automatisch (GitOps)"
pre_checks: "Linting, Schema-Validation"
medium:
beschreibung: "Kontrolliertes Risiko, benoetigt Review"
beispiele:
- "Neues Deployment (neuer Service)"
- "Image-Version Update (Minor/Patch)"
- "Ingress-Konfiguration aendern"
- "HPA-Parameter anpassen"
- "Secret Rotation"
approval: "2 Reviewer (1 muss Senior sein)"
change_window: "Geschaeftszeiten (Mo-Do, 10-16 Uhr)"
rollback_plan: "kubectl rollout undo oder Git Revert"
pre_checks: "Linting, dry-run, Diff-Review, Staging-Test"
high:
beschreibung: "Hohes Risiko, potenzielle Auswirkung auf gesamten Cluster"
beispiele:
- "Kubernetes Version Upgrade"
- "etcd Backup/Restore"
- "NetworkPolicy Aenderungen"
- "RBAC Aenderungen an Cluster-Roles"
- "Storage Class Aenderungen"
- "Ingress Controller Upgrade"
- "Service Mesh Konfiguration"
approval: "2 Senior Reviewer + Team Lead"
change_window: "Definiertes Maintenance Window (Sa 06-10 Uhr)"
rollback_plan: "Dokumentierter Rollback mit Backup"
pre_checks: "Staging-Test, dry-run, Diff, Impact Analysis, Backup"
emergency:
beschreibung: "Ungeplant, sofortige Aktion erforderlich"
beispiele:
- "Security Patch (CVE)"
- "Production-Ausfall beheben"
- "Certificate Expiry"
- "Disk Full"
approval: "Break-Glass: 1 Senior + nachtraegliche Review"
change_window: "Sofort"
rollback_plan: "Best Effort, Post-Incident dokumentieren"
pre_checks: "Minimal: funktioniert die Aenderung?"
GitOps als Change Control System
GitOps ist nicht nur ein Deployment-Tool -- es ist das natuerlichste Change-Management-System fuer Kubernetes. Jede Aenderung an der Infrastruktur wird als Pull Request erfasst, reviewed und erst nach Approval gemerged.
Der GitOps Change Workflow
# .github/PULL_REQUEST_TEMPLATE/change-request.md
# (als YAML-Kommentar dargestellt)
# Change Request Template
# -----------------------
# Titel: [RISK-LEVEL] Kurzbeschreibung der Aenderung
#
# ## Change Details
# - **Risikostufe:** Low / Medium / High
# - **Betroffene Namespaces:**
# - **Betroffene Services:**
# - **Change Window:** Jederzeit / Geschaeftszeiten / Maintenance
#
# ## Beschreibung
# Was wird geaendert und warum?
#
# ## Pre-Deployment Checks
# - [ ] Linting bestanden
# - [ ] dry-run erfolgreich
# - [ ] Diff reviewed
# - [ ] Staging-Test bestanden (Medium/High)
# - [ ] Backup erstellt (High)
#
# ## Rollback Plan
# Wie wird zurueckgerollt, falls die Aenderung fehlschlaegt?
#
# ## Post-Deployment Validation
# Welche Checks bestaetigen, dass die Aenderung erfolgreich war?
ArgoCD als GitOps-Engine
# argocd-application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: production-web-app
namespace: argocd
spec:
project: production
source:
repoURL: https://github.com/company/k8s-manifests.git
targetRevision: main
path: production/web-app
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: false # Kein automatisches Loeschen
selfHeal: true # Drift korrigieren
syncOptions:
- CreateNamespace=false
- PruneLast=true
- ApplyOutOfSyncOnly=true
retry:
limit: 3
backoff:
duration: 5s
factor: 2
maxDuration: 1m
---
# ArgoCD Project mit Einschraenkungen
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
name: production
namespace: argocd
spec:
description: "Production Workloads"
sourceRepos:
- 'https://github.com/company/k8s-manifests.git'
destinations:
- namespace: 'production'
server: 'https://kubernetes.default.svc'
clusterResourceWhitelist:
- group: ''
kind: Namespace
namespaceResourceWhitelist:
- group: 'apps'
kind: Deployment
- group: 'apps'
kind: StatefulSet
- group: ''
kind: Service
- group: ''
kind: ConfigMap
- group: 'networking.k8s.io'
kind: Ingress
roles:
- name: deployer
description: "Kann Sync ausfuehren"
policies:
- p, proj:production:deployer, applications, sync, production/*, allow
groups:
- platform-team
Fuer eine ausfuehrliche ArgoCD-Anleitung empfehlen wir unseren Artikel ArgoCD GitOps fuer Kubernetes.
Pre-Deployment Checks: Fehler frueh erkennen
Jede Aenderung muss automatisierte Checks durchlaufen, bevor sie in Production landet.
CI Pipeline fuer Kubernetes Manifeste
# .github/workflows/k8s-change-validation.yaml
name: Kubernetes Change Validation
on:
pull_request:
paths:
- 'production/**'
- 'staging/**'
jobs:
validate:
runs-on: ubuntu-latest
steps:
# Schritt 1: YAML Linting
- name: YAML Lint
uses: ibiqlik/action-yamllint@v3
with:
file_or_dir: production/
config_data: |
extends: default
rules:
line-length:
max: 200
truthy:
check-keys: false
# Schritt 2: Kubernetes Schema Validation
- name: Kubeconform
uses: docker://ghcr.io/yannh/kubeconform:latest
with:
args: >-
-strict
-summary
-kubernetes-version 1.29.0
-schema-location default
production/
# Schritt 3: Policy Check (OPA/Kyverno)
- name: Policy Validation
run: |
# Kyverno CLI fuer Policy-Checks
kyverno apply policies/ --resource production/
# Schritt 4: Dry-Run gegen Staging
- name: Dry-Run
run: |
kubectl apply --dry-run=server -f production/ \
--context staging-cluster 2>&1 | tee dry-run-output.txt
# Schritt 5: Diff anzeigen
- name: Diff
run: |
kubectl diff -f production/ \
--context staging-cluster 2>&1 | tee diff-output.txt || true
# Schritt 6: Diff als PR-Kommentar
- name: Comment Diff on PR
uses: marocchino/sticky-pull-request-comment@v2
with:
header: k8s-diff
message: |
## Kubernetes Diff
(Diff-Output wird hier eingefuegt)
risk-assessment:
runs-on: ubuntu-latest
steps:
- name: Classify Change Risk
run: |
# Automatische Risikobewertung basierend auf geaenderten Dateien
CHANGED=$(git diff --name-only origin/main...HEAD)
RISK="low"
# Medium Risk Patterns
if echo "$CHANGED" | grep -qE "(deployment|ingress|hpa|secret)"; then
RISK="medium"
fi
# High Risk Patterns
if echo "$CHANGED" | grep -qE "(rbac|networkpolicy|storageclass|clusterrole)"; then
RISK="high"
fi
echo "risk_level=$RISK" >> $GITHUB_OUTPUT
echo "## Risk Assessment: $RISK" >> $GITHUB_STEP_SUMMARY
Lokale Pre-Checks vor dem Commit
#!/bin/bash
# pre-commit-k8s-check.sh
# In .git/hooks/pre-commit oder als Makefile-Target
echo "=== Kubernetes Pre-Commit Checks ==="
# 1. YAML Syntax
echo "--- YAML Lint ---"
yamllint -d relaxed production/ || exit 1
# 2. Kubeconform
echo "--- Schema Validation ---"
kubeconform -strict -summary \
-kubernetes-version 1.29.0 \
production/ || exit 1
# 3. Kustomize Build (falls verwendet)
echo "--- Kustomize Build ---"
kubectl kustomize production/ > /dev/null || exit 1
# 4. Dry-Run gegen Staging
echo "--- Dry-Run ---"
kubectl apply --dry-run=server -f production/ \
--context staging 2>&1 | grep -E "error|warning" && exit 1
echo "=== Alle Checks bestanden ==="
Change Windows und Change Freezes
Nicht alle Aenderungen duerfen jederzeit durchgefuehrt werden. Change Windows definieren, wann riskante Aenderungen erlaubt sind.
Change Window Policy
# change-window-policy.yaml
change_windows:
standard:
beschreibung: "Fuer Low-Risk Changes"
zeiten: "Mo-Fr, 08:00-18:00 CET"
ausnahmen: "Nicht am letzten Werktag vor Feiertagen"
maintenance:
beschreibung: "Fuer High-Risk Changes"
zeiten: "Sa, 06:00-10:00 CET"
voraussetzungen:
- "Change Request 48h vorher approved"
- "Rollback-Plan dokumentiert"
- "Backup verifiziert"
- "On-Call informiert"
emergency:
beschreibung: "Fuer Emergency Changes"
zeiten: "Jederzeit"
voraussetzungen:
- "Break-Glass-Prozess aktiviert"
- "Senior Engineer approved"
- "Nachtraegliche Dokumentation innerhalb 24h"
change_freezes:
- name: "Jahresend-Freeze"
zeitraum: "15. Dezember - 5. Januar"
ausnahmen: "Nur Security Patches und Emergency"
- name: "Black Friday"
zeitraum: "25. November - 2. Dezember"
ausnahmen: "Nur Emergency"
- name: "Quartalsabschluss"
zeitraum: "Letzter Werktag jedes Quartals"
ausnahmen: "Nur Emergency"
Change Freeze in der Pipeline erzwingen
# .github/workflows/change-freeze-check.yaml
name: Change Freeze Check
on:
pull_request:
paths:
- 'production/**'
jobs:
freeze-check:
runs-on: ubuntu-latest
steps:
- name: Check Change Freeze
run: |
CURRENT_DATE=$(date +%m-%d)
CURRENT_DOW=$(date +%u) # 1=Montag, 7=Sonntag
# Jahresend-Freeze: 15.12 - 05.01
if [[ "$CURRENT_DATE" > "12-14" ]] || [[ "$CURRENT_DATE" < "01-06" ]]; then
echo "CHANGE FREEZE AKTIV: Jahresend-Freeze"
echo "Nur Emergency Changes erlaubt."
# Pruefen ob Emergency-Label gesetzt
if ! gh pr view ${{ github.event.number }} --json labels \
| jq -e '.labels[] | select(.name=="emergency")' > /dev/null; then
echo "::error::PR hat kein 'emergency' Label. Deployment blockiert."
exit 1
fi
fi
# Wochenende: nur Maintenance Window (Sa 06-10)
if [[ "$CURRENT_DOW" -eq 6 ]]; then
HOUR=$(date +%H)
if [[ "$HOUR" -lt 6 ]] || [[ "$HOUR" -ge 10 ]]; then
echo "::error::Ausserhalb des Maintenance Windows (Sa 06-10 Uhr)"
exit 1
fi
fi
# Sonntag: keine Changes
if [[ "$CURRENT_DOW" -eq 7 ]]; then
echo "::error::Keine Changes am Sonntag erlaubt."
exit 1
fi
echo "Change Window offen. Deployment erlaubt."
Rollback-Strategien
Jeder Change muss einen dokumentierten Rollback-Plan haben. Die Strategie haengt von der Art der Aenderung ab.
Git Revert (GitOps-Standard)
# Der sauberste Rollback bei GitOps:
# Den letzten Merge-Commit reverten
# 1. Letzten Merge-Commit finden
git log --oneline --merges -5
# 2. Revert erstellen
git revert -m 1 abc1234
# 3. Pushen -- ArgoCD synchronisiert automatisch
git push origin main
# ArgoCD Status pruefen
argocd app get production-web-app
kubectl rollout undo
# Deployment auf vorherige Version zurueckrollen
kubectl rollout undo deployment/web-app -n production
# Auf spezifische Revision
kubectl rollout history deployment/web-app -n production
kubectl rollout undo deployment/web-app -n production --to-revision=42
# Status pruefen
kubectl rollout status deployment/web-app -n production
ArgoCD Sync auf vorherigen Commit
# ArgoCD auf einen spezifischen Git-Commit synchronisieren
argocd app sync production-web-app --revision abc1234def
# Oder den Auto-Sync temporaer deaktivieren und manuell syncen
argocd app set production-web-app --sync-policy none
argocd app sync production-web-app --revision HEAD~1
# Nach Stabilisierung Auto-Sync wieder aktivieren
argocd app set production-web-app --sync-policy automated
Helm Rollback
# Helm Release History anzeigen
helm history web-app -n production
# Auf vorherige Revision zurueckrollen
helm rollback web-app 5 -n production
# Mit Dry-Run testen
helm rollback web-app 5 -n production --dry-run
Ausfuehrliche Rollback-Strategien beschreiben wir in unserem Artikel Kubernetes Rollback-Strategien.
Post-Deployment Validierung
Nach jeder Aenderung muessen automatisierte Checks sicherstellen, dass alles funktioniert.
# post-deployment-validation.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: post-deploy-validation
namespace: production
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
template:
spec:
serviceAccountName: validation-sa
containers:
- name: validate
image: bitnami/kubectl:1.29
command:
- /bin/bash
- -c
- |
set -e
echo "=== Post-Deployment Validation ==="
# 1. Alle Pods im Namespace muessen Running sein
echo "--- Check: Pods Running ---"
NOT_RUNNING=$(kubectl get pods -n production \
--no-headers | grep -v Running | grep -v Completed | wc -l)
if [ "$NOT_RUNNING" -gt 0 ]; then
echo "FEHLER: $NOT_RUNNING Pods nicht Running"
kubectl get pods -n production | grep -v Running | grep -v Completed
exit 1
fi
# 2. Endpoints muessen vorhanden sein
echo "--- Check: Endpoints ---"
SERVICES="web-app api-gateway auth-service"
for SVC in $SERVICES; do
ENDPOINTS=$(kubectl get endpoints "$SVC" -n production \
-o jsonpath='{.subsets[0].addresses}' 2>/dev/null)
if [ -z "$ENDPOINTS" ]; then
echo "FEHLER: Service $SVC hat keine Endpoints"
exit 1
fi
done
# 3. Health Check gegen Services
echo "--- Check: Health Endpoints ---"
for SVC in $SERVICES; do
STATUS=$(curl -s -o /dev/null -w '%{http_code}' \
"http://$SVC.production.svc.cluster.local/healthz" \
--max-time 10)
if [ "$STATUS" != "200" ]; then
echo "FEHLER: $SVC healthz returned $STATUS"
exit 1
fi
done
# 4. Keine Error-Events in den letzten 5 Minuten
echo "--- Check: Recent Events ---"
ERRORS=$(kubectl get events -n production \
--field-selector type=Warning \
--sort-by='.lastTimestamp' | tail -5)
if [ -n "$ERRORS" ]; then
echo "WARNUNG: Warning Events gefunden:"
echo "$ERRORS"
fi
echo "=== Validation erfolgreich ==="
restartPolicy: Never
backoffLimit: 2
Emergency Changes: Der Break-Glass-Prozess
Manchmal muss sofort gehandelt werden -- ein kritischer CVE, ein Production-Ausfall, abgelaufene Zertifikate. Der Break-Glass-Prozess erlaubt schnelles Handeln mit nachtraeglicher Kontrolle.
# break-glass-process.yaml
emergency_change_process:
schritt_1_aktivierung:
- "On-Call erkennt Emergency und deklariert Break-Glass"
- "Mindestens 1 Senior Engineer muss bestaetigen (Slack/Telefon)"
- "Incident-Channel oeffnen und dokumentieren"
schritt_2_durchfuehrung:
- "Direkter Zugriff auf Production erlaubt (kubectl, ArgoCD)"
- "Aenderung MUSS im Incident-Channel dokumentiert werden"
- "Jeder Befehl wird als Zeitstempel-Eintrag festgehalten"
schritt_3_nachbereitung:
- "Innerhalb von 24h: Change in Git nachpflegen"
- "Innerhalb von 48h: Post-Mortem mit Team"
- "Break-Glass-Zugriff wieder entziehen"
- "Action Items fuer Prozessverbesserung erstellen"
Break-Glass RBAC
# break-glass-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: break-glass-admin
annotations:
description: "Nur fuer Emergency Changes -- wird nach Incident wieder entzogen"
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
# ClusterRoleBinding wird NUR bei Emergency erstellt
# und nach dem Incident wieder geloescht
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: break-glass-binding
annotations:
incident: "INC-2026-0042"
created-by: "oncall-admin"
expires: "2026-02-11T06:00:00Z"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: break-glass-admin
subjects:
- kind: User
name: max.mustermann@company.de
apiGroup: rbac.authorization.k8s.io
# Break-Glass aktivieren
kubectl apply -f break-glass-rbac.yaml
echo "Break-Glass aktiviert fuer max.mustermann@company.de" | \
slack-cli chat send --channel "#incidents"
# Nach dem Incident: Break-Glass entziehen
kubectl delete clusterrolebinding break-glass-binding
echo "Break-Glass deaktiviert" | \
slack-cli chat send --channel "#incidents"
Audit Logging: Aenderungen nachvollziehen
Kubernetes Audit Logs dokumentieren jede API-Aenderung -- essenziell fuer Kubernetes Change Management und Compliance.
# audit-policy.yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
# Schreiboperationen auf Workloads vollstaendig loggen
- level: RequestResponse
verbs: ["create", "update", "patch", "delete"]
resources:
- group: "apps"
resources: ["deployments", "statefulsets", "daemonsets"]
- group: ""
resources: ["services", "configmaps", "secrets"]
- group: "networking.k8s.io"
resources: ["ingresses", "networkpolicies"]
# RBAC-Aenderungen vollstaendig loggen
- level: RequestResponse
verbs: ["create", "update", "patch", "delete"]
resources:
- group: "rbac.authorization.k8s.io"
resources: ["clusterroles", "clusterrolebindings", "roles", "rolebindings"]
# Read-Operationen nur auf Metadata-Level
- level: Metadata
verbs: ["get", "list", "watch"]
# Health Checks nicht loggen
- level: None
nonResourceURLs:
- "/healthz*"
- "/readyz*"
- "/livez*"
Fuer eine tiefere Einfuehrung in Audit Logging lesen Sie unseren Artikel Kubernetes Audit Logging.
Checkliste: Change Management Readiness
Pruefen Sie, ob Ihr Team bereit ist:
- Risiko-Klassifizierung definiert und dem Team bekannt
- GitOps-Workflow eingerichtet (ArgoCD oder Flux)
- PR-Template fuer Change Requests vorhanden
- CI-Pipeline mit Linting, Validation und dry-run
- Change Windows definiert und in der Pipeline erzwungen
- Change Freeze Policy fuer kritische Geschaeftsphasen
- Rollback-Prozeduren dokumentiert und getestet
- Break-Glass-Prozess fuer Emergencies definiert
- Audit Logging aktiviert und ausgewertet
- Post-Deployment-Validierung automatisiert
Haeufige Fehler im Change Management
1. Zu komplexer Prozess
Wenn ein simples ConfigMap-Update denselben Prozess durchlaufen muss wie ein Cluster-Upgrade, werden Teams den Prozess umgehen. Passen Sie den Aufwand an das Risiko an.
2. Kein Rollback-Test
Ein Rollback-Plan, der nie getestet wurde, funktioniert im Ernstfall nicht. Testen Sie Rollbacks regelmaessig in Staging.
3. Change Freezes ohne Ausnahmen
Ein Change Freeze ohne Break-Glass-Prozess fuehrt dazu, dass Security Patches verzoegert werden. Definieren Sie klare Ausnahmen.
4. Direkter kubectl-Zugriff auf Production
Wenn jeder im Team kubectl gegen Production ausfuehren kann, ist GitOps wertlos. Beschraenken Sie den Zugriff per RBAC und nutzen Sie GitOps fuer alle regulaeren Aenderungen.
5. Keine Nachverfolgung
Aenderungen ohne Dokumentation sind unsichtbar. Audit Logs und Git History muessen ausgewertet werden, um Drift und unautorisierte Aenderungen zu erkennen.
Zum Thema Configuration Drift empfehlen wir unseren Artikel Kubernetes Configuration Drift.
Fazit
Kubernetes Change Management ist kein Buerokratie-Projekt, sondern eine Investition in die Stabilitaet Ihrer Production-Umgebung. Der Schluessel liegt in der Risiko-basierte Abstufung: einfache Aenderungen sollen schnell gehen, riskante Aenderungen brauchen mehr Kontrolle.
GitOps ist das natuerlichste Change-Control-System fuer Kubernetes. Jeder Pull Request ist ein Change Request, jedes Review ein Approval, jeder Merge ein dokumentiertes Deployment. Kombiniert mit automatisierten Pre-Checks, Post-Deployment-Validierung und einem Break-Glass-Prozess fuer Emergencies haben Sie ein Framework, das sowohl Geschwindigkeit als auch Sicherheit bietet.
Verwandte Artikel
- ArgoCD GitOps fuer Kubernetes
- Kubernetes Rollback-Strategien
- Kubernetes Audit Logging
- Kubernetes Configuration Drift
- Kubernetes GitOps Security
- Kubernetes Production-Ausfall Notfallplan
Sie moechten Change Management fuer Ihre Kubernetes-Cluster professionell aufsetzen? Wir helfen Ihnen, GitOps-Workflows zu implementieren, CI-Pipelines zu konfigurieren und Ihre Prozesse an Compliance-Anforderungen anzupassen. Kontaktieren Sie uns fuer eine unverbindliche Beratung.
Kubernetes-Beratung gesucht?
Wir helfen deutschen Unternehmen bei der Kubernetes-Implementierung, Migration und Optimierung. DSGVO-konform und praxiserprobt.
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
ArgoCD ApplicationSets: Multi-App Deployment Patterns
ArgoCD ApplicationSets automatisieren Multi-App und Multi-Cluster Deployments mit Generatoren. Praxis-Patterns für Git, Cluster und Matrix.
GitOps Repository-Struktur: Best Practices
Die richtige Repository-Struktur entscheidet über den Erfolg von GitOps. Mono-Repo vs. Multi-Repo, Verzeichnisaufbau und Environment-Promotion praxisnah erklärt.
GitOps Secrets: SOPS und Sealed Secrets im Vergleich
Secrets sicher in Git verwalten mit Sealed Secrets, Mozilla SOPS und External Secrets Operator. Praxisvergleich für GitOps-Workflows.
Kustomize vs Helm: Kubernetes-Konfiguration im Vergleich
Kustomize und Helm lösen dasselbe Problem unterschiedlich. Dieser Vergleich zeigt beide Tools am selben Deployment und hilft bei der Entscheidung für dein Projekt.
Multi-Cluster Management: Kubernetes-Flotten steuern
Mehrere Kubernetes-Cluster zentral verwalten mit ArgoCD ApplicationSets und Rancher Fleet. Topologien, Drift-Erkennung und praxisnahe YAML-Beispiele.