Skip to content

Conversation

@lu-roth
Copy link

@lu-roth lu-roth commented Dec 12, 2025

Add Kubernetes Deployment Example

Overview

This PR adds production-ready Kubernetes manifests for deploying Solidtime to any Kubernetes cluster, providing an alternative to the existing Docker Compose examples.

What's Included

Kubernetes Manifests:

  • Namespace, Secrets, and ConfigMap for configuration
  • PersistentVolumeClaim for shared storage
  • App Deployment (2 replicas) with automatic database migrations
  • Queue Worker Deployment for background jobs
  • Scheduler CronJob for Laravel scheduled tasks
  • Gotenberg service for PDF generation
  • Ingress with automatic TLS certificate provisioning

Documentation:

  • Quick start README following existing examples structure
  • Comprehensive GUIDE with configuration, monitoring, and troubleshooting

Key Features

✅ Production-tested with external PostgreSQL database
✅ Automatic database migrations via init container
✅ High availability with 2 app replicas
✅ Proper Laravel scheduler implementation as CronJob
✅ Health checks and resource limits configured
✅ Well-documented with troubleshooting guide
✅ Template-based configuration (no sensitive data)

Technical Highlights

  • Storage Strategy: PVC mounts at /var/www/html/storage/app to preserve framework directories from image
  • Service Communication: Uses Kubernetes DNS (servicename.namespace.svc.cluster.local)
  • Environment Variables: Matches docker-compose configuration with Kubernetes-specific adaptations

Testing

Deployed and verified on production cluster:

  • ✅ All components working (app, queue, scheduler, gotenberg)
  • ✅ Automatic migrations
  • ✅ TLS certificate provisioning
  • ✅ Multi-replica deployment with shared storage

Prerequisites for Users

  • Kubernetes v1.19+
  • Nginx Ingress Controller
  • Cert-manager
  • External PostgreSQL database
  • ReadWriteMany storage class

This configuration enables Solidtime deployment on any Kubernetes platform (GKE, EKS, AKS, self-hosted) and is ready for use by the community.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant