Skip to content

sapcc/andromeda

Repository files navigation

andromeda

Platform agnostic GSLB frontend with OpenStack-like API

Andromeda is a OpenStack like REST API Fronted for Global Loadbalancing as a Service (GLbaaS). It can support multiple backends, called provider. Features:

  • Multi-tenant capable
  • keystone authentication
  • OpenStack policy files
  • Prometheus metrics
  • Rate limiting
  • OpenStack like Quota API
  • Multiple Database backends supported
    • PostgreSQL
    • MariaDB (Warning, MySQL/Percona is not supported)
    • CockroachDB

Currently it supports following provider:

  • F5 BigIP DNS
  • Akamai

API Documentation: https://sapcc.github.io/andromeda/

CLI Client

Andromeda provides a reference CLI client called m31ctl that uses the REST API of Andromeda.

Running Requirements

  • go 1.19
  • NATS
  • SQL Database (PostgreSQL/MariaDB/CockroachDB)

Optional development requirements (needed to re-create meta sources)

Build

  • Build andromeda and m31ctl: $ make
  • Rebuild swagger metafiles: $ make swagger

Example Architecture

flowchart TB
    A[User region A] -->|Rest API| C(andromeda-api)
    B[User region B] -->|Rest API| D(andromeda-api)
    M[User region C] -->|Rest API| O(andromeda-api)
    C & D & O <--> NATS
    C ---> db1[(Database)]
    D ----> db2[(Database)]
    O ---> db3[(Database)]
    
    subgraph Distributed Database
    
    db1 ---|sync| db2
    db2 ---|sync| db3
    end
    subgraph NATS
    N[NATS message bus]
    end

    
    NATS --> andromeda-worker-1
    NATS --> andromeda-worker-2
    NATS --> andromeda-worker-3

License