Support Standalone Action Cable in Helm Charts
Summary
We introduced support for running Action Cable in a standalone Puma server (in a separate docker container called actioncable
) in gitlab-org/build/CNG!444 (merged).
In order to support deployment of Action Cable on gitlab.com, and generally via Kubernetes, we should make this container configurable in the Helm charts.
See also: #2043 (closed)
It's also possible to run Action Cable in embedded mode in the webservice
container by passing an environment variable and proxying WebSocket connections to it. This work is being tracked in #2286 (closed).
Detail
In Omnibus
- Action Cable is disabled by default;
- Action Cable is enabled in Omnibus using the
actioncable['enabled']
setting; - By default, a separate Action Cable server is started that only serves WebSocket connections, and
- Action Cable thread pool size is configured with the
actioncable['worker_pool_size']
.
In CNG
- A separate
actioncable
container exists, which can be scaled independently; - Action Cable can be run in embedded mode and configured on the
webservice
container by using theACTION_CABLE_IN_APP
andACTION_CABLE_WORKER_POOL_SIZE
envvars (see #2286 (closed)), and - Workhorse accepts a
cableBackend
argument which accepts a service name and port and can proxy WebSocket requests to the correct service.
An example of a setup proxying requests to a webservice
container running embedded Action Cable is in the CNG docker-compose.yml file. A previous version of this file supported running the actioncable
service and proxying WebSocket requests to it.
Currently, Action Cable is only supported for the Puma server, not Unicorn.
Proposal
Modify GitLab helm chart to allow configuration of Action Cable in standalone modes.