User:Yuvipanda/Dynamic http routing

From Wikitech

Dynamic HTTP routing is the ability to route incoming HTTP traffic for various hostnames to arbitrary ports on arbitrary hosts. This is primarily intended for labs.

Use Cases

The primary use cases are

  1. Replacement for instanceproxy!
  2. Let tools on the Grid Engine serve the web

Progress

  1. Acquire an instance, with a public IP Yes Done (Instance proxy-project on project project-proxy)
  2. Setup puppet on it Yes Done
  3. Install Redis on it (via puppet) Yes Done
  4. Install latest and greatest nginx Yes Done
  5. Install latest and greatest lua modules for nginx Yes Done
  6. Install lua-nginx modules for accessing redis Yes Done
  7. Make nginx route to different hosts/ports (upstreams) based on data from redis Yes Done
  8. Add a wikitech interface for managing this service
    1. Create a new special page in OpenStackManager called Special:LoadBalancer
    2. Manage tenancy via projects and roles via OpenStackNovaUser::inRole and OpenStackNovaUser::inProject functions; see other OpenStackManager special pages for an example
    3. Make calls directly to redis, managing per-project service information elsewhere in redis
    4. Eventually replace direct redis access with API calls, passing keystone tokens
  9. Create a basic API with keystone support
  10. Using OAuth support in keystone (lands in havana) allow tools service to modify config for tools services