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