Commit 16d1887f authored by Joshua Lambert's avatar Joshua Lambert

Merge branch 'jplum/revamp-arch-component-diagram' into 'master'

Docs: Revamp architecture components dia

See merge request gitlab-org/gitlab!64818
parents 7ab0e933 8e9464e5
...@@ -111,72 +111,186 @@ https://docs.google.com/drawings/d/1fBzAyklyveF-i-2q-OHUIqDkYfjjxC4mq5shwKSZHLs/ ...@@ -111,72 +111,186 @@ https://docs.google.com/drawings/d/1fBzAyklyveF-i-2q-OHUIqDkYfjjxC4mq5shwKSZHLs/
### Component diagram ### Component diagram
```mermaid ```mermaid
graph TB graph LR
%% Anchor items in the appropriate subgraph.
HTTP[HTTP/HTTPS] -- TCP 80, 443 --> NGINX[NGINX] %% Link them where the destination* is.
SSH -- TCP 22 --> GitLabShell[GitLab Shell]
SMTP[SMTP Gateway] subgraph Clients
Geo[GitLab Geo Node] -- TCP 22, 80, 443 --> NGINX Browser((Browser))
Git((Git))
GitLabShell --TCP 8080 -->Puma["Puma (GitLab Rails)"] end
GitLabShell --> Praefect
Puma --> PgBouncer[PgBouncer] %% External Components / Applications
Puma --> Redis Geo{{GitLab Geo}} -- TCP 80, 443 --> HTTP
Puma --> Praefect Geo -- TCP 22 --> SSH
Sidekiq --> Redis Geo -- TCP 5432 --> PostgreSQL
Sidekiq --> PgBouncer Runner{{GitLab Runner}} -- TCP 443 --> HTTP
Sidekiq --> Praefect K8sAgent{{GitLab Kubernetes Agent}} -- TCP 443 --> HTTP
GitLabWorkhorse[GitLab Workhorse] --> Puma
GitLabWorkhorse --> Redis %% GitLab Application Suite
GitLabWorkhorse --> Praefect subgraph GitLab
Praefect --> Gitaly subgraph Ingress
NGINX --> GitLabWorkhorse HTTP[[HTTP/HTTPS]]
NGINX -- TCP 8090 --> GitLabPages[GitLab Pages] SSH[[SSH]]
NGINX --> Grafana[Grafana] NGINX[NGINX]
NGINX -- TCP 8150 --> GitLabKas[GitLab Kubernetes Agent Server] GitLabShell[GitLab Shell]
GitLabKas --> Praefect
Grafana -- TCP 9090 --> Prometheus[Prometheus] %% inbound/internal
Prometheus -- TCP 80, 443 --> Puma Browser -- TCP 80,443 --> HTTP
RedisExporter[Redis Exporter] --> Redis Git -- TCP 80,443 --> HTTP
Prometheus -- TCP 9121 --> RedisExporter Git -- TCP 22 --> SSH
PostgreSQLExporter[PostgreSQL Exporter] --> PostgreSQL HTTP -- TCP 80, 443 --> NGINX
PgBouncerExporter[PgBouncer Exporter] --> PgBouncer SSH -- TCP 22 --> GitLabShell
Prometheus -- TCP 9187 --> PostgreSQLExporter end
Prometheus -- TCP 9100 --> NodeExporter[Node Exporter]
Prometheus -- TCP 9168 --> GitLabExporter[GitLab Exporter] subgraph GitLab Services
Prometheus -- TCP 9127 --> PgBouncerExporter %% inbound from NGINX
GitLabExporter --> PostgreSQL NGINX --> GitLabWorkhorse
GitLabExporter --> GitLabShell NGINX -- TCP 8090 --> GitLabPages
GitLabExporter --> Sidekiq NGINX -- TCP 8150 --> GitLabKas
PgBouncer --> Consul NGINX --> Registry
PostgreSQL --> Consul %% inbound from GitLabShell
PgBouncer --> PostgreSQL GitLabShell --TCP 8080 -->Puma
NGINX --> Registry
Puma --> Registry %% services
NGINX --> Mattermost Puma["Puma (GitLab Rails)"]
Mattermost --- Puma Puma <--> Registry
Prometheus --> Alertmanager GitLabWorkhorse[GitLab Workhorse] <--> Puma
Migrations --> PostgreSQL GitLabKas[GitLab Kubernetes Agent Server] --> GitLabWorkhorse
Runner -- TCP 443 --> NGINX GitLabPages[GitLab Pages] --> GitLabWorkhorse
Puma -- TCP 9200 --> Elasticsearch Mailroom
Sidekiq -- TCP 9200 --> Elasticsearch Sidekiq
Sidekiq -- TCP 80, 443 --> Sentry end
Puma -- TCP 80, 443 --> Sentry
Sidekiq -- UDP 6831 --> Jaeger subgraph Integrated Services
Puma -- UDP 6831 --> Jaeger %% Mattermost
Gitaly -- UDP 6831 --> Jaeger Mattermost
GitLabShell -- UDP 6831 --> Jaeger Mattermost ---> GitLabWorkhorse
GitLabWorkhorse -- UDP 6831 --> Jaeger NGINX --> Mattermost
Alertmanager -- TCP 25 --> SMTP
Sidekiq -- TCP 25 --> SMTP %% Grafana
Puma -- TCP 25 --> SMTP Grafana
Puma -- TCP 369 --> LDAP NGINX --> Grafana
Sidekiq -- TCP 369 --> LDAP end
Puma -- TCP 443 --> ObjectStorage["Object Storage"]
Sidekiq -- TCP 443 --> ObjectStorage subgraph Metadata
GitLabWorkhorse -- TCP 443 --> ObjectStorage %% PostgreSQL
Registry -- TCP 443 --> ObjectStorage PostgreSQL
Geo -- TCP 5432 --> PostgreSQL PostgreSQL --> Consul
%% Consul and inbound
Consul
Puma ---> Consul
Sidekiq ---> Consul
Migrations --> PostgreSQL
%% PgBouncer and inbound
PgBouncer
PgBouncer --> Consul
PgBouncer --> PostgreSQL
Sidekiq --> PgBouncer
Puma --> PgBouncer
end
subgraph State
%% Redis and inbound
Redis
Puma --> Redis
Sidekiq --> Redis
GitLabWorkhorse --> Redis
Mailroom --> Redis
GitLabKas --> Redis
%% Sentinel and inbound
Sentinel <--> Redis
Puma --> Sentinel
Sidekiq --> Sentinel
GitLabWorkhorse --> Sentinel
Mailroom --> Sentinel
GitLabKas --> Sentinel
end
subgraph Git Repositories
%% Gitaly / Praefect
Praefect --> Gitaly
GitLabKas --> Praefect
GitLabShell --> Praefect
GitLabWorkhorse --> Praefect
Puma --> Praefect
Sidekiq --> Praefect
Praefect <--> PraefectPGSQL[PostgreSQL]
%% Gitaly makes API calls
%% Ordered here to ensure placement.
Gitaly --> GitLabWorkhorse
end
subgraph Storage
%% ObjectStorage and inbound traffic
ObjectStorage["Object Storage"]
Puma -- TCP 443 --> ObjectStorage
Sidekiq -- TCP 443 --> ObjectStorage
GitLabWorkhorse -- TCP 443 --> ObjectStorage
Registry -- TCP 443 --> ObjectStorage
GitLabPages -- TCP 443 --> ObjectStorage
end
subgraph Monitoring
%% Prometheus
Grafana -- TCP 9090 --> Prometheus[Prometheus]
Prometheus -- TCP 80, 443 --> Puma
RedisExporter[Redis Exporter] --> Redis
Prometheus -- TCP 9121 --> RedisExporter
PostgreSQLExporter[PostgreSQL Exporter] --> PostgreSQL
PgBouncerExporter[PgBouncer Exporter] --> PgBouncer
Prometheus -- TCP 9187 --> PostgreSQLExporter
Prometheus -- TCP 9100 --> NodeExporter[Node Exporter]
Prometheus -- TCP 9168 --> GitLabExporter[GitLab Exporter]
Prometheus -- TCP 9127 --> PgBouncerExporter
Prometheus --> Alertmanager
GitLabExporter --> PostgreSQL
GitLabExporter --> GitLabShell
GitLabExporter --> Sidekiq
%% Alertmanager
Alertmanager -- TCP 25 --> SMTP
end
%% end subgraph GitLab
end
subgraph External
subgraph External Services
SMTP[SMTP Gateway]
LDAP
%% Outbound SMTP
Sidekiq -- TCP 25 --> SMTP
Puma -- TCP 25 --> SMTP
Mailroom -- TCP 25 --> SMTP
%% Outbound LDAP
Puma -- TCP 369 --> LDAP
Sidekiq -- TCP 369 --> LDAP
%% Elasticsearch
Elasticsearch
Puma -- TCP 9200 --> Elasticsearch
Sidekiq -- TCP 9200 --> Elasticsearch
end
subgraph External Monitoring
%% Sentry
Sidekiq -- TCP 80, 443 --> Sentry
Puma -- TCP 80, 443 --> Sentry
%% Jaeger
Jaeger
Sidekiq -- UDP 6831 --> Jaeger
Puma -- UDP 6831 --> Jaeger
Gitaly -- UDP 6831 --> Jaeger
GitLabShell -- UDP 6831 --> Jaeger
GitLabWorkhorse -- UDP 6831 --> Jaeger
end
%% end subgraph External
end
click Alertmanager "./architecture.html#alertmanager" click Alertmanager "./architecture.html#alertmanager"
click Praefect "./architecture.html#praefect" click Praefect "./architecture.html#praefect"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment