apiVersion: v1 kind: Secret metadata: name: wt-secrets namespace: warthunder stringData: DATABASE_URL: "postgresql://admin:geheim123@postgres-service:5432/warthunder" --- apiVersion: apps/v1 kind: Deployment metadata: name: wt-tracker-app namespace: warthunder spec: replicas: 1 selector: matchLabels: app: wt-tracker template: metadata: labels: app: wt-tracker spec: imagePullSecrets: - name: github-auth containers: - name: streamlit image: ghcr.io/unreg-hdw/wt-tracker:v1 ports: - containerPort: 8501 env: - name: DATABASE_URL valueFrom: secretKeyRef: name: wt-secrets key: DATABASE_URL --- apiVersion: v1 kind: Service metadata: name: wt-tracker-service namespace: warthunder spec: selector: app: wt-tracker ports: - protocol: TCP port: 80 # Der Port, auf dem der Service innerhalb des Clusters erreichbar ist targetPort: 8501 # Der Port der Streamlit-App im Container --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wt-tracker-ingress namespace: warthunder annotations: # Traefik Einstiegspunkt traefik.ingress.kubernetes.io/router.entrypoints: web # WICHTIG: Erlaubt Websockets für Streamlit traefik.ingress.kubernetes.io/router.middlewares: "warthunder-wt-tracker-stripprefix@kubernetescrd" spec: rules: - host: wt.unreg-hdw.de # Deine Domain http: paths: - path: / pathType: Prefix backend: service: name: wt-tracker-service port: number: 80 # Hier IMMER den Port des Services nehmen (nicht den targetPort)