Using a single redis.yml for configuring GitLab Rails
This issue will build on the work done in &887 (closed).
Problem
With config/redis.yml
providing a way for configuration overriding (greatly reducing Redis provisioning toil and delivery velocity by "bypassing" omnibus+charts), we now have several options to configure a Redis instance class in GitLab Rails. In a recent change to add encrypted secrets, it became apparent that the multiple fallbacks can become difficult to reason about.
For example, DbLoadBalancing
has SharedState
set as its fallback config, so its config priority goes like this:
-
redis.yml
withdb_load_balancing
key redis.db_load_balancing.yml
-
redis.shared_state.yml
(shared state is the fallback) -
redis.yml
withshared_state
key resque.yml
Proposed solution
This can be simplified to the following by deprecating redis.xxx.yml
files and only using the redis.yml
with fallback to resque.yml
:
-
redis.yml
withdb_load_balancing
key -
redis.yml
withshared_state
key (shared state is the fallback) resque.yml
To achieve this, we will need omnibus-gitlab and charts to inject the existing Redis configurations into redis.yml
into the xxx
key instead of redis.xxx.yml
.