Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

A Kubernetes CronJob can report Completed even when Renovate has not created the pull requests you expected. In one October 2026 case, a Renovate scan that checked container images, Helm charts, and Terraform providers every two hours first used an invalid preset, then hit OOMKilled at a 512Mi memory limit. The author ultimately reported a 6Gi limit, a 1Gi request, a V8 heap cap, and lower Terraform request concurrency as workable for that particular workload—not as universal Renovate sizing advice.

What happened in this Kubernetes CronJob

David Woitzik describes running Renovate every two hours to check container images, Helm charts, and Terraform provider releases. For two weeks, the CronJob reported “Completed,” but no new GitHub pull requests appeared. The apparent success masked multiple separate issues: invalid Renovate configuration, a container memory failure after configuration validation was corrected, and an expensive provider-update workload. The case is useful because it distinguishes job status from application outcome, and memory tuning from configuration correctness. Woitzik’s account is a single operator’s report, not a controlled benchmark.

Why “Completed” did not mean Renovate did its job

Kubernetes reports whether the Job’s container process completed according to its exit status; it does not know whether Renovate found updates, opened pull requests, or used the intended configuration. In Woitzik’s case, the successful-looking status did not correspond to the expected GitHub activity. Treat those as separate signals: check the pod and job result, then verify the repository outcome that matters for your update cadence.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Renovate’s official self-hosting examples include a Kubernetes CronJob using the Renovate Docker image, so this deployment pattern is supported. The examples do not prescribe Woitzik’s memory values.

Fix configuration errors before tuning memory

The first issue Woitzik found was an invalid preset reference. He replaced it with config:recommended. That is what the case report says he used; preset names and configuration support can change, so check the current Renovate self-hosted configuration documentation before copying it into a deployment.

Configuration validation and memory pressure are different failure modes. Fixing the preset let the workload proceed far enough to expose the memory failure. If a run completes without the expected updates, inspect Renovate’s logs and effective configuration rather than assuming a larger memory limit will resolve it.

What the 6Gi configuration changed—and what it does not prove

After the preset issue was corrected, Woitzik reports that the process was killed under a 512Mi container limit. His example configuration then used a 6Gi memory limit, a 1Gi memory request, and NODE_OPTIONS=--max-old-space-size=896. Those figures describe his environment and full scan in October 2026; they are not a minimum or recommended default for every Renovate job.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Setting or condition Woitzik’s report How to interpret it
Initial container memory limit 512Mi; the process was killed after configuration validation was fixed A result from this case’s workload, not a general threshold
Example request and limit 1Gi request and 6Gi limit The request is the scheduling reservation; the limit is the container’s hard ceiling
Node V8 old-space cap 896MB via NODE_OPTIONS=--max-old-space-size=896 A cap on one part of Node’s memory use, not a cap on total container memory

The heap cap leaves room below the container limit for native/runtime overhead and other processes, as the author explains. Do not treat 896MB as the pod’s total memory use or assume that setting it prevents all OOM events. Kubernetes container limits constrain the container’s total memory; when a process exceeds the limit, the kernel can terminate it. HashiCorp’s Vault Kubernetes resource-limit guide describes that general mechanism, not Renovate-specific behavior.

The memory request and limit serve different purposes. The request helps Kubernetes schedule the pod; the limit is the upper bound enforced for the container. Raising a limit may prevent a kill but can affect node capacity and still will not repair invalid configuration or guarantee a pull request is created.

Why Terraform provider work raised peak memory

Woitzik attributes the heavy part of this scan to Renovate’s Terraform provider compatibility checks and provider downloads. His article estimates compressed provider binaries at 50–200MB each, about 500MB of downloads in a full scan involving four providers and dependencies, and memory use around two to three times higher after decompression and metadata handling. These are the author’s estimates, not independently measured general figures; provider sets and workload details vary.

In this case, setting Terraform concurrentRequestLimit to 2 reduced the reported peak from about 6GB to about 3GB, while making the scan take longer. The trade-off is lower simultaneous work for a longer run, not a free reduction in total work. Measure peak memory and completion time with the providers and update activity your own repository actually uses.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

HashiCorp lists several official artifact channels, including its release site, package channels, Docker images, Helm registry, and Terraform Registry. That context supports the existence of official distribution channels; it does not mean every Terraform provider or binary Renovate downloads is hosted by HashiCorp. See HashiCorp’s official release channels.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Choose a remediation based on the failure you observed

Observed problem Useful response Trade-off or boundary
Configuration validation or preset error Correct the configuration using current Renovate documentation, then inspect logs for validation results More memory does not correct a bad preset
Pod is OOMKilled Review container memory usage and workload; adjust the request/limit and Node heap cap with overhead in mind A larger limit consumes more potential node capacity and does not establish that the job’s outcome is correct
Terraform provider scan has high peak memory Test lower concurrentRequestLimit values, starting with the author’s case-specific value of 2 if appropriate Lower concurrency can lengthen the scan; the reported 6GB-to-3GB change is specific to Woitzik’s run
Job succeeds but no expected pull request appears Check Renovate logs and repository activity against the expected update cadence Zero open Renovate pull requests can be normal when there is nothing to update

Also distinguish pod limits from Docker sidecar controls. Renovate documents dockerCliOptions for constraining sidecar Docker containers and exitCodeForErrors for selecting exit codes across error groups in its self-hosted configuration reference. These settings affect different behaviors and are not substitutes for Kubernetes memory requests or limits.

Monitor Renovate’s outcome, not only the Job phase

Woitzik’s example checks for open pull requests and alerts if none are present on weekdays. That can be a useful pattern only when it matches your repository: a quiet repository may legitimately have no open Renovate pull requests, while a repository with frequent updates may merit an alert when expected activity disappears.

  • Track the Job’s completion and exit status, and retain pod logs long enough to diagnose failures.
  • Check Renovate’s own validation and run output for configuration or provider errors.
  • Define the repository-level signal that represents success, such as expected update branches or pull requests within a relevant time window.
  • Alert on a deviation from that expected cadence rather than unconditionally treating zero open pull requests as failure.
  • When tuning memory or request concurrency, observe both peak resource use and scan duration.

Renovate’s running guide describes the default and -full Docker images. The default image installs needed tools at runtime and supports persistent caching; the full image includes many tools in advance and is several gigabytes in image size. Image size and runtime workload memory are separate considerations, so choosing the larger image does not by itself resolve a provider scan’s memory pressure.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Memory outcomes also vary by workload and environment. In a separate Renovate community discussion, users report differing results for memory failures during Mend-hosted package-manager work, including improvements and unresolved failures. Those reports do not establish a universal fix or directly answer the self-hosted Terraform-provider case.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.