Skip to content

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 the ACTION_CABLE_IN_APP and ACTION_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.

Edited by John Hope