Skip to content

Adds update strategy to be configured for sidekiq

  • This enables one to configure the update strategy utilized by sidekiq deployments at the global level, as well as the pod deployment level
  • Will default to an empty object which will utilize the Kubernetes defaults

Example Configuration

gitlab:
  sidekiq:
    updateStrategy:
      type: RollingUpdate
      rollingUpdate:
        maxUnavailable: 3
        maxSurge: 50%
    cluster: true
    experimentalQueueSelector: true
    pods:
      - name: high
        queues: urgency=high
        updateStrategy:
          type: RollingUpdate
          rollingUpdate:
            maxUnavailable: 1
            maxSurge: 100%
      - name: catchall
        queues: urgency!=high

The above will create the following deployment configurations:

---
# Source: gitlab/charts/gitlab/charts/sidekiq/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: a-sidekiq-high-v1
  namespace: default
  labels:
    app: sidekiq
    chart: sidekiq-3.2.4
    release: a
    heritage: Helm

    queue-pod-name: high
spec:
  selector:
    matchLabels:
      app: sidekiq
      release: a
      queue-pod-name: high
  strategy:
    rollingUpdate:
      maxSurge: 100%
      maxUnavailable: 1
    type: RollingUpdate
# SNIP

And

---
# Source: gitlab/charts/gitlab/charts/sidekiq/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: a-sidekiq-catchall-v1
  namespace: default
  labels:
    app: sidekiq
    chart: sidekiq-3.2.4
    release: a
    heritage: Helm

    queue-pod-name: catchall
spec:
  selector:
    matchLabels:
      app: sidekiq
      release: a
      queue-pod-name: catchall
  strategy:
    rollingUpdate:
      maxSurge: 50%
      maxUnavailable: 3
    type: RollingUpdate
# SNIP

Addresses: #2026

Edited by John Skarbek

Merge request reports