Skip to content

[Feature] Persist logs of finished Renovate jobs (independent of Kubernetes Job TTL) #181

@acuntex

Description

@acuntex

Hi!

First of all, thanks for the great work on the Renovate Operator!

Current Behavior

When clicking on Logs in the Web UI for a Renovate job, the operator fetches the logs directly from the associated Kubernetes Pod.

This works perfectly while the job is still running.

However, if jobTTLSecondsAfterFinished is configured, Kubernetes deletes the Job (and therefore the Pod) after the TTL expires. As a result:

  • The Pod is deleted
  • The logs are no longer available
  • The Web UI cannot display logs for previous runs

Problem

In environments where jobTTLSecondsAfterFinished is enabled (which is a reasonable cleanup strategy), historical logs of Renovate runs are lost shortly after completion.

This makes troubleshooting or reviewing past runs difficult, especially if issues are discovered later.

Proposed Enhancement

It would be great if the Renovate Operator could persist the logs of the last job runs independently of the Kubernetes Job lifecycle.

For example:

  • After a job completes, the operator could retrieve and store the logs.
  • Logs could be persisted in a lightweight storage backend (e.g. SQLite).
  • The Web UI would then fetch logs from this internal storage instead of directly from the Pod when the Pod no longer exists.

Possible Implementation Ideas

  • Store logs per Renovate CR (e.g., last run, maybe with timestamps and status).
  • Keep only the most recent run to avoid unbounded storage growth.
  • Make log persistence configurable (enabled/disabled/storage path).
  • Optionally support a configurable retention policy (e.g., number of runs or time-based retention).

Benefits

  • Logs remain available even when jobTTLSecondsAfterFinished is enabled.
  • Better observability and debugging of past Renovate runs.
  • Cleaner Kubernetes clusters without sacrificing log visibility.

If this idea aligns with the project direction, I’d be happy to help further clarify requirements or discuss possible approaches.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions