diff options
author | Joshua Lambert <joshua@gitlab.com> | 2019-05-03 12:26:42 -0400 |
---|---|---|
committer | Joshua Lambert <joshua@gitlab.com> | 2019-05-03 12:26:42 -0400 |
commit | 7fca61832e313c8b866c3d1b1c780e1912313f2a (patch) | |
tree | 92e792f7217a1989a74f8fa06bf5d1975fec1cb3 | |
parent | ffae94e5b8988b91da6a9b09b4a3d08d757de620 (diff) | |
download | gitlab-ce-7fca61832e313c8b866c3d1b1c780e1912313f2a.tar.gz |
Add GitLab chart information
-rw-r--r-- | doc/development/architecture.md | 82 |
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. |