Orbit is a simple, lightweight solution for scaling containers with built-in service discovery and proxying.
Note: Orbit is under active development. While it's being used in production environments, features and APIs may change as we continue to improve the project. We encourage you to try it out and provide feedback!
- Docker swarm has no autoscaling, Kubernetes has a large learning and management overhead and substantially larger footprint.
- Scaling containers shouldn't need complex infra or dependencies
- Air Pipe runs a shared-nothing architecture, so our original goal was just to have a simple single binary we could run at our edge and scale HTTP/TCP based containers without the management burden or introducing further additional dependencies to an existing project.
- Written in async Rust for high performance and reliability
- Lightweight - currently <5MB
- Utilizes Cloudflare's Pingora framework for:
- Load balancing with health checks
- Automatic failover
- High-performance proxying
- Service Discovery:
- Automatic container registration
- Dynamic proxy configuration
- Container Management:
- Intelligent Autoscaling:
- CoDel-based (controlled delay) adaptive scaling for latency management (experimental)
- See https://en.wikipedia.org/wiki/CoDel for more
- Resource-based scaling with configurable thresholds
- Relative CPU metrics support
- CoDel-based (controlled delay) adaptive scaling for latency management (experimental)
- Health Monitoring:
- TCP health checks
- Customizable health check parameters
- Automatic container recovery
- Resource Management:
- Flexible resource limits (CPU, Memory)
- Network rate limiting
- Volume management with multiple types
- Rolling Updates(experimental):
- Automated image update detection
- Zero-downtime deployments
- Configuration:
- Simple YAML-based service definitions
- Hot reload support
- Flexible resource limits and thresholds
- Monitoring:
- Prometheus metrics integration
- Detailed service and container statistics
- Linux x86_64 or aarch64 (other platforms may work but are not officially supported)
- Mac binary is available in releases
- Docker (for now)
- Download the latest release
- Start Orbit
- orbit -c /path/to/configs
Create a service configuration file (e.g., web-service.yml
):
name: web-service
instance_count:
min: 2
max: 5
pull_policy: Always
spec:
containers:
- name: web
image: airpipeio/infoapp:latest
ports:
- port: 80
node_port: 30080
See our Configuration Reference for detailed documentation of all available options.
- Configuration Reference - Detailed configuration options
- API Reference - API endpoints and usage
- Examples - Various example configurations
- Contributing - How to contribute to Orbit
We welcome contributions! Please see our Contributing Guide for details on:
- Setting up your development environment
- Our coding standards
- The pull request process
- Running tests
Discord - Join our community chat
- Maintain simplicity while adding useful features
- Keep resource usage minimal
- Keep small footprint
- Support additional container runtimes
- Implement commonly requested features from for eg. Docker Swarm or Kubernetes
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details. The Apache License 2.0 provides additional protections for users and contributors, including explicit patent rights grants.