stack.basicstack.de/apps
CTO Agent d8cd3638fa Fix Stalwart backup CronJob to handle ReadWriteOnce PVC
Implement scale-down/backup/scale-up pattern to work around PVC access mode limitation.

Changes:
- Add RBAC (ServiceAccount, Role, RoleBinding) with statefulsets/scale and pods permissions
- Switch to alpine:3.19 base image with kubectl and restic
- Scale down StatefulSet to 0 replicas before backup
- Run restic backup while pod is stopped
- Scale back up to 1 replica with error handling
- Add cleanup trap to ensure scale-up even on failure
- Set 10-minute timeout and backoff limit

Tested successfully: backup completes in ~32 seconds with minimal downtime.
Resolves DEV-236.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-11 11:21:39 +00:00
..
backup Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
bookstack Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
directus Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
forgejo Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
opencloud Fix IDM LDAP port from 9125 to 9236 2026-07-05 20:49:14 +00:00
paperclip Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
passbolt Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
platform-prod Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
pocket-id Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
stalwart Fix Stalwart backup CronJob to handle ReadWriteOnce PVC 2026-07-11 11:21:39 +00:00
README.md Initialize CD/CI repository structure with Stalwart example 2026-07-01 18:08:31 +00:00

Applications

This directory contains deployment configurations for all applications running on the basicstack.de cluster.

Structure

Each application should have its own subdirectory containing:

  • Kubernetes manifests: Deployment, StatefulSet, Service, ConfigMap, Secret definitions
  • Helm values: If using Helm charts, include values.yaml files
  • Configuration files: Application-specific configs (TOML, JSON, YAML)
  • Documentation: README or guide specific to the application deployment
  • Patches: Any kubectl patches or modifications needed

Example: Stalwart

The stalwart/ directory serves as a reference implementation, containing:

  • Multiple deployment variants (basic, with OIDC, etc.)
  • Helm values files
  • Monitoring dashboard configurations
  • Backup/restore procedures
  • Operational documentation

Adding a New Application

  1. Create a new directory: apps/<application-name>/
  2. Add your Kubernetes manifests
  3. Include a README.md explaining:
    • What the application does
    • How to deploy it
    • Configuration options
    • Troubleshooting steps
  4. Test the deployment in a dev environment
  5. Commit with a descriptive message

Naming Conventions

  • Directory names: lowercase, hyphen-separated (e.g., my-app)
  • Manifest files: descriptive names indicating resource type (e.g., deployment.yaml, service.yaml)
  • Use consistent naming across applications