The values below size a Deckhouse Code Helm release for the expected number of users. Each size has a standalone variant and a high availability variant. In the standalone variant every component runs one replica. In the high availability variant every component runs at least two replicas and Praefect runs three; HorizontalPodAutoscaler objects add replicas under CPU load, PodDisruptionBudget objects keep pods available while nodes are drained, and each of the two Gitaly pods holds a full copy of every repository (see Git storage).

The gitlab.gitlab-pages and registry values take effect once Pages and the container registry are enabled; both are disabled by default (see Container registry and Pages).

Applying the values

Save the chosen variant to a file, for example scaling.yaml, and pass it to the install command after the values file of the installation. Helm merges the files in the order of the -f flags, and a key set in several files takes the value from the last one:

helm upgrade --install code oci://<CHART_REGISTRY>/code \
  --version <CHART_VERSION> \
  -n code --create-namespace \
  -f values.yaml \
  -f scaling.yaml

values.yaml is the values file of the installation from Quick start. The same command resizes a running release: the pods of the components whose values changed are recreated.

300 users

Values for 300 users:

  • Standalone
  • High availability
global:
  codeHelm:
    loadbalancer:
      resources:
        limits:
          cpu: 500m
          memory: 256Mi
        requests:
          cpu: 250m
          memory: 128Mi

gitlab:
  webservice:
    workerProcesses: 4
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 7G
      requests:
        cpu: 4
        memory: 7G
  gitlab-shell:
    resources:
      limits:
        cpu: 500m
        memory: 600M
      requests:
        cpu: 10m
        memory: 24M
  gitlab-pages:
    resources:
      limits:
        cpu: 1500m
        memory: 2G
      requests:
        cpu: 900m
        memory: 1G
  gitaly:
    resources:
      limits:
        cpu: 1500m
        memory: 2Gi
      requests:
        cpu: 1500m
        memory: 2Gi
    cgroups:
      memoryBytes: 2147483648
      cpuQuotaUs: 150000
      repositories:
        memoryBytes: 1073741824
        cpuQuotaUs: 75000
  praefect:
    resources:
      limits:
        cpu: 300m
        memory: 600Mi
      requests:
        cpu: 100m
        memory: 128Mi
global:
  codeHelm:
    loadbalancer:
      replicas: 2
      resources:
        limits:
          cpu: 500m
          memory: 256Mi
        requests:
          cpu: 250m
          memory: 128Mi
      pdb:
        enabled: true
  praefect:
    virtualStorages:
      - name: default
        gitalyReplicas: 2
        maxUnavailable: 1

gitlab:
  webservice:
    workerProcesses: 3
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 5500Mi
      requests:
        cpu: 3
        memory: 5500Mi
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 1
    minReplicas: 2
  sidekiq:
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 350m
    minReplicas: 2
  gitlab-shell:
    resources:
      limits:
        cpu: 500m
        memory: 600M
      requests:
        cpu: 10m
        memory: 24M
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 100m
    minReplicas: 2
  gitlab-pages:
    resources:
      limits:
        cpu: 1500m
        memory: 2G
      requests:
        cpu: 900m
        memory: 1G
    hpa:
      enabled: true
      minReplicas: 2
      cpu:
        targetAverageValue: 100m
  gitaly:
    resources:
      limits:
        cpu: 1500m
        memory: 2Gi
      requests:
        cpu: 1500m
        memory: 2Gi
    cgroups:
      memoryBytes: 2147483648
      cpuQuotaUs: 150000
      repositories:
        memoryBytes: 1073741824
        cpuQuotaUs: 75000
  praefect:
    replicas: 3
    resources:
      limits:
        cpu: 300m
        memory: 600Mi
      requests:
        cpu: 100m
        memory: 128Mi

registry:
  hpa:
    enabled: true
    minReplicas: 2
    cpu:
      targetAverageUtilization: 75

500 users

Values for 500 users:

  • Standalone
  • High availability
global:
  codeHelm:
    loadbalancer:
      resources:
        limits:
          cpu: 500m
          memory: 256Mi
        requests:
          cpu: 250m
          memory: 128Mi

