Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
e245b4f
feat(ee): worker pools support
Gabriel-Ladzaretti Mar 11, 2026
4e0c346
feat: wire worker queues value
Gabriel-Ladzaretti Mar 11, 2026
ab6956d
chore(chart): bump mend-renovate-ee chart version to 8.2.0
Gabriel-Ladzaretti Mar 11, 2026
3816bdb
fix(helm): preserve worker upgrade compatibility and tighten pool/ser…
Gabriel-Ladzaretti Mar 12, 2026
77aaed1
feat(ee): add extra deploy rendering support
Gabriel-Ladzaretti Mar 15, 2026
768ca10
feat(ee): wire single job worker env var
Gabriel-Ladzaretti Mar 15, 2026
2d2f39b
feat(ee-worker): optional wire for restartPolicy
Gabriel-Ladzaretti Mar 15, 2026
5e34032
refactor: worker template.spec rendering helper
Gabriel-Ladzaretti Mar 15, 2026
5455521
fix: helper func indentation
Gabriel-Ladzaretti Mar 16, 2026
044e4c9
docs: update extraDeploy + pools examples
Gabriel-Ladzaretti Mar 17, 2026
0d0626a
fix: add createDeployment switch
Gabriel-Ladzaretti Mar 17, 2026
e8d53ea
Merge remote-tracking branch 'origin/main' into feat/helm/worker_pools
Gabriel-Ladzaretti Mar 24, 2026
264f654
docs(worker-queues): add helm main+arm64 pool example and clarify per…
Gabriel-Ladzaretti Mar 24, 2026
e0f7505
chore(ee): bump ee chart to v9
Gabriel-Ladzaretti Mar 24, 2026
c3d4294
Update helm-charts/mend-renovate-ee/Chart.yaml
Gabriel-Ladzaretti Mar 24, 2026
6e58ac8
Apply suggestion from @jamietanna
Gabriel-Ladzaretti Mar 24, 2026
80e9bcd
docs(helm/renovate-ee): explicitly list pools specific opts
Gabriel-Ladzaretti Mar 24, 2026
0c91e37
docs: typo
Gabriel-Ladzaretti Mar 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions docs/worker-queues.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ For general API documentation, see [API Documentation](./api.md). For the exact
- [Queue Management](#queue-management)
- [Queue Assignment](#queue-assignment)
- [Worker Configuration](#worker-configuration)
- [Helm Example: main and arm64 pools](#helm-example-main-and-arm64-pools)
- [Metrics and Autoscaling](#metrics-and-autoscaling)
- [End to End Example](#end-to-end-example)
- [1. Create a queue](#1-create-a-queue)
Expand Down Expand Up @@ -119,6 +120,31 @@ Special handling:
- In worker configuration, `all` is a wildcard value that means "consume from every queue"
- If `all` is present, it overrides the need to list specific queues

### Helm Example: main and arm64 pools

If you deploy with the Helm chart, a minimal change pattern is to keep `main` on amd64 and add a dedicated `arm64` queue/pool:

```yaml
renovateWorker:
pools:
- name: main
replicas: 2
mendRnvWorkerQueues: main
nodeSelector:
kubernetes.io/arch: amd64
- name: arm64
replicas: 2
mendRnvWorkerQueues: arm64
nodeSelector:
kubernetes.io/arch: arm64
```

Then assign selected repositories or organizations to `arm64` via the queue assignment API. Unassigned jobs continue to route to `main`.

Each entry in `renovateWorker.pools` renders a separate worker Deployment. Pool values are merged over root `renovateWorker` values.

For additional Helm examples (including `extraDeploy` autoscaling patterns), see [`helm-charts/mend-renovate-ee/values.yaml`](../helm-charts/mend-renovate-ee/values.yaml).

## Metrics and Autoscaling

If Prometheus metrics are enabled on the server, worker queue state is exposed through the metrics output.
Expand Down
2 changes: 1 addition & 1 deletion helm-charts/mend-renovate-ee/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apiVersion: v1
name: mend-renovate-enterprise-edition
version: 8.2.0
version: 9.0.0
appVersion: 14.2.0
description: Mend Renovate Enterprise Edition
home: https://github.com/mend/renovate-ce-ee
Expand Down
75 changes: 74 additions & 1 deletion helm-charts/mend-renovate-ee/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,79 @@ Expand the name of the worker secret
{{- end -}}
{{- end -}}

{{/*
Expand the name of the worker configmap
*/}}
{{- define "mend-renovate.worker-configmap-name" -}}
{{- include "mend-renovate.fullname" . }}-config-js
{{- end -}}

{{/*
Expand the name of the worker configmap for a pooled worker deployment.
Input dict:
root: full chart context
worker: merged worker values for the current pool
*/}}
{{- define "mend-renovate.worker-configmap-name-for-pool" -}}
{{- if gt (len (default (list) .root.Values.renovateWorker.pools)) 0 -}}
{{- $poolName := required "renovateWorker.pools[].name is required when pools are configured" .worker.name -}}
{{- include "mend-renovate.worker-configmap-name" .root }}-{{ $poolName }}
{{- else -}}
{{- include "mend-renovate.worker-configmap-name" .root -}}
{{- end -}}
{{- end -}}

{{/*
Expand the name of the worker secret for a pooled worker deployment.
Input dict:
root: full chart context
worker: merged worker values for the current pool
*/}}
{{- define "mend-renovate.worker-secret-name-for-pool" -}}
{{- if .worker.existingSecret -}}
{{- .worker.existingSecret -}}
{{- else if gt (len (default (list) .root.Values.renovateWorker.pools)) 0 -}}
{{- $poolName := required "renovateWorker.pools[].name is required when pools are configured" .worker.name -}}
{{- include "mend-renovate.name" .root }}-worker-{{ $poolName }}
{{- else -}}
{{- include "mend-renovate.worker-secret-name" .root -}}
{{- end -}}
{{- end -}}

{{/*
Validate worker pools configuration.
*/}}
{{- define "mend-renovate.validate-worker-pools" -}}
{{- $workerPools := default (list) .Values.renovateWorker.pools -}}
{{- $workerPoolNames := dict -}}

{{- range $pool := $workerPools -}}
{{- $poolName := required "renovateWorker.pools[].name is required when pools are configured" $pool.name -}}

{{- if hasKey $workerPoolNames $poolName -}}
{{- fail (printf "duplicate renovateWorker.pools[].name %q is not allowed" $poolName) -}}
{{- end -}}

{{- $_ := set $workerPoolNames $poolName true -}}

{{- if and (kindIs "map" $pool) (hasKey $pool "serviceAccount") -}}
{{- fail (printf "renovateWorker.pools[%s].serviceAccount is not supported; use renovateWorker.serviceAccount for all worker pools" $poolName) -}}
{{- end -}}

{{- if and (kindIs "map" $pool) (hasKey $pool "npmrc") -}}
{{- fail (printf "renovateWorker.pools[%s].npmrc is not supported; use renovateWorker.npmrc at root level" $poolName) -}}
{{- end -}}

{{- if and (kindIs "map" $pool) (hasKey $pool "npmrcExistingSecret") -}}
{{- fail (printf "renovateWorker.pools[%s].npmrcExistingSecret is not supported; use renovateWorker.npmrcExistingSecret at root level" $poolName) -}}
{{- end -}}

{{- if and (kindIs "map" $pool) (hasKey $pool "extraDeploy") -}}
{{- fail (printf "renovateWorker.pools[%s].extraDeploy is not supported; use extraDeploy at root level" $poolName) -}}
{{- end -}}
{{- end -}}
{{- end -}}

{{/*
Expand the name of the web secret
*/}}
Expand Down Expand Up @@ -98,7 +171,7 @@ Expand the name of the server service account
{{- end -}}

{{/*
Expand the name of the worker service account
Expand the name of the worker service account.
*/}}
{{- define "mend-renovate.worker-service-account-name" -}}
{{- if .Values.renovateWorker.serviceAccount.create -}}
Expand Down
Loading
Loading