Preview Environments That Actually Work for Full-Stack Apps
Automatic preview environments with real databases for every Pull Request. The open-source, self-hosted alternative to Vercel and Qovery.
Sound Familiar?
These common challenges slow down development teams every day.
Staging is Broken Again
Shared environments are constantly in a broken state from competing changes.
Can't Review Without Pulling
Reviewers need to checkout code locally just to see UI changes.
Frontend-Only Previews
Existing tools don't support full-stack apps with real databases.
$500-2000/month for SaaS
Enterprise preview tools are expensive and lock you into their platform.
How It Works
Add preview environments to your repo in three simple steps.
Add Config File
Create a k8s-ee.yaml in your repo root to define your app and databases.
Add Workflow
Copy our reusable GitHub Actions workflow that handles the entire lifecycle.
Open a PR
Every PR automatically gets a unique preview URL with isolated resources.
Everything You Need
Full-stack preview environments with all the bells and whistles.
Database per PR
PostgreSQL, MongoDB, Redis, MariaDB, and MinIO. Each PR gets isolated databases.
Built-in Observability
Prometheus metrics, Loki logs, and pre-built Grafana dashboards out of the box.
Secure by Default
Network policies, RBAC, Sealed Secrets. Each environment is completely isolated.
Fast Deployments
From PR open to live URL in under 10 minutes. Includes database provisioning.
Auto Cleanup
Environments are automatically destroyed when PRs are merged or closed.
Cost Effective
Run on your own infrastructure for ~$120/month instead of $500-2000 for SaaS.
Simple Config
One YAML file defines everything. No complex setup or configuration needed.
GitHub Native
GitHub Actions, PR comments with preview URLs, and status checks integration.
How We Compare
See how K8s-EE stacks up against other preview environment solutions.
| Feature | K8s-EE | Vercel | Netlify | Qovery |
|---|---|---|---|---|
| Full-stack apps | ||||
| Database per PR | ||||
| Self-hosted | ||||
| Open source | Partial | |||
| Built-in observability | ||||
| Monthly cost | ~$120 | $150-600 | $99-500 | $300-1500 |
Simple Configuration
Define your entire environment in a single YAML file. Enable databases, configure health checks, and customize resources with just a few lines.
- Choose from PostgreSQL, MongoDB, Redis, MinIO, or MariaDB
- Automatic health check monitoring
- Resource quotas calculated automatically
- Database migrations and seeding supported
projectId: myapp
app:
port: 3000
healthPath: /health
replicas: 1
databases:
postgresql: true
redis: true
mongodb: true
minio: true
env:
NODE_ENV: production
LOG_LEVEL: info
Built-in Observability
Every environment comes with pre-configured Grafana dashboards for monitoring your application.
Real Grafana dashboards from a live PR environment
Architecture
See how K8s-EE creates isolated environments for each Pull Request.
Each namespace contains: App pods, Database instances, Network policies, Resource quotas, and Ingress rules.
View Full ArchitectureFrequently Asked Questions
Got questions? We've got answers.
Initial setup takes about 30 minutes to 1 hour, depending on your Kubernetes experience. After that, adding preview environments to a new repository takes less than 5 minutes—just add two files (config + workflow) and you're done.
K8s-EE supports PostgreSQL (via CloudNativePG), MongoDB, Redis, MariaDB, and MinIO for S3-compatible object storage. You can enable any combination of these in your config file.
Currently, K8s-EE is designed for GitHub Actions and GitHub repositories. Support for GitLab CI and Bitbucket Pipelines is on the roadmap for future releases.
A single VPS capable of running 3-5 simultaneous PR environments costs around $100-150/month from providers like Oracle Cloud, Hetzner, or DigitalOcean. This is significantly cheaper than SaaS alternatives that charge $500-2000/month.
Yes! K8s-EE has completed Phase 1 and Phase 2 development with 34 implemented user stories. It includes security features like network policies, RBAC, resource quotas, and organization allowlists. The platform is actively maintained and used in real projects.
The environment is automatically destroyed, including all databases and storage. A cleanup job also runs every 6 hours to catch any orphaned namespaces. You can also use the /preserve command to keep an environment running for up to 48 hours after the PR is closed.
Ready to Ship Faster?
Join the teams using K8s-EE to streamline their development workflow.