Renovate: The Kubernetes-Native Way
Run [Renovate][1] on your own infrastructure with CRD-based scheduling, parallel execution, auto-discovery, and a built-in UI. If you self-host Renovate and already run Kubernetes, this operator gives you the control and observability that plain self-hosted setups lack.
Supports all Renovate platforms: GitHub, GitLab, Bitbucket, Azure DevOps, Gitea, and more. The operator works with any [platform supported by Renovate][4] - simply configure your credentials and platform settings via environment variables or secrets. Note that some platforms have additional operator-specific features like native webhook integrations for GitHub and GitLab.
Comparison with Mend Renovate CE
| Feature | [Mend Renovate CLI][3]| [Mend Renovate Community Self-Hosted (aka "CE")][2] | Renovate Operator | |:---|:---:|:---:|:---:| | Fully open source, no signup or license key | ✅ | ❌ | ✅ | | Automated dependency updates | ✅ | ✅ | ✅ | | Runs on your own infrastructure | ✅ | ✅ | ✅ | | Auto-discovery | ✅ | ✅ | ✅ | | Webhook API for on-demand runs | ❌ | ✅ | ✅ | | Web UI | ❌ | ❌ | ✅ | | Declarative cron scheduling via CRD | ❌ | ❌ | ✅ | | Auto-discovery with group/topic filtering | ❌ | ❌ | ✅ | | Per-project status tracking in-cluster | ❌ | ❌ | ✅ | | Parallel execution with concurrency control | ❌ | ❌ | ✅ | | Prometheus metrics & health checks | ❌ | ✅ | ✅ | | Kubernetes-native pod scheduling | ❌ | ❌ | ✅ | | Leader election for high availability | ❌ | ❌ | ✅ | | Job lifecycle management (TTL, deadlines, retries) | ❌ | ❌ | ✅ |
How it works
- At the defined time of your schedule, a renovate discovery job is started
- After the discovery finished, you will be able to see all your discovered projects in the UI
- All projects are now being set to be scheduled
- Every 10 seconds the operator checks for scheduled projects and starts a new renovate job
- Only as many jobs as defined in
spec.parallelismare getting executed at the same time
Installation
Helm
Option 1: OCI Registry
helm -n renovate-operator upgrade --install renovate-operator \
oci://ghcr.io/mogenius/helm-charts/renovate-operator \
--create-namespace --wait
Option 2: Helm Repository
helm repo add mogenius https://helm.mogenius.com/public --force-update
helm -n renovate-operator upgrade --install renovate-operator mogenius/renovate-operator --create-namespace --wait
Documentation
- Getting Started — install, first RenovateJob, platform setup
- Full documentation index
Contributing
Made with contrib.rocks.
Development
Running the operator locally
Prerequisites: just must be installed.
- Export
KUBECONFIGwith the absolute path to your kubeconfig —~is not expanded, so use$HOMEor the full path:
export KUBECONFIG=/Users/yourname/.kube/config
# or
export KUBECONFIG=$HOME/.kube/config
- Start the operator against the current context in that kubeconfig:
just run
KUBECONFIG may also name several files separated by :; they are merged the
way kubectl merges them.
A local run has no pod and therefore no namespace of its own. The setup guide's
secret check refuses every namespace in that state — deliberately, so a
cluster-exposed UI cannot probe secrets in namespaces that are none of its
business — and logs why. Export POD_NAMESPACE with the namespace you are
setting up to exercise that step locally:
export POD_NAMESPACE=renovate-operator
just run loads .env, so both variables can live there instead of your shell.
Running Tests
| Command | Description |
|----------------------|----------------------------------|
| just test-unit | Run the unit test suite |
| just golangci-lint | Run the linter |
| just check | Run all checks (tests + linters) |
| just generate | Regenerate CRDs |
[1]: https://github.com/renovatebot/renovate [2]: https://docs.mend.io/renovate/latest/ [3]: https://docs.renovatebot.com/ [4]: https://docs.renovatebot.com/modules/platform/