Deployment, Container, Kubernetes & OpenShift

Vom JAR zum betriebenen Service: Images, Ressourcen, Probes, Config, Secrets und Rollouts.

Enterprise JavaBeispieleArchitekturOffline HTML

Container ist kein Deployment-Konzept allein

Ein Dockerfile macht noch kein betreibbares System. Enterprise Deployment braucht Versionierung, Konfiguration, Secrets, Ressourcen, Probes, Rollout-Strategien, Migrationsplan, Monitoring und Incident-Fähigkeit.

Schlankes Java Runtime Image
FROM eclipse-temurin:21-jre
WORKDIR /app
COPY target/order-service.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-XX:MaxRAMPercentage=75", "-jar", "app.jar"]
Kubernetes Deployment mit Probes und Ressourcen
apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-service
spec:
  replicas: 3
  selector:
    matchLabels: { app: order-service }
  template:
    metadata:
      labels: { app: order-service }
    spec:
      containers:
        - name: app
          image: registry.example.com/order-service:1.0.0
          ports: [{ containerPort: 8080 }]
          readinessProbe:
            httpGet: { path: /actuator/health/readiness, port: 8080 }
          livenessProbe:
            httpGet: { path: /actuator/health/liveness, port: 8080 }
          resources:
            requests: { cpu: "250m", memory: "512Mi" }
            limits: { cpu: "1", memory: "1024Mi" }

Konfiguration und Secrets

DatenartWohinNicht tun
Normale KonfigurationConfigMap, Environment, Application ConfigNicht hart im Code verdrahten
SecretsSecret Store / Kubernetes Secret / VaultNicht in Git oder Image bauen
Feature Flagszentrales Flag-System oder sichere KonfigNicht heimlich Fachlogik per Profile duplizieren
DB-MigrationCI/CD oder kontrollierter JobNicht automatisch unkontrolliert bei jedem Pod-Start

Rollout und Rückwärtskompatibilität

Rolling Updates bedeuten, dass alte und neue Versionen kurzzeitig gleichzeitig laufen. APIs, Events und Datenbankschema müssen dafür kompatibel sein. Eine Datenbankspalte entfernen ist fast nie ein einzelner Schritt; zuerst hinzufügen, doppelt schreiben/lesen, migrieren, dann später entfernen.

⌂ Cockpit