summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Lambert <joshua@gitlab.com>2019-05-03 12:26:42 -0400
committerJoshua Lambert <joshua@gitlab.com>2019-05-03 12:26:42 -0400
commit7fca61832e313c8b866c3d1b1c780e1912313f2a (patch)
tree92e792f7217a1989a74f8fa06bf5d1975fec1cb3
parentffae94e5b8988b91da6a9b09b4a3d08d757de620 (diff)
downloadgitlab-ce-7fca61832e313c8b866c3d1b1c780e1912313f2a.tar.gz
Add GitLab chart information
-rw-r--r--doc/development/architecture.md82
1 files changed, 45 insertions, 37 deletions
diff --git a/doc/development/architecture.md b/doc/development/architecture.md
index 6ff79805239..e256d9c5fcd 100644
--- a/doc/development/architecture.md
+++ b/doc/development/architecture.md
@@ -213,15 +213,15 @@ To serve repositories over SSH there's an add-on application called gitlab-shell
```mermaid
graph TB
- HTTP(HTTP/HTTPS) -- TCP 80, 443 --> NGINX
- SSH((SSH)) --TCP 22 --> GitLabShell(GitLab Shell)
+ HTTP[HTTP/HTTPS] -- TCP 80, 443 --> NGINX(NGINX)
+ SSH --TCP 22 --> GitLabShell(GitLab Shell)
SMTP(SMTP Gateway)
- subgraph Omnibus GitLab EE
- GitLabShell --TCP 8080 -->Unicorn("Unicorn (GitLab Rails)")
+ subgraph GitLab
+ GitLabShell --TCP 8080 -->Unicorn["Unicorn (GitLab Rails)"]
GitLabShell --> Gitaly
GitLabShell --> Redis
- Unicorn --> PgBouncer
+ Unicorn --> PgBouncer(PgBouncer)
Unicorn --> Redis
Unicorn --> Gitaly
Redis --> Sidekiq
@@ -232,8 +232,8 @@ graph TB
Gitaly --> Redis
NGINX --> GitLabWorkhorse
NGINX -- TCP 8090 --> GitLabPages(GitLab Pages)
- NGINX --> Grafana
- Grafana -- TCP 9090 --> Prometheus
+ NGINX --> Grafana(Grafana)
+ Grafana -- TCP 9090 --> Prometheus(Prometheus)
Prometheus -- TCP 80, 443 --> Unicorn
RedisExporter(Redis Exporter) --> Redis
Prometheus -- TCP 9121 --> RedisExporter
@@ -246,14 +246,16 @@ graph TB
GitLabMonitor --> PostgreSQL
GitLabMonitor --> GitLabShell
GitLabMonitor --> Sidekiq
- PgBouncer --> Consul
+ PgBouncer --> Consul(Consul)
PostgreSQL --> Consul
PgBouncer --> PostgreSQL
- NGINX --> Registry
+ NGINX --> Registry(Registry)
Unicorn --> Registry
- NGINX --> Mattermost
+ NGINX --> Mattermost(Mattermost)
Mattermost --- Unicorn
Prometheus --> Alertmanager
+ Migrations --> PostgreSQL
+ Runner(Runner) --> NGINX
end
HTTPK8s(HTTP/HTTPS) -- TCP 80, 443 --> LoadBalancerK8s(Load Balancer)
@@ -281,10 +283,10 @@ graph TB
Alertmanager -- TCP 25 --> SMTP
Sidekiq -- TCP 25 --> SMTP
Unicorn -- TCP 25 --> SMTP
- Unicorn -- TCP 443 --> ObjectStorage(Object Storage)
- Sidekiq -- TCP 443 --> ObjectStorage(Object Storage)
- GitLabWorkhorse -- TCP 443 --> ObjectStorage(Object Storage)
- Registry -- TCP 443 --> ObjectStorage(Object Storage)
+ Unicorn -- TCP 443 --> ObjectStorage("Object Storage (Required for Chart)")
+ Sidekiq -- TCP 443 --> ObjectStorage
+ GitLabWorkhorse -- TCP 443 --> ObjectStorage
+ Registry -- TCP 443 --> ObjectStorage
classDef defaultoff stroke-dasharray: 5, 5
class ElasticSearch defaultoff
@@ -305,32 +307,38 @@ class SMTP defaultoff
class ObjectStorage defaultoff
```
-| Component | Description | On by Default | Required | CE/EE | Configuration |
-| --------- | ----------- |:-------------:|:--------:|:--------:| --------------------- |
-| NGINX | Routes requests to appropriate components, terminates SSL | ✅ | | CE & EE | [NGINX Settings](https://docs.gitlab.com/omnibus/settings/nginx.html) |
-| Unicorn (GitLab Rails) | Handles requests for the web interface and API | ✅ | ✅ | CE & EE | [Unicorn specific settings](https://docs.gitlab.com/omnibus/settings/unicorn.html), for general GitLab Rails settings search for `gitlab_rails` in the Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) |
-| Sidekiq | Background jobs processor | ✅ | ✅ | CE & EE | Search for `sidekiq` in Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) |
-| Gitaly | Git RPC service for handling all git calls made by GitLab | ✅ | ✅ | CE & EE | [Gitaly Settings](https://docs.gitlab.com/ee/administration/gitaly/) |
-| GitLab Workhorse | Smart reverse proxy, handles large HTTP requests | ✅ | ✅ | CE & EE | Search for `gitlab_workhorse` in Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) |
-| GitLab Shell | Handles `git` over SSH sessions | ✅ | ✅ | CE & EE | Search for `gitlab_shell` in Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) |
-| GitLab Pages | Hosts static websites | | | CE & EE | [Pages Settings](https://docs.gitlab.com/ee/administration/pages/) |
-| Registry | Container registry, allows pushing and pulling of images | | | CE & EE | [Registry settings](https://docs.gitlab.com/ee/administration/container_registry.html#container-registry-domain-configuration) |
-| Redis | Caching service | ✅ | ✅ | CE & EE | [Redis Settings](https://docs.gitlab.com/omnibus/settings/redis.html) |
-| PostgreSQL | Database | ✅ | ✅ | CE & EE | [Database settings](https://docs.gitlab.com/omnibus/settings/database.html) |
-| PgBouncer | Database connection pooling, failover | | | EE Only | [PgBouncer settings](https://docs.gitlab.com/ee/administration/high_availability/pgbouncer.html) |
-| Consul | Database node discovery, failover | | | EE Only| [Consul settings](https://docs.gitlab.com/ee/administration/high_availability/consul.html) |
-| Prometheus | Time-series database, metrics collection, and query service | ✅ | | CE & EE | [Prometheus settings](https://docs.gitlab.com/ee/administration/monitoring/prometheus/)|
-| Prometheus Alertmanager | Deduplicates, groups, and routes alerts from Prometheus | ✅ | | CE & EE | Search for `alertmanager` in Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template)|
-| Grafana | Metrics dashboard | | | CE & EE | [Grafana settings](https://docs.gitlab.com/ee/administration/monitoring/performance/grafana_configuration.html) |
-| Redis Exporter | Prometheus endpoint with Redis metrics | ✅ | | CE & EE | [Redis Exporter settings](https://docs.gitlab.com/ee/administration/monitoring/prometheus/redis_exporter.html) |
-| PostgreSQL Exporter | Prometheus endpoint with PostgreSQL metrics | ✅ | | CE & EE | [PostgreSQL Exporter](https://docs.gitlab.com/ee/administration/monitoring/prometheus/postgres_exporter.html) |
-| PgBouncer Exporter | Prometheus endpoint with PgBouncer metrics | | | CE & EE | [PgBouncer Exporter settings](https://docs.gitlab.com/ee/administration/monitoring/prometheus/pgbouncer_exporter.html) |
-| GitLab Monitor | Tracks a variety of GitLab metrics | ✅ | | CE & EE | [GitLab Monitor settings](https://docs.gitlab.com/ee/administration/monitoring/prometheus/gitlab_monitor_exporter.html)|
-| Mattermost | Open-source Slack alternative | | | CE & EE | [Mattermost settings](https://docs.gitlab.com/omnibus/gitlab-mattermost/) |
-| ElasticSearch | Advanced search engine | | | EE Only | [Elasticsearch settings](https://docs.gitlab.com/ee/integration/elasticsearch.html) |
+| Component | Description | On by Default | Required | CE/EE | Omnibus / Chart | Omnibus Configuration | Chart Configuration |
+| --------- | ----------- |:-------------:|:--------:|:-----:| --------------- | --------------------- | ------------------- |
+| NGINX | Routes requests to appropriate components, terminates SSL | ✅ | | CE & EE | Omnibus & Chart | [NGINX Settings](https://docs.gitlab.com/omnibus/settings/nginx.html) | [NGINX Ingress settings](https://docs.gitlab.com/charts/charts/nginx/index.html) |
+| Unicorn (GitLab Rails) | Handles requests for the web interface and API | ✅ | ✅ | CE & EE | Omnibus & Chart | [Unicorn specific settings](https://docs.gitlab.com/omnibus/settings/unicorn.html), for general GitLab Rails settings search for `gitlab_rails` in the Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) | [Unicorn chart settings](https://docs.gitlab.com/charts/charts/gitlab/unicorn/index.html) |
+| Sidekiq | Background jobs processor | ✅ | ✅ | CE & EE | Omnibus & Chart | Search for `sidekiq` in Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) | [Sidekiq chart settings](https://docs.gitlab.com/charts/charts/gitlab/sidekiq/index.html) |
+| Gitaly | Git RPC service for handling all git calls made by GitLab | ✅ | ✅ | CE & EE | Omnibus & Chart | [Gitaly Settings](https://docs.gitlab.com/ee/administration/gitaly/) | [Gitaly chart settings](https://docs.gitlab.com/charts/charts/gitlab/gitaly/index.html) |
+| GitLab Workhorse | Smart reverse proxy, handles large HTTP requests | ✅ | ✅ | CE & EE | Omnibus & Chart | Search for `gitlab_workhorse` in Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) | Workhorse settings are included in the [Unicorn chart](https://docs.gitlab.com/charts/charts/gitlab/unicorn/index.html) |
+| GitLab Shell | Handles `git` over SSH sessions | ✅ | ✅ | CE & EE | Omnibus & Chart | Search for `gitlab_shell` in Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) | [Gitlab-Shell chart settings](https://docs.gitlab.com/charts/charts/gitlab/gitlab-shell/index.html) |
+| GitLab Pages | Hosts static websites | | | CE & EE | Omnibus | [Pages Settings](https://docs.gitlab.com/ee/administration/pages/) | Pages is currently [not supported](https://gitlab.com/charts/gitlab/issues/37) |
+| Registry | Container registry, allows pushing and pulling of images | Chart ✅ | | CE & EE | Omnibus & Chart | [Registry settings](https://docs.gitlab.com/ee/administration/container_registry.html#container-registry-domain-configuration) | [Registry chart settings](https://docs.gitlab.com/charts/charts/registry/index.html) |
+| Redis | Caching service | ✅ | ✅ | CE & EE | Omnibus & Chart | [Redis Settings](https://docs.gitlab.com/omnibus/settings/redis.html) | [Redis chart settings](https://docs.gitlab.com/charts/charts/redis/index.html) |
+| PostgreSQL | Database | ✅ | ✅ | CE & EE | Omnibus & Chart | [Database settings](https://docs.gitlab.com/omnibus/settings/database.html) | Upstream [Postgres chart settings](https://github.com/helm/charts/tree/master/stable/postgresql) |
+| PgBouncer | Database connection pooling, failover | | | EE Only | Omnibus | [PgBouncer settings](https://docs.gitlab.com/ee/administration/high_availability/pgbouncer.html) | |
+| Consul | Database node discovery, failover | | | EE Only | Omnibus | [Consul settings](https://docs.gitlab.com/ee/administration/high_availability/consul.html) | |
+| Prometheus | Time-series database, metrics collection, and query service | ✅ | | CE & EE | Omnibus & Chart | [Prometheus settings](https://docs.gitlab.com/ee/administration/monitoring/prometheus/)| Upstream [Prometheus chart settings](https://github.com/helm/charts/tree/master/stable/prometheus) |
+| Prometheus Alertmanager | Deduplicates, groups, and routes alerts from Prometheus | ✅ | | CE & EE | Omnibus & Chart | Search for `alertmanager` in Omnibus [`gitlab.rb` configuration file](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template)| Included in upstream [Prometheus chart settings](https://github.com/helm/charts/tree/master/stable/prometheus) |
+| Grafana | Metrics dashboard | | | CE & EE | Omnibus | [Grafana settings](https://docs.gitlab.com/ee/administration/monitoring/performance/grafana_configuration.html) | |
+| Redis Exporter | Prometheus endpoint with Redis metrics | ✅ | | CE & EE | Omnibus & Chart | [Redis Exporter settings](https://docs.gitlab.com/ee/administration/monitoring/prometheus/redis_exporter.html) | Included in [Redis chart](https://docs.gitlab.com/charts/charts/redis/index.html) |
+| PostgreSQL Exporter | Prometheus endpoint with PostgreSQL metrics | ✅ | | CE & EE | Omnibus & Chart | [PostgreSQL Exporter](https://docs.gitlab.com/ee/administration/monitoring/prometheus/postgres_exporter.html) | Included in upstream [Postgres chart](https://github.com/helm/charts/tree/master/stable/postgresql) |
+| PgBouncer Exporter | Prometheus endpoint with PgBouncer metrics | | | CE & EE | Omnibus | [PgBouncer Exporter settings](https://docs.gitlab.com/ee/administration/monitoring/prometheus/pgbouncer_exporter.html) |
+| GitLab Monitor | Tracks a variety of GitLab metrics | ✅ | | CE & EE | Omnibus | [GitLab Monitor settings](https://docs.gitlab.com/ee/administration/monitoring/prometheus/gitlab_monitor_exporter.html)| Currently [not supported in charts](https://gitlab.com/charts/gitlab/issues/319) |
+| Mattermost | Open-source Slack alternative | | | CE & EE | Omnibus | [Mattermost settings](https://docs.gitlab.com/omnibus/gitlab-mattermost/) | Currently [not included](https://gitlab.com/charts/gitlab/issues/251) |
+| ElasticSearch | Advanced search engine | | | EE Only | Omnibus & Chart | [Elasticsearch settings](https://docs.gitlab.com/ee/integration/elasticsearch.html) | [Elasticsearch settings](https://docs.gitlab.com/ee/integration/elasticsearch.html) |
+| Minio | In-cluster object storage | | | CE & EE | Chart | | [Minio configuration](https://docs.gitlab.com/charts/charts/minio/index.html) |
+| Runner | Executes GitLab CI jobs | Chart ✅ | | CE & EE | Omnibus & Chart | [Download and configuration instructions](https://docs.gitlab.com/runner/) | [Runner settings](https://docs.gitlab.com/charts/charts/gitlab/gitlab-runner/index.html)
+| Migrations | Response for database migrations in Charts | ✅ | ✅ | CE & EE | Chart | | [Migration settings](https://docs.gitlab.com/charts/charts/gitlab/migrations/index.html) |
+| Cert-Manager | Certificate management, Let's Encrypt | ✅ | | CE & EE | Chart | | [TLS settings](https://docs.gitlab.com/charts/installation/tls.html) |
A typical install of GitLab will be on GNU/Linux. It uses Nginx or Apache as a web front end to proxypass the Unicorn web server. By default, communication between Unicorn and the front end is via a Unix domain socket but forwarding requests via TCP is also supported. The web front end accesses `/home/git/gitlab/public` bypassing the Unicorn server to serve static pages, uploads (e.g. avatar images or attachments), and precompiled assets. GitLab serves web pages and a [GitLab API](https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/api) using the Unicorn web server. It uses Sidekiq as a job queue which, in turn, uses redis as a non-persistent database backend for job information, meta data, and incoming jobs.
+We also support deploying GitLab on Kubernetes using our [gitlab Helm chart](https://docs.gitlab.com/charts/).
+
The GitLab web app uses MySQL or PostgreSQL for persistent database information (e.g. users, permissions, issues, other meta data). GitLab stores the bare git repositories it serves in `/home/git/repositories` by default. It also keeps default branch and hook information with the bare repository.
When serving repositories over HTTP/HTTPS GitLab utilizes the GitLab API to resolve authorization and access as well as serving git objects.