renovate bot automation gids

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

EigenschapRenovateDependabot
ConfigureerbaarZeer uitgebreidBeperkt
Groepering van updatesJa, flexibelBeperkt
SchedulingVolledige cron-controleDag/week
Ecosystemen90+~20
Kubernetes manifestenJaNee
Helm chartsJaNee
Self-hostingJaNee (GitHub only)
KostenGratis (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.