Initial commit from template

This commit is contained in:
Lumina
2025-12-23 04:19:57 +01:00
commit b3d8fe8dfe
76 changed files with 10491 additions and 0 deletions

220
.claude/commands/deploy.md Normal file
View File

@@ -0,0 +1,220 @@
# Deployment Assistent
Du bist ein Experte für das Deployment von Next.js Anwendungen mit Docker und Kubernetes.
## Deployment Optionen
### 1. Lokales Development
```bash
# Dependencies installieren
pnpm install
# Environment Variables
cp .env.example .env.local
# .env.local bearbeiten
# Development Server starten
pnpm dev
```
### 2. Docker Deployment
#### Docker Image bauen
```bash
# Production Image bauen
docker build -t lumina-app:latest .
# Mit spezifischem Tag
docker build -t lumina-app:v1.0.0 .
# Lokaler Test
docker run -p 3000:3000 --env-file .env.local lumina-app:latest
```
#### Docker Compose (empfohlen für lokales Testing)
```bash
# Alle Services starten
docker-compose up -d
# Logs ansehen
docker-compose logs -f app
# Services stoppen
docker-compose down
# Mit Volume Cleanup
docker-compose down -v
```
### 3. Harbor Registry
```bash
# Bei Harbor einloggen
docker login harbor.advisori.de
# Image taggen
docker tag lumina-app:latest harbor.advisori.de/lumina/PROJECT_ID:latest
docker tag lumina-app:latest harbor.advisori.de/lumina/PROJECT_ID:v1.0.0
# Pushen
docker push harbor.advisori.de/lumina/PROJECT_ID:latest
docker push harbor.advisori.de/lumina/PROJECT_ID:v1.0.0
```
### 4. Kubernetes Deployment
#### Voraussetzungen
```bash
# Namespace erstellen
kubectl create namespace lumina-apps
# Harbor Pull Secret
kubectl create secret docker-registry harbor-registry-secret \
--docker-server=harbor.advisori.de \
--docker-username=YOUR_USERNAME \
--docker-password=YOUR_PASSWORD \
--namespace=lumina-apps
# Application Secrets
kubectl create secret generic app-secrets \
--from-literal=DATABASE_URL="postgresql://..." \
--from-literal=SUPABASE_URL="https://..." \
--from-literal=SUPABASE_ANON_KEY="..." \
--from-literal=SUPABASE_SERVICE_ROLE_KEY="..." \
--namespace=lumina-apps
```
#### Helm Deployment
```bash
# In das Helm Chart Verzeichnis wechseln
cd helm/lumina-app
# Dry-run zum Testen
helm upgrade --install app . \
--namespace lumina-apps \
--set image.repository=harbor.advisori.de/lumina/PROJECT_ID \
--set image.tag=latest \
--dry-run
# Tatsächliches Deployment
helm upgrade --install app . \
--namespace lumina-apps \
--set image.repository=harbor.advisori.de/lumina/PROJECT_ID \
--set image.tag=v1.0.0 \
--set ingress.hosts[0].host=app.advisori.de \
--set ingress.tls[0].hosts[0]=app.advisori.de
# Status prüfen
helm status app -n lumina-apps
```
#### Kubectl Management
```bash
# Pods anzeigen
kubectl get pods -n lumina-apps
# Logs ansehen
kubectl logs -f deployment/app -n lumina-apps
# In Pod exec
kubectl exec -it deployment/app -n lumina-apps -- /bin/sh
# Restart Deployment
kubectl rollout restart deployment/app -n lumina-apps
# Rollback
helm rollback app -n lumina-apps
```
### 5. CI/CD Pipeline (Gitea Actions)
```yaml
# .gitea/workflows/deploy.yml
name: Build and Deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to Harbor
uses: docker/login-action@v3
with:
registry: harbor.advisori.de
username: ${{ secrets.HARBOR_USERNAME }}
password: ${{ secrets.HARBOR_PASSWORD }}
- name: Build and Push
uses: docker/build-push-action@v5
with:
push: true
tags: |
harbor.advisori.de/lumina/${{ github.event.repository.name }}:latest
harbor.advisori.de/lumina/${{ github.event.repository.name }}:${{ github.sha }}
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Deploy to K8s
uses: azure/k8s-deploy@v4
with:
namespace: lumina-apps
manifests: helm/lumina-app
images: harbor.advisori.de/lumina/${{ github.event.repository.name }}:${{ github.sha }}
```
## Troubleshooting
### Container startet nicht
```bash
# Pod Status
kubectl describe pod POD_NAME -n lumina-apps
# Container Logs
kubectl logs POD_NAME -n lumina-apps --previous
```
### Ingress funktioniert nicht
```bash
# Ingress Status
kubectl get ingress -n lumina-apps
# Ingress Details
kubectl describe ingress app -n lumina-apps
```
### Health Check Fehler
```bash
# Health Endpoint testen
kubectl port-forward svc/app 3000:80 -n lumina-apps
curl http://localhost:3000/api/health
```
## Environment Variables Checkliste
| Variable | Beschreibung | Erforderlich |
|----------|--------------|--------------|
| `NODE_ENV` | production | Ja |
| `NEXT_PUBLIC_SUPABASE_URL` | Supabase URL | Ja |
| `NEXT_PUBLIC_SUPABASE_ANON_KEY` | Anon Key | Ja |
| `SUPABASE_SERVICE_ROLE_KEY` | Service Key | Ja |
| `DATABASE_URL` | PostgreSQL URL | Optional |
---
Frage den Benutzer: Wie möchtest du deployen?
- Lokal mit Docker Compose
- Auf Kubernetes Cluster
- CI/CD Pipeline einrichten