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 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: NeverWichtig: 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-databaseMit 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: NeverStarten 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-domainNach 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 imageskönnen Sie prüfen, ob das Imagecs548/clinic-databaseexistiert. - Fehlerbehebung: Nutzen Sie
kubectl describe podundkubectl logs, um Probleme zu diagnostizieren. - Datenbankverbindung testen: Von Ihrem Laptop aus können Sie mit
psql -h localhost -p <NodePort> -U clinicuserdie 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.