Skip to content

Light weight, performant, resilient, container scaling solution with service discovery and proxying.

License

Notifications You must be signed in to change notification settings

AirPipeIO/orbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orbit

What is Orbit

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!

Why?

  • 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.

Feature Highlights

  • 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)
    • Resource-based scaling with configurable thresholds
    • Relative CPU metrics support
  • 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

Getting Started

Prerequisites

  • Linux x86_64 or aarch64 (other platforms may work but are not officially supported)
  • Docker (for now)

Quick Installation

Basic Configuration

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.

Documentation

Contributing

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

Community

Discord - Join our community chat

Project Goals

  • 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

License

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.

About

Light weight, performant, resilient, container scaling solution with service discovery and proxying.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages