From b35cc9a9ea4f740a51f9d9f9a3f31c0fbad7fe63 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Thu, 25 Mar 2021 10:18:15 +0000 Subject: [PATCH 01/11] Update 10k RA docs hybrid section Section uses clearer terminology and follows the latest sizing recommendations --- .../reference_architectures/10k_users.md | 64 +++++++++++-------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 434cf6ae223557..8b923c053d3616 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2349,29 +2349,43 @@ considered and customer technical support will be considered out of scope. -## Cloud Native Deployment (optional) +## Hybrid Reference Architecture with Helm Charts (Alternative) + +As an alternative approach you can also run select components in Kubernetes +via our official [Helm Charts](https://docs.gitlab.com/charts/). + +In this setup we support running the equivalent of GitLab Rails and Sidekiq nodes +in a Kubernetes cluster, named Webservice and Sidekiq respectively. In addition to +this several other supporting services, such as Grafana, NGINX, etc... are also +supported here. + +Note that the listed components above are the **only** components we support running +in Kubernetes and all other components should continue to be run via Omnibus or +alternatively on PAAS services such as AWS RDS for Database, etc... Hybrid installations leverage the benefits of both cloud native and traditional -deployments. We recommend shifting the Sidekiq and Webservice components into -Kubernetes to reap cloud native workload management benefits while the others -are deployed using the traditional server method already described. +deployments together. By shifting the Sidekiq and Webservice components into +Kubernetes you can reap certain cloud native workload management benefits while +the others are deployed in compute VMs with Omnibus as described above in this +page. -The following sections detail this hybrid approach. +It should be noted though that this is an advanced setup. Running services in +Kubernetes is well known to be complex. **This setup is only recommended** if +you have strong working knowledge and experience in Kubernetes. The rest of this +section will assume this. ### Cluster topology -The following table provides a starting point for hybrid -deployment infrastructure. The recommendations use Google Cloud's Kubernetes Engine (GKE) +The following table provides a starting point for the hybrid +environment. The recommendations use Google Cloud's Kubernetes Engine (GKE) and associated machine types, but the memory and CPU requirements should translate to most other providers. Machine count | Machine type | Allocatable vCPUs | Allocatable memory (GB) | Purpose -|-|-|-|- -2 | `n1-standard-4` | 7.75 | 25 | Non-GitLab resources, including Grafana, NGINX, and Prometheus -4 | `n1-standard-4` | 15.5 | 50 | GitLab Sidekiq pods 4 | `n1-highcpu-32` | 127.5 | 118 | GitLab Webservice pods - -"Allocatable" in this table refers to the amount of resources available to workloads deployed in Kubernetes _after_ accounting for the overhead of running Kubernetes itself. +4 | `n1-standard-4` | 15.5 | 50 | GitLab Sidekiq pods +2 | `n1-standard-4` | 7.75 | 25 | Non-GitLab supporting resources, including Grafana, NGINX, and Prometheus ### Resource usage settings @@ -2379,29 +2393,29 @@ The following formulas help when calculating how many pods may be deployed withi The [10k reference architecture example values file](https://gitlab.com/gitlab-org/charts/gitlab/-/blob/master/examples/ref/10k.yaml) documents how to apply the calculated configuration to the Helm Chart. +#### Webservice + +Webservice pods typically need about 1 vCPU and 1.125 GB of memory _per worker_. +Each Webservice pod will consume roughly 4 vCPUs and 4.5 GB of memory using +the [recommended topology](#cluster-topology) because four worker processes +are created by default and each pod has other small processes running. + +The [provided recommendations](#cluster-topology) allow the deployment of up to 20 +Webservice pods. Expand available resources using the ratio of 1 vCPU to 1.125 GB of memory +_per each worker process_ for each additional Webservice pod. + +For further information on resource usage, see the [Webservice resources](https://docs.gitlab.com/charts/charts/gitlab/webservice/#resources). + #### Sidekiq Sidekiq pods should generally have 1 vCPU and 2 GB of memory. [The provided starting point](#cluster-topology) allows the deployment of up to -16 Sidekiq pods. Expand available resources using the 1vCPU to 2GB memory +16 Sidekiq pods. Expand available resources using the 1 vCPU to 2GB memory ratio for each additional pod. For further information on resource usage, see the [Sidekiq resources](https://docs.gitlab.com/charts/charts/gitlab/sidekiq/#resources). -#### Webservice - -Webservice pods typically need about 1 vCPU and 1.25 GB of memory _per worker_. -Each Webservice pod will consume roughly 2 vCPUs and 2.5 GB of memory using -the [recommended topology](#cluster-topology) because two worker processes -are created by default. - -The [provided recommendations](#cluster-topology) allow the deployment of up to 28 -Webservice pods. Expand available resources using the ratio of 1 vCPU to 1.25 GB of memory -_per each worker process_ for each additional Webservice pod. - -For further information on resource usage, see the [Webservice resources](https://docs.gitlab.com/charts/charts/gitlab/webservice/#resources). -
Back to setup components -- GitLab From 43c2d2321ccc6617922e8ecd2a68d15f54b3473c Mon Sep 17 00:00:00 2001 From: Grant Young Date: Thu, 25 Mar 2021 10:45:07 +0000 Subject: [PATCH 02/11] Add in Puma worker guidance in 10k RA docs --- doc/administration/reference_architectures/10k_users.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 8b923c053d3616..3a0b00e1c29300 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2400,9 +2400,10 @@ Each Webservice pod will consume roughly 4 vCPUs and 4.5 GB of memory using the [recommended topology](#cluster-topology) because four worker processes are created by default and each pod has other small processes running. -The [provided recommendations](#cluster-topology) allow the deployment of up to 20 -Webservice pods. Expand available resources using the ratio of 1 vCPU to 1.125 GB of memory -_per each worker process_ for each additional Webservice pod. +For 10k users we recommend a total Puma worker count of around 80. +With the [provided recommendations](#cluster-topology) this allow the deployment of up to 20 +Webservice pods with 4 works per pod. Expand available resources using the ratio of 1 vCPU +to 1.125 GB of memory _per each worker process_ for each additional Webservice pod. For further information on resource usage, see the [Webservice resources](https://docs.gitlab.com/charts/charts/gitlab/webservice/#resources). -- GitLab From f43e57e9cfc0e418fd190cac64602fbcf4a072d3 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Thu, 25 Mar 2021 13:59:38 +0000 Subject: [PATCH 03/11] Tweaks to 10k RA docs hybrid section --- doc/administration/reference_architectures/10k_users.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 3a0b00e1c29300..f13b0b01e4c1c4 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2351,7 +2351,7 @@ considered and customer technical support will be considered out of scope. ## Hybrid Reference Architecture with Helm Charts (Alternative) -As an alternative approach you can also run select components in Kubernetes +As an alternative approach you can also run select components of GitLab in Kubernetes via our official [Helm Charts](https://docs.gitlab.com/charts/). In this setup we support running the equivalent of GitLab Rails and Sidekiq nodes @@ -2369,7 +2369,7 @@ Kubernetes you can reap certain cloud native workload management benefits while the others are deployed in compute VMs with Omnibus as described above in this page. -It should be noted though that this is an advanced setup. Running services in +It should be noted though that this is an advanced setup as running services in Kubernetes is well known to be complex. **This setup is only recommended** if you have strong working knowledge and experience in Kubernetes. The rest of this section will assume this. @@ -2401,7 +2401,7 @@ the [recommended topology](#cluster-topology) because four worker processes are created by default and each pod has other small processes running. For 10k users we recommend a total Puma worker count of around 80. -With the [provided recommendations](#cluster-topology) this allow the deployment of up to 20 +With the [provided recommendations](#cluster-topology) this allows the deployment of up to 20 Webservice pods with 4 works per pod. Expand available resources using the ratio of 1 vCPU to 1.125 GB of memory _per each worker process_ for each additional Webservice pod. -- GitLab From 7110a459f00da46e731a86791d22fc34ef82e6e2 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Mon, 29 Mar 2021 12:53:23 +0000 Subject: [PATCH 04/11] Apply 4 suggestion(s) to 1 file(s) --- .../reference_architectures/10k_users.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index f13b0b01e4c1c4..e0c146633f2ec2 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2350,22 +2350,18 @@ considered and customer technical support will be considered out of scope.
## Hybrid Reference Architecture with Helm Charts (Alternative) - -As an alternative approach you can also run select components of GitLab in Kubernetes +As an alternative approach, you can also run select components of GitLab in Kubernetes via our official [Helm Charts](https://docs.gitlab.com/charts/). - -In this setup we support running the equivalent of GitLab Rails and Sidekiq nodes +In this setup, we support running the equivalent of GitLab Rails and Sidekiq nodes in a Kubernetes cluster, named Webservice and Sidekiq respectively. In addition to this several other supporting services, such as Grafana, NGINX, etc... are also supported here. Note that the listed components above are the **only** components we support running -in Kubernetes and all other components should continue to be run via Omnibus or -alternatively on PAAS services such as AWS RDS for Database, etc... +alternatively on PAAS services, such as AWS RDS for the database. Hybrid installations leverage the benefits of both cloud native and traditional -deployments together. By shifting the Sidekiq and Webservice components into -Kubernetes you can reap certain cloud native workload management benefits while +Kubernetes, you can reap certain cloud native workload management benefits while the others are deployed in compute VMs with Omnibus as described above in this page. -- GitLab From a758dc10525e2a70d34ed883ba0a5f3c436668cc Mon Sep 17 00:00:00 2001 From: Grant Young Date: Mon, 29 Mar 2021 14:10:40 +0100 Subject: [PATCH 05/11] Tweak title for Hybrid RA 10k docs --- doc/administration/reference_architectures/10k_users.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index e0c146633f2ec2..97c73970fa10ae 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2349,9 +2349,10 @@ considered and customer technical support will be considered out of scope. -## Hybrid Reference Architecture with Helm Charts (Alternative) -As an alternative approach, you can also run select components of GitLab in Kubernetes -via our official [Helm Charts](https://docs.gitlab.com/charts/). +## Cloud Native Hybrid reference architecture with Helm Charts (Alternative) + +As an alternative approach, you can also run select components of GitLab as Cloud Native +in Kubernetes via our official [Helm Charts](https://docs.gitlab.com/charts/). In this setup, we support running the equivalent of GitLab Rails and Sidekiq nodes in a Kubernetes cluster, named Webservice and Sidekiq respectively. In addition to this several other supporting services, such as Grafana, NGINX, etc... are also -- GitLab From 1c4317e5b3b5176868370e178f37b457f2b0dfe0 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Tue, 30 Mar 2021 13:20:47 +0100 Subject: [PATCH 06/11] Adjust 10k RA hybrid docs after review Slight changes in numbers and more firmer language --- .../reference_architectures/10k_users.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 97c73970fa10ae..8be8c957e12c5c 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2354,9 +2354,9 @@ considered and customer technical support will be considered out of scope. As an alternative approach, you can also run select components of GitLab as Cloud Native in Kubernetes via our official [Helm Charts](https://docs.gitlab.com/charts/). In this setup, we support running the equivalent of GitLab Rails and Sidekiq nodes -in a Kubernetes cluster, named Webservice and Sidekiq respectively. In addition to -this several other supporting services, such as Grafana, NGINX, etc... are also -supported here. +in a Kubernetes cluster, named Webservice and Sidekiq respectively. In addition, +the following other supporting services are supported: NGINX, Task Runner, Migrations, +Prometheus and Grafana. Note that the listed components above are the **only** components we support running alternatively on PAAS services, such as AWS RDS for the database. @@ -2392,15 +2392,16 @@ documents how to apply the calculated configuration to the Helm Chart. #### Webservice -Webservice pods typically need about 1 vCPU and 1.125 GB of memory _per worker_. -Each Webservice pod will consume roughly 4 vCPUs and 4.5 GB of memory using +Webservice pods typically need about 1 vCPU and 1.25 GB of memory _per worker_. +Each Webservice pod will consume roughly 4 vCPUs and 5 GB of memory using the [recommended topology](#cluster-topology) because four worker processes are created by default and each pod has other small processes running. For 10k users we recommend a total Puma worker count of around 80. With the [provided recommendations](#cluster-topology) this allows the deployment of up to 20 -Webservice pods with 4 works per pod. Expand available resources using the ratio of 1 vCPU -to 1.125 GB of memory _per each worker process_ for each additional Webservice pod. +Webservice pods with 4 workers per pod and 5 pods per node. Expand available resources using +the ratio of 1 vCPU to 1.25 GB of memory _per each worker process_ for each additional +Webservice pod. For further information on resource usage, see the [Webservice resources](https://docs.gitlab.com/charts/charts/gitlab/webservice/#resources). -- GitLab From 02977209bad27b4bd237a0e5133f850abd99988f Mon Sep 17 00:00:00 2001 From: Grant Young Date: Wed, 31 Mar 2021 09:44:45 +0000 Subject: [PATCH 07/11] Apply 1 suggestion(s) to 1 file(s) --- doc/administration/reference_architectures/10k_users.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 8be8c957e12c5c..6c2cff445aba63 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2358,8 +2358,7 @@ in a Kubernetes cluster, named Webservice and Sidekiq respectively. In addition, the following other supporting services are supported: NGINX, Task Runner, Migrations, Prometheus and Grafana. -Note that the listed components above are the **only** components we support running -alternatively on PAAS services, such as AWS RDS for the database. +alternatively on PaaS services, such as AWS RDS for the database. Hybrid installations leverage the benefits of both cloud native and traditional Kubernetes, you can reap certain cloud native workload management benefits while -- GitLab From 9ed5e954e50aff79e6af265320ab0a37717db125 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Thu, 1 Apr 2021 13:07:29 +0100 Subject: [PATCH 08/11] Fix mislined suggestion --- doc/administration/reference_architectures/10k_users.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 6c2cff445aba63..6eb9b0565f8f01 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2358,6 +2358,7 @@ in a Kubernetes cluster, named Webservice and Sidekiq respectively. In addition, the following other supporting services are supported: NGINX, Task Runner, Migrations, Prometheus and Grafana. +Note that the listed components above are the **only** components we support running alternatively on PaaS services, such as AWS RDS for the database. Hybrid installations leverage the benefits of both cloud native and traditional -- GitLab From ab9a4abc16f897b23aa3d54551623d571ff5be4a Mon Sep 17 00:00:00 2001 From: Grant Young Date: Tue, 6 Apr 2021 14:19:55 +0100 Subject: [PATCH 09/11] Add in further guidance for Hybrid architectures Add in tables and PaaS markers on both types --- .../reference_architectures/10k_users.md | 140 +++++++++++++++--- 1 file changed, 122 insertions(+), 18 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 6eb9b0565f8f01..df11b3cf6f050e 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -22,18 +22,21 @@ full list of reference architectures, see | PostgreSQL | 3 | 8 vCPU, 30 GB memory | n1-standard-8 | m5.2xlarge | D8s v3 | | PgBouncer | 3 | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | c5.large | F2s v2 | | Internal load balancing node | 1 | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | c5.large | F2s v2 | -| Redis - Cache | 3 | 4 vCPU, 15 GB memory | n1-standard-4 | m5.xlarge | D4s v3 | -| Redis - Queues / Shared State | 3 | 4 vCPU, 15 GB memory | n1-standard-4 | m5.xlarge | D4s v3 | -| Redis Sentinel - Cache | 3 | 1 vCPU, 1.7 GB memory | g1-small | t3.small | B1MS | -| Redis Sentinel - Queues / Shared State | 3 | 1 vCPU, 1.7 GB memory | g1-small | t3.small | B1MS | +| Redis - Cache* | 3 | 4 vCPU, 15 GB memory | n1-standard-4 | m5.xlarge | D4s v3 | +| Redis - Queues / Shared State* | 3 | 4 vCPU, 15 GB memory | n1-standard-4 | m5.xlarge | D4s v3 | +| Redis Sentinel - Cache* | 3 | 1 vCPU, 1.7 GB memory | g1-small | t3.small | B1MS | +| Redis Sentinel - Queues / Shared State* | 3 | 1 vCPU, 1.7 GB memory | g1-small | t3.small | B1MS | | Gitaly | 3 | 16 vCPU, 60 GB memory | n1-standard-16 | m5.4xlarge | D16s v3 | | Praefect | 3 | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | c5.large | F2s v2 | -| Praefect PostgreSQL | 1+* | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | c5.large | F2s v2 | +| Praefect PostgreSQL* | 1+ | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | c5.large | F2s v2 | | Sidekiq | 4 | 4 vCPU, 15 GB memory | n1-standard-4 | m5.xlarge | D4s v3 | | GitLab Rails | 3 | 32 vCPU, 28.8 GB memory | n1-highcpu-32 | c5.9xlarge | F32s v2 | | Monitoring node | 1 | 4 vCPU, 3.6 GB memory | n1-highcpu-4 | c5.xlarge | F4s v2 | | Object storage | n/a | n/a | n/a | n/a | n/a | -| NFS server | 1 | 4 vCPU, 3.6 GB memory | n1-highcpu-4 | `c5.xlarge` | F4s v2 | +| NFS server | 1 | 4 vCPU, 3.6 GB memory | n1-highcpu-4 | `c5.xlarge` | F4s v2 | + +NOTE: Components marked with * can be optionally run on reputable +third party external PaaS solutions such as Google Cloud SQL or Memorystore. ```plantuml @startuml 10k @@ -2358,9 +2361,6 @@ in a Kubernetes cluster, named Webservice and Sidekiq respectively. In addition, the following other supporting services are supported: NGINX, Task Runner, Migrations, Prometheus and Grafana. -Note that the listed components above are the **only** components we support running -alternatively on PaaS services, such as AWS RDS for the database. - Hybrid installations leverage the benefits of both cloud native and traditional Kubernetes, you can reap certain cloud native workload management benefits while the others are deployed in compute VMs with Omnibus as described above in this @@ -2373,16 +2373,120 @@ section will assume this. ### Cluster topology -The following table provides a starting point for the hybrid -environment. The recommendations use Google Cloud's Kubernetes Engine (GKE) -and associated machine types, but the memory and CPU requirements should -translate to most other providers. +The following tables and diagram details the hybrid environment using the same formats +as the normal environment above. + +First starting with the components that run in Kubernetes. The recommendations at this +time use Google Cloud’s Kubernetes Engine (GKE) and associated machine types, but the memory +and CPU requirements should translate to most other providers. We hope to update this in the +future with further specific cloud provider details. + +| Service | Nodes | Configuration | GCP | Allocatable CPUs and Memory | +|-------------------------------------------------------|-------|-------------------------|----------------|-----------------------------| +| Webservice | 4 | 32 vCPU, 28.8 GB memory | n1-standard-32 | 127.5 vCPU, 118 GB memory | +| Sidekiq | 4 | 4 vCPU, 15 GB memory | n1-standard-4 | 15.5 vCPU, 50 GB memory | +| Supporting services such as NGINX, Prometheus, etc... | 2 | 4 vCPU, 15 GB memory | n1-standard-4 | 7.75 vCPU, 25 GB memory | + +Next are the backend components that run on static compute VMs via Omnibus (or External PaaS +services where applicable): + +| Service | Nodes | Configuration | GCP | +|--------------------------------------------|-------|-------------------------|-----------------| +| Consul | 3 | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | +| PostgreSQL* | 3 | 8 vCPU, 30 GB memory | n1-standard-8 | +| PgBouncer | 3 | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | +| Internal load balancing node | 1 | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | +| Redis - Cache* | 3 | 4 vCPU, 15 GB memory | n1-standard-4 | +| Redis - Queues / Shared State* | 3 | 4 vCPU, 15 GB memory | n1-standard-4 | +| Redis Sentinel - Cache* | 3 | 1 vCPU, 1.7 GB memory | g1-small | +| Redis Sentinel - Queues / Shared State* | 3 | 1 vCPU, 1.7 GB memory | g1-small | +| Gitaly | 3 | 16 vCPU, 60 GB memory | n1-standard-16 | +| Praefect | 3 | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | +| Praefect PostgreSQL* | 1+ | 2 vCPU, 1.8 GB memory | n1-highcpu-2 | +| Object storage | n/a | n/a | n/a | + +NOTE: Components marked with * can be optionally run on reputable +third party external PaaS solutions such as Google Cloud SQL or Memorystore. + +```plantuml +@startuml 10k + +card "Kubernetes via Helm Charts" as kubernetes { + card "**External Load Balancer**" as elb #6a9be7 + + together { + collections "**Webservice** x4" as gitlab #32CD32 + collections "**Sidekiq** x4" as sidekiq #ff8dd1 + } + + card "**Prometheus + Grafana**" as monitor #7FFFD4 + card "**Supporting Services**" as support +} + +card "**Internal Load Balancer**" as ilb #9370DB +collections "**Consul** x3" as consul #e76a9b -Machine count | Machine type | Allocatable vCPUs | Allocatable memory (GB) | Purpose --|-|-|-|- -4 | `n1-highcpu-32` | 127.5 | 118 | GitLab Webservice pods -4 | `n1-standard-4` | 15.5 | 50 | GitLab Sidekiq pods -2 | `n1-standard-4` | 7.75 | 25 | Non-GitLab supporting resources, including Grafana, NGINX, and Prometheus +card "Gitaly Cluster" as gitaly_cluster { + collections "**Praefect** x3" as praefect #FF8C00 + collections "**Gitaly** x3" as gitaly #FF8C00 + card "**Praefect PostgreSQL***\n//Non fault-tolerant//" as praefect_postgres #FF8C00 + + praefect -[#FF8C00]-> gitaly + praefect -[#FF8C00]> praefect_postgres +} + +card "Database" as database { + collections "**PGBouncer** x3" as pgbouncer #4EA7FF + card "**PostgreSQL** (Primary)" as postgres_primary #4EA7FF + collections "**PostgreSQL** (Secondary) x2" as postgres_secondary #4EA7FF + + pgbouncer -[#4EA7FF]-> postgres_primary + postgres_primary .[#4EA7FF]> postgres_secondary +} + +card "redis" as redis { + collections "**Redis Persistent** x3" as redis_persistent #FF6347 + collections "**Redis Cache** x3" as redis_cache #FF6347 + collections "**Redis Persistent Sentinel** x3" as redis_persistent_sentinel #FF6347 + collections "**Redis Cache Sentinel** x3"as redis_cache_sentinel #FF6347 + + redis_persistent <.[#FF6347]- redis_persistent_sentinel + redis_cache <.[#FF6347]- redis_cache_sentinel +} + +cloud "**Object Storage**" as object_storage #white + +elb -[#6a9be7]-> gitlab +elb -[#6a9be7]-> monitor +elb -[hidden]-> support + +gitlab -[#32CD32]> sidekiq +gitlab -[#32CD32]--> ilb +gitlab -[#32CD32]-> object_storage +gitlab -[#32CD32]---> redis +gitlab -[hidden]--> consul + +sidekiq -[#ff8dd1]--> ilb +sidekiq -[#ff8dd1]-> object_storage +sidekiq -[#ff8dd1]---> redis +sidekiq -[hidden]--> consul + +ilb -[#9370DB]-> gitaly_cluster +ilb -[#9370DB]-> database + +consul .[#e76a9b]-> database +consul .[#e76a9b]-> gitaly_cluster +consul .[#e76a9b,norank]--> redis + +monitor .[#7FFFD4]> consul +monitor .[#7FFFD4]-> database +monitor .[#7FFFD4]-> gitaly_cluster +monitor .[#7FFFD4,norank]--> redis +monitor .[#7FFFD4]> ilb +monitor .[#7FFFD4,norank]u--> elb + +@enduml +``` ### Resource usage settings -- GitLab From 411f4d0793f1defc314503a8a742ae6c69003854 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Tue, 6 Apr 2021 14:51:33 +0100 Subject: [PATCH 10/11] Lint fix for new Notes on 10k page --- doc/administration/reference_architectures/10k_users.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index 746d4ad079c9db..e0410171403099 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -35,7 +35,8 @@ full list of reference architectures, see | Object storage | n/a | n/a | n/a | n/a | n/a | | NFS server | 1 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | -NOTE: Components marked with * can be optionally run on reputable +NOTE: +Components marked with * can be optionally run on reputable third party external PaaS solutions such as Google Cloud SQL or Memorystore. ```plantuml @@ -2405,7 +2406,8 @@ services where applicable): | Praefect PostgreSQL* | 1+ | 2 vCPU, 1.8 GB memory | `n1-highcpu-2` | | Object storage | n/a | n/a | n/a | -NOTE: Components marked with * can be optionally run on reputable +NOTE: +Components marked with * can be optionally run on reputable third party external PaaS solutions such as Google Cloud SQL or Memorystore. ```plantuml -- GitLab From 2c086cd910a527f6a08f8ec468383f958782fc79 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Apr 2021 15:59:44 +0000 Subject: [PATCH 11/11] Apply 1 suggestion(s) to 1 file(s) --- doc/administration/reference_architectures/10k_users.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index e0410171403099..0c735d1857e794 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -2353,7 +2353,7 @@ considered and customer technical support will be considered out of scope. -## Cloud Native Hybrid reference architecture with Helm Charts (Alternative) +## Cloud Native Hybrid reference architecture with Helm Charts (alternative) As an alternative approach, you can also run select components of GitLab as Cloud Native in Kubernetes via our official [Helm Charts](https://docs.gitlab.com/charts/). -- GitLab