GitLab Helm subcharts
The GitLab Helm chart is made up of multiple subcharts, which provide the core GitLab components:
- Gitaly
- GitLab Exporter
- GitLab Pages
- GitLab Runner
- GitLab Shell
- GitLab agent server (KAS)
- Mailroom
- Migrations
- Praefect
- Sidekiq
- Spamcheck
- Toolbox
- Webservice
The parameters for each subchart must be under the gitlab key. For example,
GitLab Shell parameters would be similar to:
gitlab:
gitlab-shell:
...Use these charts for optional dependencies:
Use these charts as optional additions:
- Prometheus
- Unprivileged GitLab Runner that uses the Kubernetes executor
- Automatically provisioned SSL from Let’s Encrypt, which uses Jetstack’s cert-manager with certmanager-issuer
GitLab Helm subchart optional parameters
affinity
affinity is an optional parameter in all GitLab Helm subcharts. When you set it, it takes precedence over the global affinity value.
For more information about affinity, see the relevant Kubernetes documentation.
The webservice and sidekiq Helm charts can only use the global affinity value. Follow issue 25403 to learn when the local affinity is implemented for webservice and sidekiq.
With affinity, you can set either or both:
podAntiAffinityrules to:- Not schedule pods in the same domain as the pods that match the expression corresponding to the
topology key. - Set two modes of
podAntiAffinityrules: required (requiredDuringSchedulingIgnoredDuringExecution) and preferred (preferredDuringSchedulingIgnoredDuringExecution). Using the variableantiAffinityinvalues.yaml, set the setting tosoftso that the preferred mode is applied or set it tohardso that the required mode is applied.
- Not schedule pods in the same domain as the pods that match the expression corresponding to the
nodeAffinityrules to:- Schedule pods to nodes that belong to a specific zone or zones.
- Set two modes of
nodeAffinityrules: required (requiredDuringSchedulingIgnoredDuringExecution) and preferred (preferredDuringSchedulingIgnoredDuringExecution). When set tosoft, the preferred mode is applied. When set tohard, the required mode is applied. This rule is implemented only for theregistrychart and thegitlabchart alongwith all its subcharts exceptwebserviceandsidekiq.
nodeAffinity only implements the In operator.
The following example sets affinity, with both nodeAffinity and antiAffinity set to hard:
nodeAffinity: "hard"
antiAffinity: "hard"
affinity:
nodeAffinity:
key: "test.com/zone"
values:
- us-east1-a
- us-east1-b
podAntiAffinity:
topologyKey: "test.com/hostname"