This service deploys to the shared single-node k3s staging cluster. Before touching staging, read the shared ops docs — they are the source of truth for the cluster's quirks:
CREATEROLE → Redis RESP2 → NetworkPolicy → actuator probe paths → manual CD dispatch when CI ends failure on a non-blocking job).local-path PV; this is the recovery (quiesce → recreate stranded PVCs → re-run the CREATEROLE grant → staggered bring-up).cd /Users/sarkout/projects/prive/europeLogin
# Full stack (requires built images)
docker-compose up --build
# Infrastructure only (for local dev)
docker-compose -f docker-compose.local.yml up -d
Services:
europe-login-db — Postgres 15 on port 5434europe-login-redis — Redis 7 on port 6380backend — Spring Boot on port 8091frontend — nginx serving Angular on port 4301The frontend nginx config (frontend/europe-login-portal/nginx.conf) proxies /api/ to http://backend:8091 inside the Docker network.
# Backend
cd backend
docker build -t ghcr.io/mahmoudholding/europe-login/backend:local .
# Frontend
cd frontend/europe-login-portal
docker build -t ghcr.io/mahmoudholding/europe-login/frontend:local --target production .
136.144.174.219 (Debian 13)ssh -i ~/.ssh/id_ed25519 sarkoutmahmoud@136.144.174.219europe-login (prod), europe-login-staging (staging)helm/# Production
helm upgrade --install europe-login helm/ \
--namespace europe-login \
--set image.backend.tag=sha-<commit> \
--set image.frontend.tag=sha-<commit>
# Staging
helm upgrade --install europe-login helm/ \
--namespace europe-login-staging \
--set image.backend.tag=sha-<commit> \
--set image.frontend.tag=sha-<commit>
PR merged to develop → staging auto-deploys
PR merged to main → production auto-deploys
See .github/workflows/deploy-backend.yml and deploy-frontend.yml.
Production secrets: 1Password → Bitnami Sealed Secrets → k3s
| Secret field | Purpose |
|-------------|---------|
| database-password | PostgreSQL |
| jwt-secret | JWT signing key (≥32 chars, base64) |
| redis-password | Redis auth |
| bsn-encryption-key | AES-256 key for BSN encryption (exactly 32 chars) |
| psd2-secret-id | GoCardless API secret ID |
| psd2-secret-key | GoCardless API secret key |
| kvk-api-key | KvK.nl API key |
To update sealed secrets:
OP_SERVICE_ACCOUNT_TOKEN=<token> ./scripts/seal-secrets.sh
git add k8s/sealed-secrets/
git commit -m "chore: update sealed secrets"
git push
GET /actuator/health → 200 when healthyGET /actuator/prometheusGET /swagger-ui.htmlhelm rollback europe-login 1 --namespace europe-login
Reacties