Allow Geo secondaries to override application settings
Description
Geo secondaries operate on a read-only replica of the primary's database. This includes the application_settings
table, which has a number of fields we might want to contain different values on the secondary node. These include (but aren't limited to):
- elasticsearch server
- sentry dsn
- metrics servers
In addition, there are a number of gitlab.yml settings that we are blocked from moving into the database because of Geo's need for them to be configurable per-node, particularly object storage settings.
Proposal
We could add an application_settings_overrides
table to the tracking database and allow secondaries to add fields there. Keeping its schema synchronized with the main application_settings
table would be painful, but beyond moving to a key-value schema or introducing a separate key-value database for application settings, I'm struggling to think of a better idea.