gitlab:
  webservice:
    workerProcesses: 4
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 7G
      requests:
        cpu: 4
        memory: 7G
  gitlab-shell:
    resources:
      limits:
        cpu: 500m
        memory: 600M
      requests:
        cpu: 10m
        memory: 24M
  gitlab-pages:
    resources:
      limits:
        cpu: 1500m
        memory: 2G
      requests:
        cpu: 900m
        memory: 1G
  gitaly:
    resources:
      limits:
        cpu: 1500m
        memory: 2Gi
      requests:
        cpu: 1500m
        memory: 2Gi
    cgroups:
      memoryBytes: 2147483648
      cpuQuotaUs: 150000
      repositories:
        memoryBytes: 1073741824
        cpuQuotaUs: 75000
  praefect:
    resources:
      limits:
        cpu: 300m
        memory: 600Mi
      requests:
        cpu: 100m
        memory: 128Mi
global:
  codeHelm:
    loadbalancer:
      replicas: 2
      resources:
        limits:
          cpu: 500m
          memory: 256Mi
        requests:
          cpu: 250m
          memory: 128Mi
      pdb:
        enabled: true
  praefect:
    virtualStorages:
      - name: default
        gitalyReplicas: 2
        maxUnavailable: 1

gitlab:
  webservice:
    workerProcesses: 4
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 7G
      requests:
        cpu: 4
        memory: 7G
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 1
    minReplicas: 2
  sidekiq:
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 350m
    minReplicas: 2
  gitlab-shell:
    resources:
      limits:
        cpu: 500m
        memory: 600M
      requests:
        cpu: 10m
        memory: 24M
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 100m
    minReplicas: 2
  gitlab-pages:
    resources:
      limits:
        cpu: 1500m
        memory: 2G
      requests:
        cpu: 900m
        memory: 1G
    hpa:
      enabled: true
      minReplicas: 2
      cpu:
        targetAverageValue: 100m
  gitaly:
    resources:
      limits:
        cpu: 1500m
        memory: 2Gi
      requests:
        cpu: 1500m
        memory: 2Gi
    cgroups:
      memoryBytes: 2147483648
      cpuQuotaUs: 150000
      repositories:
        memoryBytes: 1073741824
        cpuQuotaUs: 75000
  praefect:
    replicas: 3
    resources:
      limits:
        cpu: 300m
        memory: 600Mi
      requests:
        cpu: 100m
        memory: 128Mi

registry:
  hpa:
    enabled: true
    minReplicas: 2
    cpu:
      targetAverageUtilization: 75

1000 users

Values for 1000 users:

  • Standalone
  • High availability
global:
  codeHelm:
    loadbalancer:
      resources:
        limits:
          cpu: 500m
          memory: 256Mi
        requests:
          cpu: 250m
          memory: 128Mi

gitlab:
  webservice:
    workerProcesses: 6
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 10G
      requests:
        cpu: 6
        memory: 10G
  sidekiq:
    resources:
      limits:
        memory: 3G
      requests:
        cpu: 1
        memory: 1500Mi
  gitlab-shell:
    resources:
      limits:
        cpu: 500m
        memory: 600Mi
      requests:
        cpu: 32m
        memory: 50Mi
  gitlab-pages:
    resources:
      limits:
        cpu: 1500m
        memory: 2G
      requests:
        cpu: 900m
        memory: 1G
  gitaly:
    resources:
      limits:
        cpu: 2000m
        memory: 4000Mi
      requests:
        cpu: 2000m
        memory: 4000Mi
    cgroups:
      memoryBytes: 4194304000
      cpuQuotaUs: 200000
      repositories:
        memoryBytes: 2097152000
        cpuQuotaUs: 100000
  praefect:
    resources:
      limits:
        cpu: 300m
        memory: 600Mi
      requests:
        cpu: 100m
        memory: 128Mi
global:
  codeHelm:
    loadbalancer:
      replicas: 2
      resources:
        limits:
          cpu: 500m
          memory: 256Mi
        requests:
          cpu: 250m
          memory: 128Mi
      pdb:
        enabled: true
  praefect:
    virtualStorages:
      - name: default
        gitalyReplicas: 2
        maxUnavailable: 1

