diff options
Diffstat (limited to 'doc/development/architecture.md')
-rw-r--r-- | doc/development/architecture.md | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/doc/development/architecture.md b/doc/development/architecture.md index 96b70e2fbd8..7a9c3572406 100644 --- a/doc/development/architecture.md +++ b/doc/development/architecture.md @@ -448,7 +448,7 @@ Consul is a tool for service discovery and configuration. Consul is distributed, - [Source](../integration/advanced_search/elasticsearch.md) - [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/elasticsearch.md) - Layer: Core Service (Data) -- GitLab.com: [Get Advanced Search working on GitLab.com (Closed)](https://gitlab.com/groups/gitlab-org/-/epics/153) epic. +- GitLab.com: [Get advanced search working on GitLab.com (Closed)](https://gitlab.com/groups/gitlab-org/-/epics/153) epic. Elasticsearch is a distributed RESTful search engine built for the cloud. @@ -695,7 +695,7 @@ Prometheus exporter for PgBouncer. Exports metrics at 9127/metrics. - [Source](../install/installation.md#6-database) - Layer: Core Service (Data) - Process: `postgresql` -- GitLab.com: [PostgreSQL](../user/gitlab_com/index.md#postgresql) +- GitLab.com: [PostgreSQL](https://about.gitlab.com/handbook/engineering/infrastructure/database/) GitLab packages the popular Database to provide storage for Application meta data and user information. @@ -1101,12 +1101,29 @@ PostgreSQL: GitLab has configuration files located in `/home/git/gitlab/config/*`. Commonly referenced configuration files include: -- `gitlab.yml`: GitLab configuration +- `gitlab.yml`: GitLab Rails configuration - `puma.rb`: Puma web server settings - `database.yml`: Database connection settings GitLab Shell has a configuration file at `/home/git/gitlab-shell/config.yml`. +#### Adding a new setting in GitLab Rails + +Settings which belong in `gitlab.yml` include those related to: + +- How the application is wired together across multiple services. For example, Gitaly addresses, Redis addresses, Postgres addresses, and Consul addresses. +- Distributed Tracing configuration, and some observability configurations. For example, histogram bucket boundaries. +- Anything that needs to be configured during Rails initialization, possibly before the Postgres connection has been established. + +Many other settings are better placed in the app itself, in `ApplicationSetting`. Managing settings in UI is usually a better user experience compared to managing configuration files. With respect to development cost, modifying `gitlab.yml` often seems like a faster iteration, but when you consider all the deployment methods below, it may be a poor tradeoff. + +When adding a setting to `gitlab.yml`: + +1. Ensure that it is also + [added to Omnibus](https://docs.gitlab.com/omnibus/settings/gitlab.yml#adding-a-new-setting-to-gitlabyml). +1. Ensure that it is also [added to Charts](https://docs.gitlab.com/charts/development/style_guide.html), if needed. +1. Ensure that it is also [added to GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/support/templates/gitlab/config/gitlab.yml.erb). + ### Maintenance tasks [GitLab](https://gitlab.com/gitlab-org/gitlab/-/tree/master) provides Rake tasks with which you see version information and run a quick check on your configuration to ensure it is configured properly within the application. See [maintenance Rake tasks](../administration/raketasks/maintenance.md). |