Plumbs drain_wait into tcp_router, and reconfigures the haproxy health monitor to support conditionally failing (when in drain mode) so that load balancers will remove it from service.
Adds a post-start script based on gorouter's that will wait until load balancers have had time to re-add nodes to the pool before moving onto the next instance, to ensure there's always at least one healthy tcp router in the load balancing pool during deploys.
Backward Compatibility
Breaking Change? No. The new properties have sane defaults. The drain + post-start scripts require no operator intervention. Deploy times will be slightly longer, but availability will be much higher for tcp-routes during deploys.
Summary
Plumbs drain_wait into tcp_router, and reconfigures the haproxy health monitor to support conditionally failing (when in drain mode) so that load balancers will remove it from service.
Adds a post-start script based on gorouter's that will wait until load balancers have had time to re-add nodes to the pool before moving onto the next instance, to ensure there's always at least one healthy tcp router in the load balancing pool during deploys.
Backward Compatibility
Breaking Change? No. The new properties have sane defaults. The drain + post-start scripts require no operator intervention. Deploy times will be slightly longer, but availability will be much higher for tcp-routes during deploys.