Deployment Guide
Five deployment modes. Same codebase, same config format. Choose based on your scale and infrastructure.
| Mode | Infra | Scaling | Best For |
|---|---|---|---|
| Single Binary | None | Manual | Dev / Testing |
| Docker Cluster | Docker + nginx | Add nodes | Small prod |
| Docker Controller | Docker | Auto | No K8s, need auto-scale |
| K8s Controller | Kubernetes | Auto + HPA | Cloud-native prod |
| K8s Static | Kubernetes | K8s HPA | GitOps / fixed cap |
Single Binary
When: Development, testing, small-scale production
One Drawbridge process manages all accounts with local workers. Optional ValKey for persistence. Simplest setup.
# config.yaml
accounts:
- id: "pro-1"
pool_size: 2
env:
KIRO_API_KEY: "ksk_..."
server:
port: 8080
gateway_secret: "your-secret"Docker Cluster
When: Small production, VPS hosting, Docker Swarm
N identical Drawbridge nodes behind nginx load balancer. Each node manages a subset of accounts. Shared ValKey for coordination.
# config-multi.yaml
accounts:
- id: "pro-1"
pool_size: 2
node: "node-1"
- id: "pro-2"
pool_size: 2
node: "node-2"
redis:
url: "redis://valkey:6379"Docker Controller
When: Container orchestration without Kubernetes
Drawbridge dynamically creates/destroys worker containers via Docker API. Account CRUD triggers immediate provisioning.
# config.yaml
controller:
enabled: true
reconcile_interval: 30s
runtime:
type: docker
docker:
network: drawbridge-net
image: drawbridge/kiro-worker:latest
redis:
url: "redis://valkey:6379"Kubernetes Controller
When: Cloud-native production (EKS, GKE, on-prem K8s)
Full Kubernetes deployment via Helm chart. Controller dynamically creates worker Pods. RBAC, HPA, and PDB included.
# values.yaml overrides
controller:
enabled: true
runtime:
type: kubernetes
kubernetes:
namespace: drawbridge
image: drawbridge/kiro-worker:latest
cpu_limit_millis: 2000
mem_limit_bytes: 2147483648
valkey:
enabled: trueKubernetes Static
When: GitOps, fixed capacity, no dynamic provisioning needed
Pre-defined Worker Deployments managed by Kubernetes. No RBAC required. HPA handles scaling. Best for predictable workloads.
# values.yaml overrides
controller:
enabled: false
workers:
enabled: true
replicas: 3
resources:
limits:
cpu: "2"
memory: "2Gi"