Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Kubernetes für Enterprise-Microservices: Schritt-für-Schritt-Tutorial zur Bereitstellung einer Datenbank

Lernen Sie, wie Sie mit Kubernetes eine PostgreSQL-Datenbank und Microservices in einem lokalen Cluster bereitstellen. Ideal für Studierende der Enterprise Software Architecture.

Kubernetes Tutorial Microservices bereitstellen PostgreSQL Kubernetes NodePort Service kubectl Befehle Docker Desktop Kubernetes Enterprise Software Architecture CS 548 Aufgabe YAML Deployment Container Orchestrierung lokaler Kubernetes Cluster Datenbank in Kubernetes Microservice Deployment Kubernetes für Studierende Quarkus Kubernetes

Kubernetes für Enterprise-Microservices: Lokale Bereitstellung einer Datenbank

Kubernetes hat sich als Standard für die Orchestrierung von Container-Anwendungen etabliert. In diesem Tutorial zeigen wir Ihnen, wie Sie eine PostgreSQL-Datenbank und einen Microservice in einem lokalen Kubernetes-Cluster bereitstellen – genau wie es in der CS 548 Enterprise Software Architecture and Design Aufgabe gefordert wird. Wir nutzen Docker Desktop mit aktiviertem Kubernetes und arbeiten mit YAML-Konfigurationsdateien.

Warum Kubernetes für Microservices?

Stellen Sie sich vor, Sie entwickeln eine medizinische Klinik-Software mit mehreren Diensten: Datenbank, Backend-API und Frontend. Jeder Dienst läuft in einem eigenen Container. Kubernetes hilft Ihnen, diese Container zu verwalten, zu skalieren und bei Ausfällen neu zu starten. Ähnlich wie ein Dirigent ein Orchester leitet, koordiniert Kubernetes die Container und stellt sicher, dass alles harmonisch läuft.

Voraussetzungen und Installation

Sie benötigen Docker Desktop (Windows/Mac) mit aktiviertem Kubernetes. Prüfen Sie mit kubectl config get-contexts, ob der Kontext auf docker-desktop gesetzt ist. Falls nicht, wechseln Sie mit kubectl config use-context docker-desktop. Der Befehl kubectl ist das Kommandozeilen-Tool, um mit Ihrem Cluster zu interagieren.

Schritt 1: Datenbank-Deployment erstellen

Erstellen Sie eine Datei clinic-database-deploy.yaml mit folgendem Inhalt:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: clinic-database
  labels:
    app: clinic-database
spec:
  replicas: 1
  selector:
    matchLabels:
      app: clinic-database
  template:
    metadata:
      labels:
        app: clinic-database
    spec:
      restartPolicy: Always
      containers:
      - name: clinic-database
        image: cs548/clinic-database
        env:
        - name: POSTGRES_PASSWORD
          value: XXXXXX
        - name: DATABASE_PASSWORD
          value: YYYYYY
        imagePullPolicy: Never

Wichtig: imagePullPolicy: Never stellt sicher, dass Kubernetes das Image nicht aus der Cloud zieht, sondern aus Ihrer lokalen Docker-Registry verwendet. Starten Sie das Deployment mit kubectl apply -f clinic-database-deploy.yaml und überprüfen Sie den Status mit kubectl get pods.

Schritt 2: Datenbank-Service bereitstellen

Ein Service macht das Deployment innerhalb und außerhalb des Clusters erreichbar. Erstellen Sie clinic-database-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: clinic-database
  labels:
    app: clinic-database
spec:
  type: NodePort
  ports:
  - name: jdbc
    port: 5432
    targetPort: 5432
  selector:
    app: clinic-database

Mit type: NodePort wird der Dienst auch außerhalb des Clusters (z. B. von Ihrem Laptop aus) über einen zufälligen Port erreichbar. Führen Sie kubectl apply -f clinic-database-service.yaml aus und lassen Sie sich die Details mit kubectl describe service clinic-database anzeigen. Notieren Sie sich den NodePort (z. B. 31338).

Schritt 3: Microservice-Deployment

Nun deployen wir den Domain-Microservice. Erstellen Sie clinic-domain-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: clinic-domain
  labels:
    app: clinic-domain
spec:
  replicas: 1
  selector:
    matchLabels:
      app: clinic-domain
  template:
    metadata:
      labels:
        app: clinic-domain
    spec:
      restartPolicy: Always
      containers:
      - name: clinic-domain
        image: cs548/clinic-domain:1.0.0
        env:
        - name: QUARKUS_DATASOURCE_USERNAME
          value: clinicuser
        - name: QUARKUS_DATASOURCE_PASSWORD
          value: YYYYYY
        imagePullPolicy: Never

Starten Sie das Deployment und prüfen Sie die Logs mit kubectl logs pod-name.

Schritt 4: Microservice-Service

Erstellen Sie clinic-domain-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: clinic-domain
  labels:
    app: clinic-domain
spec:
  type: NodePort
  ports:
  - name: http
    port: 8080
  selector:
    app: clinic-domain

Nach dem Start können Sie die API unter http://localhost:<NodePort>/api/ testen.

Praktische Tipps für Studierende

  • Lokale Images verwenden: Stellen Sie sicher, dass Ihre Docker-Images lokal vorhanden sind. Mit docker images können Sie prüfen, ob das Image cs548/clinic-database existiert.
  • Fehlerbehebung: Nutzen Sie kubectl describe pod und kubectl logs, um Probleme zu diagnostizieren.
  • Datenbankverbindung testen: Von Ihrem Laptop aus können Sie mit psql -h localhost -p <NodePort> -U clinicuser die Datenbank erreichen.

Fazit

Sie haben erfolgreich eine PostgreSQL-Datenbank und einen Microservice in Kubernetes bereitgestellt. Dieses Setup ist die Grundlage für viele Enterprise-Anwendungen. Mit Kubernetes können Sie Container orchestrieren, Ausfallsicherheit gewährleisten und Ihre Microservices skalieren. Experimentieren Sie mit weiteren YAML-Dateien und erweitern Sie Ihr Wissen über Container-Orchestrierung.