4.4 Deployment Details
In diesem Abschnitt werden die spezifischen Kubernetes-Manifeste beschrieben, die für die Bereitstellung der Applikation verwendet werden. Diese Manifeste steuern die Konfiguration und das Verhalten der verschiedenen Komponenten der Anwendung und gewährleisten eine strukturierte Orchestrierung.
Namespace-Definition
Datei: namespace.yaml
Der Namespace eventgallery dient der Isolation aller Ressourcen, die zur Applikation gehören. Dadurch wird eine klare Trennung von anderen Diensten im Cluster gewährleistet.
apiVersion: v1
kind: Namespace
metadata:
name: eventgallery
Backend Deployment
Datei: backend-deployment.yaml
Das Backend Deployment stellt die zentrale Logik der Applikation bereit und unterstützt mehrere Replikate, um die Verfügbarkeit zu gewährleisten. Zusätzlich wurde ein HorizontalPodAutoscaler (HPA) hinzugefügt, um die Skalierbarkeit der Pods basierend auf der CPU-Auslastung zu gewährleisten.
Wichtige Konfigurationen
- Image:
ghcr.io/noluchs/sem4-eventgallery/eventgallery-backend:latest - Replikate: 2
- Ports: 5000 (HTTP)
- Secrets: Verwendet
backend-secretfür sensible Informationen wie Datenbankzugangsdaten.
Deployment-Konfiguration:
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
namespace: eventgallery
spec:
replicas: 2
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend
image: ghcr.io/noluchs/sem4-eventgallery/eventgallery-backend:latest
ports:
- containerPort: 5000
envFrom:
- configMapRef:
name: backend-config
- secretRef:
name: backend-secret
HorizontalPodAutoscaler
Zusätzlich wird die Anzahl der Backend-Pods durch einen HPA dynamisch angepasst.
HPA-Konfiguration:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: backend-hpa
namespace: eventgallery
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: backend
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
Frontend Deployment
Datei: frontend-deployment.yaml
Das Frontend Deployment ermöglicht Benutzern den Zugriff auf die Applikation und stellt die Benutzeroberfläche bereit. Zusätzlich wurde ein HorizontalPodAutoscaler (HPA) hinzugefügt, um die Skalierbarkeit der Pods basierend auf der CPU-Auslastung zu gewährleisten.
Wichtige Konfigurationen
- Image:
ghcr.io/noluchs/sem4-eventgallery/eventgallery-frontend:latest - Replikate: 2
- Ports: 3000 (HTTP)
- Verbindung: Die API-URL wird über eine ConfigMap bereitgestellt.
Deployment-Konfiguration:
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
namespace: eventgallery
spec:
replicas: 2
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: ghcr.io/noluchs/sem4-eventgallery/eventgallery-frontend:latest
ports:
- containerPort: 3000
envFrom:
- configMapRef:
name: frontend-config
HorizontalPodAutoscaler
Zusätzlich wird die Anzahl der Frontend-Pods durch einen HPA dynamisch angepasst.
HPA-Konfiguration:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: frontend-hpa
namespace: eventgallery
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: frontend
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
Datenbank-Service und Deployment
Dateien: mysql-service.yaml und mysql-deployment.yaml
MySQL Deployment
Das MySQL Deployment stellt die relationale Datenbank bereit, die von der Applikation genutzt wird.
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
namespace: eventgallery
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: root-password
MySQL Service
Der Service ermöglicht den Zugriff auf die MySQL-Datenbank innerhalb des Clusters.
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: eventgallery
spec:
ports:
- port: 3306
targetPort: 3306
selector:
app: mysql
Secrets und ConfigMaps
Backend Secrets
Datei: backend-secret.yaml
Speichert sensible Informationen wie Datenbankzugangsdaten und API-Schlüssel.
apiVersion: v1
kind: Secret
metadata:
name: backend-secret
namespace: eventgallery
stringData:
db-password: supersecretpassword
api-key: my-api-key
Backend ConfigMap
Datei: backend-config.yaml
Definiert Umgebungsvariablen für das Backend.
apiVersion: v1
kind: ConfigMap
metadata:
name: backend-config
namespace: eventgallery
data:
DB_HOST: mysql.eventgallery.svc.cluster.local
DB_PORT: "3306"
Mit diesen Konfigurationsdateien wird die gesamte Anwendung orchestriert und bereitgestellt. Die vollständigen Manifeste sind im Repository verfügbar: SEM4-EVENTGALLERY Kubernetes Manifeste.