gitlab:
  webservice:
    workerProcesses: 5
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 8500Mi
      requests:
        cpu: 5
        memory: 8500Mi
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 1200m
    minReplicas: 2
    maxReplicas: 4
    maxUnavailable: 2
  sidekiq:
    resources:
      limits:
        memory: 2G
      requests:
        cpu: 1
        memory: 1500Mi
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 600m
    minReplicas: 2
    maxReplicas: 4
    maxUnavailable: 1
  gitlab-shell:
    resources:
      limits:
        cpu: 500m
        memory: 600Mi
      requests:
        cpu: 32m
        memory: 50Mi
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 100m
    minReplicas: 2
    maxReplicas: 4
    maxUnavailable: 1
  gitlab-pages:
    resources:
      limits:
        cpu: 1500m
        memory: 2G
      requests:
        cpu: 900m
        memory: 1G
    hpa:
      enabled: true
      minReplicas: 2
      maxReplicas: 3
      cpu:
        targetAverageValue: 100m
    maxUnavailable: 1
  gitaly:
    resources:
      limits:
        cpu: 2000m
        memory: 4000Mi
      requests:
        cpu: 2000m
        memory: 4000Mi
    cgroups:
      memoryBytes: 4194304000
      cpuQuotaUs: 200000
      repositories:
        memoryBytes: 2097152000
        cpuQuotaUs: 100000
  praefect:
    replicas: 3
    resources:
      limits:
        cpu: 300m
        memory: 600Mi
      requests:
        cpu: 100m
        memory: 128Mi

registry:
  hpa:
    enabled: true
    minReplicas: 2
    maxReplicas: 3
    cpu:
      targetAverageUtilization: 75
  maxUnavailable: 2

3000 users

Values for 3000 users:

  • Standalone
  • High availability
global:
  codeHelm:
    loadbalancer:
      resources:
        limits:
          cpu: 1000m
          memory: 512Mi
        requests:
          cpu: 500m
          memory: 256Mi

gitlab:
  webservice:
    workerProcesses: 8
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 13G
      requests:
        cpu: 8
        memory: 13G
  sidekiq:
    resources:
      limits:
        memory: 3G
      requests:
        cpu: 1
        memory: 1500Mi
  gitlab-shell:
    resources:
      limits:
        cpu: 500m
        memory: 600Mi
      requests:
        cpu: 32m
        memory: 50Mi
  gitlab-pages:
    resources:
      limits:
        memory: 3G
      requests:
        cpu: 900m
        memory: 1G
  gitaly:
    resources:
      limits:
        cpu: 6000m
        memory: 16000Mi
      requests:
        cpu: 6000m
        memory: 16000Mi
    cgroups:
      memoryBytes: 16777216000
      cpuQuotaUs: 600000
      repositories:
        memoryBytes: 8388608000
        cpuQuotaUs: 300000
  praefect:
    resources:
      limits:
        cpu: 600m
        memory: 1200Mi
global:
  codeHelm:
    loadbalancer:
      replicas: 2
      resources:
        limits:
          cpu: 1000m
          memory: 512Mi
        requests:
          cpu: 500m
          memory: 256Mi
      hpa:
        enabled: true
        minReplicas: 2
        maxReplicas: 3
        cpuUtilization: 80
        memoryUtilization: 80
      pdb:
        enabled: true
  praefect:
    virtualStorages:
      - name: default
        gitalyReplicas: 2
        maxUnavailable: 1

gitlab:
  webservice:
    workerProcesses: 6
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 10G
      requests:
        cpu: 6
        memory: 10G
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 1600m
    minReplicas: 2
    maxReplicas: 4
    maxUnavailable: 2
  sidekiq:
    resources:
      limits:
        memory: 3G
      requests:
        cpu: 1
        memory: 1500Mi
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 700m
    minReplicas: 4
    maxReplicas: 8
    maxUnavailable: 1
  gitlab-shell:
    resources:
      limits:
        cpu: 500m
        memory: 600Mi
      requests:
        cpu: 32m
        memory: 50Mi
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 1600m
    minReplicas: 3
    maxReplicas: 6
    maxUnavailable: 1
  gitlab-pages:
    resources:
      limits:
        memory: 3G
      requests:
        cpu: 900m
        memory: 1G
    hpa:
      enabled: true
      minReplicas: 2
      maxReplicas: 6
      cpu:
        targetAverageValue: 100m
    maxUnavailable: 1
  gitaly:
    resources:
      limits:
        cpu: 6000m
        memory: 16000Mi
      requests:
        cpu: 6000m
        memory: 16000Mi
    cgroups:
      memoryBytes: 16777216000
      cpuQuotaUs: 600000
      repositories:
        memoryBytes: 8388608000
        cpuQuotaUs: 300000
  praefect:
    replicas: 3
    resources:
      limits:
        cpu: 600m
        memory: 1200Mi

