Websockets (interactive terminal and Actioncable) on Kubernetes
## Interactive Terminal
Interactive terminal is currently running on the git https Kubernetes nodes https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/228 . This epic will move this traffic over to a new dedicated node pool for websocket traffic.
## Actioncable
As a first step towards the goal of the Real-Time Working Group, shipping [real-time assignee updates](https://gitlab.com/gitlab-org/gitlab/-/issues/17589) to self-hosted customers, we would like to maintain open web socket connections when viewing issues on gitlab.com.
To accomplish this it is advisable to proxy WebSocket requests to separate nodes, isolated from the current Web/API nodes. These will use [Action Cable](https://guides.rubyonrails.org/action_cable_overview.html) initially and by building in observability from the start we should be able to get an idea of the number of simultaneous connections we'll need to support and the resources required to do so.
Following a suggestion made in the WG, since it's a brand new feature, we can take a Kubernetes-first approach using the [migration of Sidekiq](https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/143) as a precedent. This issue is intended to help us identify, split and track the work.
We have decided to run actioncable in-app, meaning that actioncable requests will be served by workhorse and rails.
## Status
:hourglass: In Progress
## Blockers
* nginx ingress upgrade - https://gitlab.com/gitlab-org/charts/gitlab/-/issues/2377
* webservice deployment split - https://gitlab.com/gitlab-org/charts/gitlab/-/issues/2334
## Milestones
* [x] Traffic split capability is complete
* [x] Readiness Review complete
* [x] Bypass nginx tested
* [x] New Deployment/nodepool created in all environments
* [x] haproxy reconfigured appropriately in staging
* [x] haproxy reconfigured appropriately in production
* [x] Monitoring for websockets is added
* [x] ActionCable enabled in production
* [x] Retrospective finished
* [x] [Post migration analysis of traffic and scaling](https://gitlab.com/gitlab-com/gl-infra/delivery/-/issues/1509)
## DRI's
* @jarv
* @skarbek
## Issues
Use the below template to apply to all issues associated with this epic
```
/epic &355
/label ~kubernetes ~team::Delivery ~"workflow-infra::Triage" ~"Delivery::P3" ~"Delivery team::Planning"
```
epic