Zum Inhalt

Deployment

Der Shop wird als Docker-Container gebaut und über Helm-Charts auf Kubernetes deployed. Die CI/CD-Pipeline läuft auf GitLab CI.

Docker

Image-Build

docker build -t registry.gitlab.com/FrankHennige/shop .

Das Image basiert auf python:3.13-slim und enthält: - Django-App unter /app/shop - Gunicorn als WSGI-Server - Granian (optional, für Async) - Alle Python-Dependencies aus uv.lock

Docker-Compose (Entwicklung)

docker-compose.yml definiert die Service-Landschaft:

Service Beschreibung
site Django (Gunicorn) auf Port 8000
celery-worker Asynchrone Tasks
celery-beat Periodische Tasks (Scheduler)
redis Cache + Message-Broker
postgres PostgreSQL 16
# Entwicklungsumgebung starten
docker-compose up -d

# Migrationen anwenden
docker exec shop_site_1 python manage.py migrate

# Logs verfolgen
docker-compose logs -f site

Docker-Compose Override

docker-compose.override.yml.example enthält: - Bind-Mounts für Live-Entwicklung - Port-Weiterleitungen - Umgebungsvariablen

CI/CD (GitLab)

Pipeline-Struktur

# .gitlab-ci.yml + .gitlab-ci/

stages:
  - test       # pytest, mypy, ruff
  - build      # Docker-Image
  - deploy     # Helm-Deployment

Quality Gates

Stage Tool Regel
Lint ruff check Zero errors
Format ruff format Line-length=100
Typing mypy + diff-cover 100% Qualität vs. origin/main
Tests pytest + coverage Alle Tests, --reuse-db
Build docker build Multi-stage, kein Cache-Bruch

Local ausführen

cd /home/fh/PycharmProjects/shop
uv run tox -p          # Alle Gates parallel
uv run tox -e test     # Nur Tests
uv run tox -e mypy     # Nur Typ-Check

Release-Automatisierung

Semantic Release über .releaserc.yml: - Commit-Nachrichten folgen Conventional Commits - feat: → Minor-Bump - fix: → Patch-Bump - BREAKING CHANGE: → Major-Bump - Tag + Changelog + GitLab Release werden automatisch erstellt

Helm-Charts

Helm-Charts liegen im helm/-Verzeichnis und definieren:

Ressource Beschreibung
Deployment App-Container mit Resource-Limits
Service Cluster-interne Erreichbarkeit
Ingress Traefik-Routing mit TLS
ConfigMap Nicht-sensitive Konfiguration
Secret Sensitive Werte (DB-Passwort, API-Keys)
HPA Autoscaling (CPU/Memory)
CronJob Wartungs-Jobs (z.B. Session-Cleanup)

Umgebungen

Umgebung Zweck Erreichbarkeit
dev.lan Entwicklung Internes Netzwerk (192.168.100.180)
Staging Vorproduktionstests staging.kelemidis.de
Produktion Live-Shop kelemidis.de

Code-Promotion

feature-branch → main → Staging → Produktion
     │              │          │
     CI-Tests     CI+Deploy   Manueller Trigger

Monitoring

Siehe Monitoring für Details zu: - OpenTelemetry Tracing - Loki + Grafana Log-Analyse - Metriken und Alerting - Health-Check-Endpoints

Wichtige Dateien

Datei Zweck
Dockerfile Multi-stage Image-Build
docker-compose.yml Entwicklungsumgebung
docker-compose.override.yml.example Dev-Override-Vorlage
docker-entrypoint.sh Container-Entrypoint
.gitlab-ci.yml Pipeline-Definition
.gitlab-ci/ Pipeline-Templates
helm/ Kubernetes-Deployment
.releaserc.yml Semantic Release
pyproject.toml Projekt-Metadaten + Tool-Konfiguration
tox.ini Lokale Quality-Gate-Ausführung