Story #13497
Updated by Tom Clegg over 6 years ago
h2. Background This is the first an early step toward retiring the Rails API server (#9053). It unblocks: * implementing new APIs in Go (without increasing the discovery/routing burden in every client/SDK) * porting individual APIs to Go (without having to update all clients/SDKs each time, or proxy requests through Rails) * federation routing (#13493) Related goal: * refactor existing Go services as packages so they can be used in unit tests h2. Objective This initial version changes the way requests are routed inside an API server node. * Before: client → Nginx → arvados-api-server * After: client → Nginx → arvados-controller arvados-router → arvados-api-server This version does *not* add or change any new API endpoints, port any existing API endpoints to Go, or implement load balancing or service discovery. For example: * Request and response headers are passed through blindly * All requests are proxied to one single arvados-api-server (Rails) service at the configured address and port (typically localhost:8000) h2. Requirements Load configuration from the cluster configuration document from #12260. There will be no arvados-controller arvados-router config file.