Part of the plan to kill Gridengine is to switch webservices to kubernetes. This goal is to allow a commandline switch that allows this to happen!
So I think the basic work structure of this goal is essentially two 'streams' that can kind of proceed independently:
- Solidfiy and improve our k8s infrastructure
- Roll out the newer webservice code (which is mostly already written)
When both are completed, then there's the work of tying them together, by writing a kubernetes spawner for webservice.
Tentatively, I'd like us to have rolled out the new webservice code before end of April, and our kubernetes install pretty solid by end of May.
Ok, so the new webservice code has been fully rolled out!
- Whitelist only our registry
- Provide k8s credentials for all tools
- Build a php5.6 + lighttpd debian based container
- Figure out API client to use for k8s (maybe write a small one)
- Write a k8s backend for webservice!
- Move one php webservice to k8s! nagf is a good choice here, since it's already on k8s.
tools.wmflabs.org/nagf is now running using the desired deployment process. I did it by hand, so that needs to be rolled onto the webservice package, and that's it.
- Refactor toollabs-webservice so it can have multiple backends
- Implement k8s backend for toollabs-webservice that starts/stops/restarts services
- Provide .kube/config credentials for everyone (needs us to write a generator)
When done, to move to k8s, a tool author would need to simply do:
webservice --backend=gridengine stop webservice --backend=k8s --environment=[php|java|python|precise|trusty|...] start
The --environment variable will provide new options with images based on debian jessie, as well as backwards compatibility options (precise/trusty, with our current set of packages). All those would need to be built and registered. Right now there's a php and java one.