Multi-Workload Support
Run PHP, Python, Node.js, and Django on the same Kubernetes cluster. Each domain gets its own container with the right runtime, proxy mode, and resource limits.
Supported Workload Types
Admin-configurable runtimes with dedicated container images per version
PHP
The most popular web runtime. PHP-FPM with FastCGI proxy to nginx. Configurable memory limits, execution time, upload size, and FPM pool settings.
Python
Run Flask, FastAPI, or any WSGI/ASGI application. Nginx reverse proxies to Gunicorn with configurable workers and settings.
Node.js
Deploy Express, Next.js, Nuxt, or any Node.js application. Nginx reverse proxies to your app with WebSocket support and caching.
Django
First-class Django support. Pre-configured for Gunicorn with static file serving, database connectivity, and WSGI configuration.
How It Works
Every domain gets a purpose-built container deployment
Choose Workload
When creating a domain, select the workload type and version from admin-configured options. The UI dynamically loads available versions.
Domain CR Created
Django creates a Kubernetes Domain Custom Resource with the workload spec: type, version, container image, port, and proxy mode.
Operator Deploys
The Kopf operator watches for the CR and creates the deployment: app container, nginx sidecar, SFTP container, and optional Redis cache.
Smart Proxy
Nginx is auto-configured with the right proxy mode: FastCGI for PHP-FPM, HTTP proxy for Python/Node.js, or uWSGI for WSGI apps.
Proxy Mode Configuration
Nginx is automatically configured based on the workload type
| Proxy Mode | Use Case | Nginx Directive | Default Port |
|---|---|---|---|
| FastCGI | PHP-FPM | fastcgi_pass 127.0.0.1:9001 |
9001 |
| HTTP | Python (Gunicorn), Node.js, Django | proxy_pass http://127.0.0.1:8000 |
8000 / 3000 |
| uWSGI | Python WSGI applications | uwsgi_pass 127.0.0.1:8000 |
8000 |
Admin-Configurable Runtimes
Add custom workload types and versions through the Django admin
WorkloadType Model
Define runtime types with name, slug, default port, proxy mode, default resource limits, and display order. Activate or deactivate types without code changes.
- Custom name and icon
- Configurable proxy mode
- Default CPU and memory limits
- Active/inactive toggle
WorkloadVersion Model
Define specific versions per workload type with custom container images. Override default resource limits per version. Set defaults and control availability.
- Custom container image URL
- Version-specific resource overrides
- Default version per type
- Dynamic version loading API
Host Any Web Application
From WordPress to Django, Express to FastAPI. One cluster, every workload.