registry:
  hpa:
    enabled: true
    minReplicas: 3
    maxReplicas: 5
    cpu:
      targetAverageUtilization: 75
  maxUnavailable: 3

5000 users

Values for 5000 users:

  • Standalone
  • High availability
global:
  codeHelm:
    loadbalancer:
      resources:
        limits:
          cpu: 1500m
          memory: 1Gi
        requests:
          cpu: 750m
          memory: 512Mi

gitlab:
  webservice:
    workerProcesses: 10
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 16G
      requests:
        cpu: 10
        memory: 16G
  sidekiq:
    resources:
      limits:
        memory: 3G
      requests:
        cpu: 1
        memory: 1500Mi
  gitlab-shell:
    resources:
      limits:
        cpu: 384m
        memory: 250Mi
      requests:
        cpu: 32m
        memory: 50Mi
  gitlab-pages:
    resources:
      limits:
        memory: 4G
      requests:
        cpu: 900m
        memory: 2G
  gitaly:
    resources:
      limits:
        cpu: 6000m
        memory: 16000Mi
      requests:
        cpu: 6000m
        memory: 16000Mi
    cgroups:
      memoryBytes: 16777216000
      cpuQuotaUs: 600000
      repositories:
        memoryBytes: 8388608000
        cpuQuotaUs: 300000
  praefect:
    resources:
      limits:
        cpu: 600m
        memory: 1200Mi
global:
  codeHelm:
    loadbalancer:
      replicas: 3
      resources:
        limits:
          cpu: 1500m
          memory: 1Gi
        requests:
          cpu: 750m
          memory: 512Mi
      hpa:
        enabled: true
        minReplicas: 3
        maxReplicas: 4
        cpuUtilization: 80
        memoryUtilization: 80
      pdb:
        enabled: true
  praefect:
    virtualStorages:
      - name: default
        gitalyReplicas: 2
        maxUnavailable: 1

gitlab:
  webservice:
    workerProcesses: 8
    puma:
      threads:
        min: 8
        max: 8
    resources:
      limits:
        memory: 13G
      requests:
        cpu: 8
        memory: 13G
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 1600m
    minReplicas: 2
    maxReplicas: 5
    maxUnavailable: 1
  sidekiq:
    resources:
      limits:
        memory: 3G
      requests:
        cpu: 1
        memory: 1500Mi
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 700m
    minReplicas: 6
    maxReplicas: 12
    maxUnavailable: 1
  gitlab-shell:
    resources:
      limits:
        cpu: 384m
        memory: 250Mi
      requests:
        cpu: 32m
        memory: 50Mi
    hpa:
      enabled: true
      cpu:
        targetAverageValue: 100m
    minReplicas: 6
    maxReplicas: 12
    maxUnavailable: 2
  gitlab-pages:
    resources:
      limits:
        memory: 4G
      requests:
        cpu: 900m
        memory: 2G
    hpa:
      enabled: true
      minReplicas: 2
      maxReplicas: 6
      cpu:
        targetAverageValue: 100m
    maxUnavailable: 1
  gitaly:
    resources:
      limits:
        cpu: 6000m
        memory: 16000Mi
      requests:
        cpu: 6000m
        memory: 16000Mi
    cgroups:
      memoryBytes: 16777216000
      cpuQuotaUs: 600000
      repositories:
        memoryBytes: 8388608000
        cpuQuotaUs: 300000
  praefect:
    replicas: 3
    resources:
      limits:
        cpu: 600m
        memory: 1200Mi

registry:
  hpa:
    enabled: true
    minReplicas: 4
    maxReplicas: 8
    cpu:
      targetAverageUtilization: 75
  maxUnavailable: 4

Additional resources