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 Done (Instance proxy-project on project project-proxy)
  2. Setup puppet on it Done
  3. Install Redis on it (via puppet) Done
  4. Install latest and greatest nginx Done
  5. Install latest and greatest lua modules for nginx Done
  6. Install lua-nginx modules for accessing redis Done
  7. Make nginx route to different hosts/ports (upstreams) based on data from redis 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