Renovate: automatische dependency updates voor Kubernetes en Helm
Renovate is een open-source automatiseringstool die dependency-updates detecteert en als pull requests aanbiedt in je Git-repository. Waar je zonder Renovate handmatig container images, Helm chart-versies, Terraform modules en npm-pakketten moet bijhouden, doet Renovate dat automatisch — voor meer dan 90 package managers tegelijk. Het is de meest configureerbare tool in zijn klasse en is gratis te gebruiken via de hosted GitHub App of self-hosted op Kubernetes.
Waarom Renovate?
Verouderde dependencies zijn een van de meest onderschatte beveiligingsrisico’s. Als je MySQL 8.0.28 draait en 8.0.35 bevat beveiligingspatches, weet je dat alleen als je het actief bijhoudt. Renovate lost dit op door:
- Automatische detectie — scant alle bestanden in je repository op dependency-referenties
- Pull requests per update — elke update krijgt een eigen PR met changelogs en adoptiestatistieken
- Groepering — meerdere gerelateerde updates in één PR (bijv. alle React-pakketten)
- Scheduling — updates alleen buiten kantooruren of op vaste momenten
- Automerge — kleine patch-updates automatisch samenvoegen als tests slagen
- Dependency Dashboard — één GitHub-issue als overzicht van alle pending updates
Snel starten via de GitHub App
# Stap 1: Ga naar github.com/apps/renovate
# Klik op "Install" en selecteer je repository
# Renovate maakt automatisch een "onboarding" PR aan:
# - Voegt renovate.json toe aan de root
# - Toont welke dependencies werden gevonden
# - Geeft een preview van toekomstige updates
# Merge de onboarding PR om Renovate te activeren
Basisconfigurate (renovate.json)
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}
Dit is alles wat je nodig hebt om te starten. “config:recommended” bevat verstandige standaarden: een Dependency Dashboard, semantische commits en veilige update-scheduling.
Configuratie voor Kubernetes en Helm
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"kubernetes": {
"managerFilePatterns": ["/k8s/.+\\.ya?ml$/"]
},
"helm-values": {
"managerFilePatterns": ["/(^|/)values\\.ya?ml$/"]
},
"packageRules": [
{
"matchManagers": ["helm-values"],
"groupName": "Helm values updates",
"automerge": false
},
{
"matchUpdateTypes": ["patch"],
"matchManagers": ["kubernetes"],
"automerge": true,
"automergeType": "pr",
"platformAutomerge": true
}
]
}
Uitgebreide configuratie
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"timezone": "Europe/Amsterdam",
"schedule": ["after 6pm on weekdays", "every weekend"],
"minimumReleaseAge": "7 days",
"dependencyDashboard": true,
"dependencyDashboardTitle": "🔄 Dependency Updates",
"semanticCommits": "enabled",
"packageRules": [
{
"groupName": "React monorepo",
"matchPackagePatterns": ["^react", "^@types/react"]
},
{
"groupName": "Alle niet-major updates",
"matchUpdateTypes": ["minor", "patch", "pin"],
"automerge": true,
"automergeType": "pr",
"platformAutomerge": true
},
{
"matchUpdateTypes": ["major"],
"labels": ["major-update"],
"automerge": false,
"reviewers": ["team-leads"]
},
{
"matchPackagePatterns": [".*"],
"matchUpdateTypes": ["patch"],
"matchCurrentVersion": "/^[0-9]/",
"automerge": true
}
],
"vulnerabilityAlerts": {
"enabled": true,
"labels": ["security"],
"automerge": true
}
}
Renovate voor specifieke ecosystemen
Docker / container images
# Dockerfile FROM node:18.20.0-alpine3.18 # Renovate detecteert dit en opent een PR als 18.20.1 beschikbaar is # Kubernetes manifest containers: - name: nginx image: nginx:1.25.3 # Renovate houdt dit bij # values.yaml (Helm) image: repository: nginx tag: "1.25.3" # Renovate detecteert het conventionele format
Helm charts
# helmfile.yaml releases: - name: ingress-nginx chart: ingress-nginx/ingress-nginx version: 4.9.1 # renovate: datasource=helm registryUrl=https://kubernetes.github.io/ingress-nginx # Chart.yaml (dependencies) dependencies: - name: postgresql version: "13.2.0" repository: https://charts.bitnami.com/bitnami
Terraform
# main.tf — Renovate detecteert module-versies
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.1.0" # Renovate houdt dit bij
}
# Provider-versies
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
Renovate self-hosten op Kubernetes
# CronJob voor periodieke uitvoering
apiVersion: batch/v1
kind: CronJob
metadata:
name: renovate
namespace: renovate
spec:
schedule: "0 */4 * * *" # Elke 4 uur
jobTemplate:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: renovate
image: renovate/renovate:latest
env:
- name: RENOVATE_TOKEN
valueFrom:
secretKeyRef:
name: renovate-secret
key: token
- name: RENOVATE_REPOSITORIES
value: "mijnorg/mijn-repo,mijnorg/andere-repo"
- name: LOG_LEVEL
value: "info"
volumes: []
---
# Secret voor GitHub token
apiVersion: v1
kind: Secret
metadata:
name: renovate-secret
namespace: renovate
type: Opaque
stringData:
token: ghp_jouwGitHubTokenHier
Renovate vs Dependabot
| Eigenschap | Renovate | Dependabot |
|---|---|---|
| Configureerbaar | Zeer uitgebreid | Beperkt |
| Groepering van updates | Ja, flexibel | Beperkt |
| Scheduling | Volledige cron-controle | Dag/week |
| Ecosystemen | 90+ | ~20 |
| Kubernetes manifesten | Ja | Nee |
| Helm charts | Ja | Nee |
| Self-hosting | Ja | Nee (GitHub only) |
| Kosten | Gratis (hosted + self-hosted) | Gratis (GitHub only) |
Praktische tips
- Start met “config:recommended” — de standaardinstelling is al verstandig en veilig
- Gebruik “minimumReleaseAge: 7 days” — voorkomt dat je de eerste versie pakt die direct daarna wordt teruggetrokken
- Pin Docker images naar een specifieke versie — “latest” werkt niet met Renovate; gebruik altijd een versietag
- Activeer automerge voor patches — patch-updates zijn vrijwel altijd veilig; bespaar je reviewtijd
- Gebruik het Dependency Dashboard — één GitHub-issue geeft een helder overzicht van alle pending updates
- Test je configuratie — gebruik de Renovate Config Validator op renovatebot.com voor je een PR maakt
Veelgestelde vragen
Is Renovate gratis?
Ja — Renovate is open-source en de hosted versie (via de GitHub App) is gratis voor publieke en privé repositories. Mend.io (de commerciële backer) biedt ook een betaalde enterprise-versie met extra functies en support.
Hoe verschilt Renovate van Argo CD Image Updater?
Renovate werkt via Git: het detecteert updates en opent pull requests die jij reviewt en merged. Argo CD Image Updater werkt direct in het cluster: het detecteert nieuwe images en update automatisch de Git-repository (of de cluster-staat). Renovate is breder (alle dependencies, niet alleen images) en geeft meer controle. Image Updater is beter geïntegreerd in een pure Argo CD GitOps-workflow.
Kan Renovate werken met een private container registry?
Ja — via “hostRules” in renovate.json kun je credentials opgeven voor private registries (ECR, GCR, Harbor, Artifactory). De tokens worden niet opgeslagen in de repository maar in je CI/CD-secrets.