chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.73 #153

Open
renovate-bot wants to merge 1 commit from renovate/ghcr.io-archivebox-archivebox-0.x into main
Member

This PR contains the following updates:

Package Update Change
ghcr.io/archivebox/archivebox minor 0.7.3 → 0.9.73

Release Notes

ArchiveBox/ArchiveBox (ghcr.io/archivebox/archivebox)

v0.9.73: : Google Docs, Drive & Dropbox archiving, mobile replay, and faster archives

Compare Source

Changes since v0.9.71

Four new plugins for cloud documents, shared folders, and better mobile replay — plus faster large archives and a more useful file browser.

  • 📄 Save Google Docs, Sheets, Slides, Google Drive, and Dropbox files. The new Google Drive plugin, Google Docs plugin, and Dropbox plugin export as ZIP, DOCX, XLSX, PPTX, CSV, PDF, SVG, and more. Supports both public & private docs using existing cookies, no separate OAuth setup needed. Automatically OCRs + full-text-search-indexes images PDFs, and other saved files with Liteparse too!
  • 📱 Fewer broken images when replaying on a phone. The new Mobile Size plugin briefly visits a phone-width layout after saving desktop outputs, allowing you to view your saved pages nicely on a Mobile device even if the main capture was made in a dekstop browser.
  • 🗂️ A better file explorer UI inside your snapshot cards.
  • ⚡ Performance improvements to adding new URLs. Adding & viewing new URLs is now significantly faster even when the /data dir is on slower networked storage. Large crawls with 1,000+ URLs are also significantly faster, and long-running captures use less memory.
  • 🗑️ Deleting 100+ snapshots no longer crashes. Snapshot deletion now runs in the background because deletion of many snapshots can be slow on remote storage. If file removal fails, the snapshot stays tracked for another attempt rather than disappearing from the database while its files remain behind.
  • 🔐 Persona & Cookies.txt file fixes. Bugfixes around auth and cookie file path handling in some edge cases.
  • 🛠️ And more... Fixes improve SingleFile and WACZ downloads, PDF text extraction, and handling of cloud-folder links. Rescanning older archives recovers previously missing results, more cards are properly hidden with noresults when they don't contain meaningful output

Full changelog · 0.9 announcement

v0.9.71: : UI fixes for small screens, performance and correctness improvementns

Compare Source

Changes since v0.9.70

  • 📱 Cleaner snapshot card UI on narrow screens. Long tags and labels fit more gracefully in the public list and admin grid.
  • ⚡ Faster browsing in large archives. Public snapshot pages render without waiting to count the whole collection, and reuse saved metadata instead of repeatedly querying each item. Totals may appear on a later reload while captures are running.
  • 📊 Lighter live progress. Progress checks use read-only, indexed queries instead of performing filesystem and lifecycle work on each poll. Waiting for a tool's first result no longer burns a CPU core.
  • 🔄 More reliable stops, restarts and runner takeover. Fix shutdown hangs while reaping child processes and honor interruptions during resumed startup. A displaced runner leaves captures available for its replacement to resume; an explicit user abort still seals that capture attempt.
  • 🔗 Preserve apostrophes in imported URLs. Shared parsing now respects the surrounding text, Markdown, CSV or JSON format instead of cutting URLs off at an embedded quote.
  • 🌐 More dependable browser captures. ArchiveWeb.page's helper stays in the background, and capture readiness checks continue to work when that tab is hidden. Browser-extension upload recovery reuses the existing hook index.
  • 🛠️ Various Python and Node abxpkg plugin auto-installation bugfixes.

Full changelog · 0.9 announcement

v0.9.70: : Performance improvements and bugfixes

Compare Source

Changes since v0.9.64

  • 🛠️ Fix an upgrade bug that could leave the background runner using 100% CPU with nothing left to archive. Existing affected collections are repaired automatically during upgrade. #​1892
  • 🧠 Adjust parallel captures to the memory available on your server, using the memory consumed by actual captures to decide when to start more work.
  • 🔐 Reduce TLSNotary's memory use by loading its extension only when needed and avoiding a second rendered copy of the page. Check available memory before proving, and stop the proof with a clear error if memory runs low. Clean up verification windows without closing your original page or unrelated tabs.
  • 📦 Improve WACZ captures of pages that use service workers. If your app cannot play a WACZ, the viewer now offers an Open in browser button.
  • 🔎 Fix search commands when no virtual environment is activated.
  • 🔄 Stop unnecessary progress polling after opening a saved output, and fix occasional CLI startup failures during concurrent database activity.
  • 📁 Fix folder and ZIP links for older snapshots whose saved files live directly in the snapshot directory.
  • ⬆️ Fix startup after upgrading older 0.6.x collections that created their own migration files. #​1891

Full changelog · 0.9 announcement

v0.9.64: : More compact UI on Snapshot detail and list pages

Compare Source

Highlights

Screenshot 2026-09-26 at 10 48 20 PM Screenshot 2026-09-26 at 10 47 39 PM
  • 🗂️ Much more compact snapshot detail page header and list view
  • 🗃️ Fixed migrated snapshots failing to open, including archives created in non-UTC time zones.
  • 📄 ArchiveResult admin page improvements, better output files summary in admin views
  • 📚 Improved article text extraction that preserves original image sizes, fixed SingleFile to avoid re-capturing Chrome's PDF viewer
  • 🖼️ Improved capture of pages with images still loading, and made failed or empty downloads and WACZ exports easier to spot.
  • 🔎 Fixed archive searches failing to start after reindexing.

Historic Context on the Recent Filesystem Migrations

0.7.x -> 0.9.x is the first time we've ever changed the filesystem layout of the data/ dir, because we're now moving to a model where snapshots are separated on disk by the user/{username} that owns them. This move also allowed us to solve longstanding issues with large collection performance that were caused by storing 10k+ directories in a single snapshot directory, the new layout puts them in a tree under user>recordtype>date>origin>uuid, which can hopefully be stable for a long time and scale to trillions of entries.

There are two ways we could've handle this (potentially massive) filesystem migration for people's existing data coming from 0.7.x:

  • lazily move files to new locations when they are first accessed (to avoid needing to do a huge slow migration all at once)
  • eagerly move files during the updating process, or ask users to run a command that does it all at once (archivebox update --migrate-only)

Initially I tried to do it lazily on first access, but it is really hard to predict the load characterestics of the server / decide when to migrate things without wild spiky performance issues. e.g. if you load a big list of snapshots and open them all at once, it can easily crash the server unless we build a whole system to manage load. After much tinkering I decided it was better to have users explicitly run a command to migrate everything at once, and to build a few branches into the UI code to check for both the old structure and the new structure temporarily until migrations finish.

Predictably this has led to some bugs and in increased complexity around URLs and deeplinks into specific snapshot content (e.g. you may have noticed the icons from the snapshot list view lead to 404s when clicked on old migrated data). I apologize for these issues if you've run into them, but trust that your data is still there, it's just a bug in the UI code deciding to check for old locations vs new locations. Please help report bugs and open Github issues if you encounter anything like that!

v0.9.51

Compare Source

v0.9.50: : CLI live progress fixes and progress

Compare Source

Changes since v0.9.36

  • 🛠️ Fix crawl interruption, runner takeover, and Ctrl+C handling; drain active hooks cleanly when stopping.
  • 🕷️ Fix crawl limits, abort handling, and replay behavior.
  • 📦 Verify bundled hooks and their dependencies before promoting releases to PyPI and Docker.
  • ⬆️ Update the downloader and plugin dependencies, including abx-dl 1.13.27.

Full changelog · Full 0.9 announcement

v0.9.36: : ⭐️ MAJOR RELEASE - TONS OF IMPROVEMENTS

Compare Source

ArchiveBox v0.9 is now released. 🎉

It's been a long time since our last major release back in 2024!
Thanks for hanging in there, but I promise this release was worth the wait!

↗️ ArchiveBox 0.9 brings an entirely new archiving engine, massive performance & stability gains, UI improvements, all-new mobile & desktop apps, and 50+ new plugins.

📖 Read the full Announcement Post ↗️

✨ The big changes

  • 📱 NEW Native Mobile & Desktop Apps: iPhone / iPad / Android   |   macOS / Windows / Linux
  • 🗂️ Redesigned output viewers: beautiful new viewers for article text, extracted video/audio, metadata + more
  • 🧭 Vastly improved browser extension: import bookmarks/history, uploads local screenshot & MHTML
  • 🐘 PostgreSQL support: SQLite remains the default, but we caved to demand and finally added PostgreSQL
  • 🗓️ Scheduled crawls in the UI: schedule recurring import jobs directly from the UI, all in one Docker container
  • 👤 Personas: archive sites logged-in using cookies & settings synced from extension, CDP, or local browsers
  • 🤖 AI Tools: new MCP server, SKILL.md, and built-in agent (opencode) that can handle custom archiving tasks
  • 🔏 Bulletproof chain-of-custody: new merkle hashes, TLSNotary attestation, and OpenTimestamps integration
  • ⬇️ A new standalone oneshot CLI: abx-dl uses the same plugins without needing a full ArchiveBox server

ArchiveBox for macOS

🗂️ More useful saved pages

  • Responsive layouts across phone, tablet, and desktop.
  • Expandable output stacks group related capture formats together.
  • Article and document readers for extracted text, including PDF extraction outputs.
  • Media galleries and players for images, audio, video, and captured browser responses.
  • Repository previews with a file browser and rendered README.
  • Readable metadata views: redirects, headers, DNS, certificates, accessibility trees, browser activity, and console logs.
  • View raw, download one output, browse all files, or download a snapshot ZIP.
New metadata cards and expandable output stacks

🛠️ More ways to automate it

  • Expanded REST API for crawls, snapshots, results, tags, users, tokens, and operational state.
  • Pipeable JSONL CLI commands to create, read, update, delete, and enqueue model records.
  • Webhooks for integrating archive events with other systems.
  • Standalone abx-dl for one-shot downloads using the same plugin library, without a collection database or web server.

⬆️ Upgrading from 0.7.x

Make a full offsite backup of your archive before proceeding, and be aware 0.9 will move some data/ dir files to new filesystem locations. Filesystem migration is done lazily, and can be interrupted / resumed at will.

  1. Stop the old server. docker compose down
  2. Back up the entire collection: database, configuration, archive files, and browser Personas. A database-only backup isn't enough.
  3. Install 0.9.x following the instructions for your platform. See https://archivebox.io
  4. Run archivebox init to upgrade the database. Migrations can take minutes to hours depending on db size.
  5. Run archivebox update --migrate-only to start migrating filesystem data to the new locations (if this step is skipped, it will happen lazily on first access and may slow down the UI)
  6. Keep the backup until you've verified the final setup looks good!

For Docker Compose, update your docker-compose.yml first, then:

docker compose run archivebox init
docker compose run archivebox update --migrate-only
docker compose down --remove-orphans
docker compose up -d
Upgrade Notes
  • We now recommend >= 2GB RAM minimum, though it does still work (slowly) on smaller systems.
  • Custom config should be moved out of docker-compose.yml environment: into data/ArchiveBox.conf: otherwise you wont be able to edit it via the new built-in Machine config admin UI
  • Python >=3.13+ is now required if installing on bare metal.
  • New filesystem layout for data/archive/ snapshot directories. Files will get auto-migrated on first access.
    data/archive/{timestamp} -> data/archive/users/{username}/snapshots/YYYYMMDD/example.com/{uuid}
  • New DNS, SSL, and HTTPS serving requirements: For better security, wildcard subdomain support was added to isolate archived JS, but new DNS+TLS settings are needed (BASE_URL + SERVER_SECURITY_MODE).
  • PostgreSQL support is added, ask your agent to help migrating data from SQLite if desired.

Upgrade guide · Merging collections · 🐛 Report an issue

A lot of what we promised in The Future of ArchiveBox is now here!

Read the full announcement →

Full Changelog: https://github.com/ArchiveBox/ArchiveBox/compare/v0.7.4...v0.9.36


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/archivebox/archivebox](https://github.com/ArchiveBox/ArchiveBox) | minor | `0.7.3` → `0.9.73` | --- ### Release Notes <details> <summary>ArchiveBox/ArchiveBox (ghcr.io/archivebox/archivebox)</summary> ### [`v0.9.73`](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.73): : Google Docs, Drive & Dropbox archiving, mobile replay, and faster archives [Compare Source](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.71...v0.9.73) #### Changes since v0.9.71 **Four new plugins for cloud documents, shared folders, and better mobile replay — plus faster large archives and a more useful file browser.** - 📄 **Save Google Docs, Sheets, Slides, Google Drive, and Dropbox files.** The new [Google Drive plugin](https://plugins.archivebox.io/#googledrive), [Google Docs plugin](https://plugins.archivebox.io/#googledocs), and [Dropbox plugin](https://plugins.archivebox.io/#dropbox) export as ZIP, DOCX, XLSX, PPTX, CSV, PDF, SVG, and more. Supports both public & private docs using existing cookies, no separate OAuth setup needed. Automatically OCRs + full-text-search-indexes images PDFs, and other saved files with Liteparse too! <img width="400" align="center" src="https://github.com/user-attachments/assets/3dbb5956-d130-44e8-956f-cbd141b45890" /> - 📱 **Fewer broken images when replaying on a phone.** The new [Mobile Size plugin](https://plugins.archivebox.io/#mobilesize) briefly visits a phone-width layout after saving desktop outputs, allowing you to view your saved pages nicely on a Mobile device even if the main capture was made in a dekstop browser. - 🗂️ **A better file explorer UI inside your snapshot cards.** - ⚡ **Performance improvements to adding new URLs.** Adding & viewing new URLs is now significantly faster even when the `/data` dir is on slower networked storage. Large crawls with 1,000+ URLs are also significantly faster, and long-running captures use less memory. - 🗑️ **Deleting 100+ snapshots no longer crashes.** Snapshot deletion now runs in the background because deletion of many snapshots can be slow on remote storage. If file removal fails, the snapshot stays tracked for another attempt rather than disappearing from the database while its files remain behind. - 🔐 **Persona & `Cookies.txt` file fixes.** Bugfixes around auth and cookie file path handling in some edge cases. - 🛠️ **And more...** Fixes improve SingleFile and WACZ downloads, PDF text extraction, and handling of cloud-folder links. Rescanning older archives recovers previously missing results, more cards are properly hidden with `noresults` when they don't contain meaningful output <img width="32%" src="https://archivebox.io/screenshots/snapshot-view-googledocs-desktop.png"/><img width="32%" src="https://archivebox.io/screenshots/snapshot-view-googledrive-desktop.png"/><img width="32%" src="https://archivebox.io/screenshots/snapshot-view-dropbox-desktop.png"/> [Full changelog](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.71...v0.9.73) · [0.9 announcement](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.36) ### [`v0.9.71`](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.71): : UI fixes for small screens, performance and correctness improvementns [Compare Source](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.70...v0.9.71) #### Changes since v0.9.70 - 📱 **Cleaner snapshot card UI on narrow screens.** Long tags and labels fit more gracefully in the public list and admin grid. - ⚡ **Faster browsing in large archives.** Public snapshot pages render without waiting to count the whole collection, and reuse saved metadata instead of repeatedly querying each item. Totals may appear on a later reload while captures are running. - 📊 **Lighter live progress.** Progress checks use read-only, indexed queries instead of performing filesystem and lifecycle work on each poll. Waiting for a tool's first result no longer burns a CPU core. - 🔄 **More reliable stops, restarts and runner takeover.** Fix shutdown hangs while reaping child processes and honor interruptions during resumed startup. A displaced runner leaves captures available for its replacement to resume; an explicit user abort still seals that capture attempt. - 🔗 **Preserve apostrophes in imported URLs.** Shared parsing now respects the surrounding text, Markdown, CSV or JSON format instead of cutting URLs off at an embedded quote. - 🌐 **More dependable browser captures.** ArchiveWeb.page's helper stays in the background, and capture readiness checks continue to work when that tab is hidden. Browser-extension upload recovery reuses the existing hook index. - 🛠️ **Various Python and Node `abxpkg` plugin auto-installation bugfixes.** [Full changelog](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.70...v0.9.71) · [0.9 announcement](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.36) ### [`v0.9.70`](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.70): : Performance improvements and bugfixes [Compare Source](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.64...v0.9.70) #### Changes since v0.9.64 - 🛠️ Fix an upgrade bug that could leave the background runner using 100% CPU with nothing left to archive. Existing affected collections are repaired automatically during upgrade. [#&#8203;1892](https://github.com/ArchiveBox/ArchiveBox/issues/1892) - 🧠 Adjust parallel captures to the memory available on your server, using the memory consumed by actual captures to decide when to start more work. - 🔐 Reduce TLSNotary's memory use by loading its extension only when needed and avoiding a second rendered copy of the page. Check available memory before proving, and stop the proof with a clear error if memory runs low. Clean up verification windows without closing your original page or unrelated tabs. - 📦 Improve WACZ captures of pages that use service workers. If your app cannot play a WACZ, the viewer now offers an **Open in browser** button. - 🔎 Fix search commands when no virtual environment is activated. - 🔄 Stop unnecessary progress polling after opening a saved output, and fix occasional CLI startup failures during concurrent database activity. - 📁 Fix folder and ZIP links for older snapshots whose saved files live directly in the snapshot directory. - ⬆️ Fix startup after upgrading older 0.6.x collections that created their own migration files. [#&#8203;1891](https://github.com/ArchiveBox/ArchiveBox/issues/1891) [Full changelog](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.64...v0.9.70) · [0.9 announcement](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.36) ### [`v0.9.64`](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.64): : More compact UI on Snapshot detail and list pages [Compare Source](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.51...v0.9.64) #### Highlights <img width="910" height="397" alt="Screenshot 2026-09-26 at 10 48 20 PM" src="https://github.com/user-attachments/assets/73974a56-0650-4692-ace8-252a8fdafc6b" /> <img width="912" height="170" alt="Screenshot 2026-09-26 at 10 47 39 PM" src="https://github.com/user-attachments/assets/62991aed-d68c-46bd-8704-9f6b493fd5a8" /> - 🗂️ Much more compact snapshot detail page header and list view - 🗃️ Fixed migrated snapshots failing to open, including archives created in non-UTC time zones. - 📄 ArchiveResult admin page improvements, better output files summary in admin views - 📚 Improved article text extraction that preserves original image sizes, fixed SingleFile to avoid re-capturing Chrome's PDF viewer - 🖼️ Improved capture of pages with images still loading, and made failed or empty downloads and WACZ exports easier to spot. - 🔎 Fixed archive searches failing to start after reindexing. *** ##### Historic Context on the Recent Filesystem Migrations `0.7.x` -> `0.9.x` is the first time we've ever changed the filesystem layout of the `data/` dir, because we're now moving to a model where snapshots are separated on disk by the `user/{username}` that owns them. This move also allowed us to solve longstanding issues with large collection performance that were caused by storing 10k+ directories in a single snapshot directory, the new layout puts them in a tree under `user>recordtype>date>origin>uuid`, which can hopefully be stable for a long time and scale to trillions of entries. There are two ways we could've handle this (potentially massive) filesystem migration for people's existing data coming from `0.7.x`: - lazily move files to new locations when they are first accessed (to avoid needing to do a huge slow migration all at once) - eagerly move files during the updating process, or ask users to run a command that does it all at once (`archivebox update --migrate-only`) Initially I tried to do it lazily on first access, but it is really hard to predict the load characterestics of the server / decide when to migrate things without wild spiky performance issues. e.g. if you load a big list of snapshots and open them all at once, it can easily crash the server unless we build a whole system to manage load. After much tinkering I decided it was better to have users explicitly run a command to migrate everything at once, and to build a few branches into the UI code to check for both the old structure and the new structure temporarily until migrations finish. Predictably this has led to some bugs and in increased complexity around URLs and deeplinks into specific snapshot content (e.g. you may have noticed the icons from the snapshot list view lead to 404s when clicked on old migrated data). I apologize for these issues if you've run into them, but trust that your data is still there, it's just a bug in the UI code deciding to check for old locations vs new locations. Please help report bugs and open Github issues if you encounter anything like that! ### [`v0.9.51`](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.50...v0.9.51) [Compare Source](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.50...v0.9.51) ### [`v0.9.50`](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.50): : CLI live progress fixes and progress [Compare Source](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.36...v0.9.50) #### Changes since v0.9.36 - 🛠️ Fix crawl interruption, runner takeover, and Ctrl+C handling; drain active hooks cleanly when stopping. - 🕷️ Fix crawl limits, abort handling, and replay behavior. - 📦 Verify bundled hooks and their dependencies before promoting releases to PyPI and Docker. - ⬆️ Update the downloader and plugin dependencies, including `abx-dl` 1.13.27. [Full changelog](https://github.com/ArchiveBox/ArchiveBox/compare/v0.9.36...v0.9.50) · [Full 0.9 announcement](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.36) ### [`v0.9.36`](https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.9.36): : ⭐️ MAJOR RELEASE - TONS OF IMPROVEMENTS [Compare Source](https://github.com/ArchiveBox/ArchiveBox/compare/v0.7.3...v0.9.36) ### ArchiveBox v0.9 is now released. 🎉 It's been a long time since our last major release back in 2024! Thanks for hanging in there, but I promise this release was worth the wait! **[↗️ ArchiveBox 0.9](https://archivebox.io)** brings an entirely new archiving engine, massive performance & stability gains, UI improvements, all-new mobile & desktop apps, and 50+ new plugins. > ## [📖 Read the full Announcement Post ↗️](https://docs.sweeting.me/s/archivebox-v0.9-announcement) #### ✨ The big changes - 📱 **NEW Native Mobile & Desktop Apps:** [iPhone](https://app.archivebox.io/) / [iPad](https://app.archivebox.io/) / [Android](https://android.archivebox.io/)   |   [macOS](https://app.archivebox.io/) / [Windows](https://electron.archivebox.io/) / [Linux](https://electron.archivebox.io/) - 🗂️ **Redesigned output viewers:** beautiful new viewers for article text, extracted video/audio, metadata + more - 🧭 **Vastly improved browser extension:** import bookmarks/history, uploads local screenshot & MHTML - 🐘 **PostgreSQL support:** SQLite remains the default, but we caved to demand and finally added PostgreSQL - 🗓️ **Scheduled crawls in the UI:** schedule recurring import jobs directly from the UI, all in one Docker container - 👤 **Personas:** archive sites logged-in using cookies & settings synced from extension, CDP, or local browsers - 🤖 **AI Tools:** new MCP server, SKILL.md, and built-in agent (opencode) that can handle custom archiving tasks - 🔏 **Bulletproof chain-of-custody:** new merkle hashes, TLSNotary attestation, and OpenTimestamps integration - ⬇️ **A new standalone oneshot CLI:** `abx-dl` uses the same plugins without needing a full ArchiveBox server <img src="https://docs.monadical.com/uploads/8c5b7349-f5c2-4db8-94ec-1addb8591d24.png" width="49%"/><img src="https://app.archivebox.io/screenshots/images/macos/snapshots.png?v=1b23a271df90" alt="ArchiveBox for macOS" width="50%"> #### 🗂️ More useful saved pages - **Responsive layouts** across phone, tablet, and desktop. - **Expandable output stacks** group related capture formats together. - **Article and document readers** for extracted text, including PDF extraction outputs. - **Media galleries and players** for images, audio, video, and captured browser responses. - **Repository previews** with a file browser and rendered README. - **Readable metadata views:** redirects, headers, DNS, certificates, accessibility trees, browser activity, and console logs. - **View raw, download one output, browse all files, or download a snapshot ZIP.** <img src="https://archivebox.io/screenshots/snapshot-view-sslcerts-tablet.png" alt="New metadata cards and expandable output stacks" width="300"> #### 🛠️ More ways to automate it - **Expanded REST API** for crawls, snapshots, results, tags, users, tokens, and operational state. - **Pipeable JSONL CLI commands** to create, read, update, delete, and enqueue model records. - **Webhooks** for integrating archive events with other systems. - **Standalone `abx-dl`** for one-shot downloads using the same plugin library, without a collection database or web server. #### ⬆️ Upgrading from 0.7.x **Make a full offsite backup of your archive before proceeding, and be aware 0.9 will move some data/ dir files to new filesystem locations.** Filesystem migration is done lazily, and can be interrupted / resumed at will. 1. **Stop the old server.** `docker compose down` 2. **Back up the entire collection:** database, configuration, archive files, and browser Personas. A database-only backup isn't enough. 3. **Install 0.9.x following the instructions for your platform.** See <https://archivebox.io> 4. **Run `archivebox init` to upgrade the database.** Migrations can take minutes to hours depending on db size. 5. Run `archivebox update --migrate-only` to start migrating filesystem data to the new locations (if this step is skipped, it will happen lazily on first access and may slow down the UI) 6. **Keep the backup until you've verified the final setup looks good!** For Docker Compose, **update your [`docker-compose.yml`](https://docker-compose.archivebox.io) first**, then: ```bash docker compose run archivebox init docker compose run archivebox update --migrate-only docker compose down --remove-orphans docker compose up -d ``` ##### Upgrade Notes - We now recommend >= `2GB` RAM minimum, though it does still work (slowly) on smaller systems. - **Custom config should be moved out of `docker-compose.yml` `environment:` into `data/ArchiveBox.conf`:** otherwise you wont be able to edit it via the new built-in Machine config admin UI - **Python >=3.13+** is now required if installing on bare metal. - **New filesystem layout** for `data/archive/` snapshot directories. Files will get auto-migrated on first access. `data/archive/{timestamp}` -> `data/archive/users/{username}/snapshots/YYYYMMDD/example.com/{uuid}` - **New DNS, SSL, and HTTPS serving requirements:** For better security, wildcard subdomain support was added to isolate archived JS, but new DNS+TLS settings are needed ([`BASE_URL`](https://github.com/ArchiveBox/ArchiveBox/wiki/Configuration#base_url) + [`SERVER_SECURITY_MODE`](https://github.com/ArchiveBox/ArchiveBox/wiki/Configuration#server_security_mode)). - **[PostgreSQL support is added](https://github.com/ArchiveBox/ArchiveBox/wiki/Configuration#database_engine)**, ask your agent to help migrating data from SQLite if desired. [Upgrade guide](https://github.com/ArchiveBox/ArchiveBox/wiki/Upgrading) · [Merging collections](https://github.com/ArchiveBox/ArchiveBox/blob/dev/docs/Merging-Collections.md) · [🐛 Report an issue](https://github.com/ArchiveBox/ArchiveBox/issues/new/choose) A lot of what we promised in [The Future of ArchiveBox](https://docs.monadical.com/archivebox-plugin-ecosystem-announcement) is now here! [Read the full announcement →](https://docs.monadical.com/s/archivebox-v0.9-announcement) **Full Changelog:** <https://github.com/ArchiveBox/ArchiveBox/compare/v0.7.4...v0.9.36> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTMuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.36
All checks were successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
22f2152403
Member

flate diff

rules  (rbac.authorization.k8s.io/v1/ClusterRole/nvidia-device-plugin-node-feature-discovery-gc)
  + one list entry added:
    - resources:
      - nodes/proxy
      apiGroups:
      -
      verbs:
      - get

rules  (rbac.authorization.k8s.io/v1/ClusterRole/nvidia-device-plugin-role)
  - one list entry removed:     + one list entry added:
    - resources:                  - resources:
      - nodefeatures                - nodefeatures
      apiGroups:                    apiGroups:
      - nfd.k8s-sigs.io             - nfd.k8s-sigs.io
      verbs:                        verbs:
      - get                         - get
      - list                        - list
      - watch                       - watch
      - create                      - create
      - update                      - update
      - delete

spec  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker)
  - one map entry removed:
    updateStrategy:
      rollingUpdate:
        maxUnavailable: 10%

spec.template.spec  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker)
  - one map entry removed:
    imagePullSecrets: null

spec.template.spec.containers.worker.args  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker)
  - two list entries removed:     + three list entries added:
    - "-owner-refs=pod,ds"          - "-feature-gates=NodeFeatureGroupAPI=false"
    - "-port=8080"                  - "-metrics=8081"
                                    - "-grpc-health=8082"

spec.template.spec.containers.worker.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker)
  ± value change
    - registry.k8s.io/nfd/node-feature-discovery:v0.19.0
    + registry.k8s.io/nfd/node-feature-discovery:v0.17.3

spec.template.spec.containers.worker.livenessProbe  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker)
  - one map entry removed:     + one map entry added:
    httpGet:                     grpc:
      path: /healthz               port: 8082
      port: http

spec.template.spec.containers.worker.ports  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker)
  - one list entry removed:     + two list entries added:
    - name: http                  - name: metrics
      containerPort: 8080           containerPort: 8081
                                  - name: health
                                    containerPort: 8082

spec.template.spec.containers.worker.readinessProbe  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker)
  - one map entry removed:     + one map entry added:
    httpGet:                     grpc:
      path: /healthz               port: 8082
      port: http

spec.template.spec.containers.nvidia-device-plugin-sidecar.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.containers.nvidia-device-plugin-ctr.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.initContainers.nvidia-device-plugin-init.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.containers.gpu-feature-discovery-sidecar.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-gpu-feature-discovery)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.containers.gpu-feature-discovery-ctr.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-gpu-feature-discovery)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.initContainers.gpu-feature-discovery-init.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-gpu-feature-discovery)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.containers.mps-control-daemon-sidecar.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-mps-control-daemon)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.containers.mps-control-daemon-ctr.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-mps-control-daemon)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.initContainers.mps-control-daemon-mounts.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-mps-control-daemon)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec.initContainers.mps-control-daemon-init.image  (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-mps-control-daemon)
  ± value change
    - nvcr.io/nvidia/k8s-device-plugin:v0.20.1
    + nvcr.io/nvidia/k8s-device-plugin:v0.19.3

spec.template.spec  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  - two map entries removed:
    dnsPolicy: ClusterFirstWithHostNet
    imagePullSecrets: null

spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  + one list entry added:
    - preference:
        matchExpressions:
        - key: node-role.kubernetes.io/master
          operator: In
          values:
          -
      weight: 1

spec.template.spec.containers.master.args  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  - one list entry removed:     + four list entries added:
    - "-port=8080"                - "-enable-leader-election"
                                  - "-feature-gates=NodeFeatureGroupAPI=false"
                                  - "-metrics=8081"
                                  - "-grpc-health=8082"

spec.template.spec.containers.master.image  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  ± value change
    - registry.k8s.io/nfd/node-feature-discovery:v0.19.0
    + registry.k8s.io/nfd/node-feature-discovery:v0.17.3

spec.template.spec.containers.master.livenessProbe  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  - one map entry removed:     + one map entry added:
    httpGet:                     grpc:
      path: /healthz               port: 8082
      port: http

spec.template.spec.containers.master.ports  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  - one list entry removed:     + two list entries added:
    - name: http                  - name: metrics
      containerPort: 8080           containerPort: 8081
                                  - name: health
                                    containerPort: 8082

spec.template.spec.containers.master.readinessProbe  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  - one map entry removed:     + one map entry added:
    httpGet:                     grpc:
      path: /healthz               port: 8082
      port: http

spec.template.spec.containers.master.startupProbe  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  - one map entry removed:     + one map entry added:
    httpGet:                     grpc:
      path: /healthz               port: 8082
      port: http

spec.template.spec.tolerations  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master)
  + one list entry added:
    - key: node-role.kubernetes.io/master
      effect: NoSchedule
      operator: Equal
      value:

spec.template.spec  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-gc)
  - one map entry removed:
    imagePullSecrets: null

spec.template.spec.containers.gc  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-gc)
  - two map entries removed:
    livenessProbe:
      httpGet:
        path: /healthz
        port: http
      initialDelaySeconds: 10
    readinessProbe:
      httpGet:
        path: /healthz
        port: http
      initialDelaySeconds: 5

spec.template.spec.containers.gc.image  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-gc)
  ± value change
    - registry.k8s.io/nfd/node-feature-discovery:v0.19.0
    + registry.k8s.io/nfd/node-feature-discovery:v0.17.3

spec.template.spec.containers.gc.ports  (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-gc)
  - one list entry removed:     + one list entry added:
    - name: http                  - name: metrics
      containerPort: 8080           containerPort: 8081

spec  (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune)
  - one map entry removed:
    ttlSecondsAfterFinished: 3600

spec.template.spec  (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune)
  - one map entry removed:
    imagePullSecrets: null

spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution  (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune)
  + one list entry added:
    - preference:
        matchExpressions:
        - key: node-role.kubernetes.io/master
          operator: In
          values:
          -
      weight: 1

spec.template.spec.containers.nfd-master  (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune)
  - one map entry removed:
    resources:
      limits:
        memory: 4Gi
      requests:
        cpu: 100m
        memory: 128Mi

spec.template.spec.containers.nfd-master.image  (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune)
  ± value change
    - registry.k8s.io/nfd/node-feature-discovery:v0.19.0
    + registry.k8s.io/nfd/node-feature-discovery:v0.17.3

spec.template.spec.tolerations  (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune)
  + one list entry added:
    - key: node-role.kubernetes.io/master
      effect: NoSchedule
      operator: Equal
      value:

Pipeline

## flate diff ``` rules (rbac.authorization.k8s.io/v1/ClusterRole/nvidia-device-plugin-node-feature-discovery-gc) + one list entry added: - resources: - nodes/proxy apiGroups: - verbs: - get rules (rbac.authorization.k8s.io/v1/ClusterRole/nvidia-device-plugin-role) - one list entry removed: + one list entry added: - resources: - resources: - nodefeatures - nodefeatures apiGroups: apiGroups: - nfd.k8s-sigs.io - nfd.k8s-sigs.io verbs: verbs: - get - get - list - list - watch - watch - create - create - update - update - delete spec (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker) - one map entry removed: updateStrategy: rollingUpdate: maxUnavailable: 10% spec.template.spec (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker) - one map entry removed: imagePullSecrets: null spec.template.spec.containers.worker.args (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker) - two list entries removed: + three list entries added: - "-owner-refs=pod,ds" - "-feature-gates=NodeFeatureGroupAPI=false" - "-port=8080" - "-metrics=8081" - "-grpc-health=8082" spec.template.spec.containers.worker.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker) ± value change - registry.k8s.io/nfd/node-feature-discovery:v0.19.0 + registry.k8s.io/nfd/node-feature-discovery:v0.17.3 spec.template.spec.containers.worker.livenessProbe (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker) - one map entry removed: + one map entry added: httpGet: grpc: path: /healthz port: 8082 port: http spec.template.spec.containers.worker.ports (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker) - one list entry removed: + two list entries added: - name: http - name: metrics containerPort: 8080 containerPort: 8081 - name: health containerPort: 8082 spec.template.spec.containers.worker.readinessProbe (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-node-feature-discovery-worker) - one map entry removed: + one map entry added: httpGet: grpc: path: /healthz port: 8082 port: http spec.template.spec.containers.nvidia-device-plugin-sidecar.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.containers.nvidia-device-plugin-ctr.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.initContainers.nvidia-device-plugin-init.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.containers.gpu-feature-discovery-sidecar.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-gpu-feature-discovery) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.containers.gpu-feature-discovery-ctr.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-gpu-feature-discovery) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.initContainers.gpu-feature-discovery-init.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-gpu-feature-discovery) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.containers.mps-control-daemon-sidecar.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-mps-control-daemon) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.containers.mps-control-daemon-ctr.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-mps-control-daemon) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.initContainers.mps-control-daemon-mounts.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-mps-control-daemon) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec.initContainers.mps-control-daemon-init.image (apps/v1/DaemonSet/nvidia/nvidia-device-plugin-mps-control-daemon) ± value change - nvcr.io/nvidia/k8s-device-plugin:v0.20.1 + nvcr.io/nvidia/k8s-device-plugin:v0.19.3 spec.template.spec (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) - two map entries removed: dnsPolicy: ClusterFirstWithHostNet imagePullSecrets: null spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) + one list entry added: - preference: matchExpressions: - key: node-role.kubernetes.io/master operator: In values: - weight: 1 spec.template.spec.containers.master.args (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) - one list entry removed: + four list entries added: - "-port=8080" - "-enable-leader-election" - "-feature-gates=NodeFeatureGroupAPI=false" - "-metrics=8081" - "-grpc-health=8082" spec.template.spec.containers.master.image (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) ± value change - registry.k8s.io/nfd/node-feature-discovery:v0.19.0 + registry.k8s.io/nfd/node-feature-discovery:v0.17.3 spec.template.spec.containers.master.livenessProbe (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) - one map entry removed: + one map entry added: httpGet: grpc: path: /healthz port: 8082 port: http spec.template.spec.containers.master.ports (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) - one list entry removed: + two list entries added: - name: http - name: metrics containerPort: 8080 containerPort: 8081 - name: health containerPort: 8082 spec.template.spec.containers.master.readinessProbe (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) - one map entry removed: + one map entry added: httpGet: grpc: path: /healthz port: 8082 port: http spec.template.spec.containers.master.startupProbe (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) - one map entry removed: + one map entry added: httpGet: grpc: path: /healthz port: 8082 port: http spec.template.spec.tolerations (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-master) + one list entry added: - key: node-role.kubernetes.io/master effect: NoSchedule operator: Equal value: spec.template.spec (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-gc) - one map entry removed: imagePullSecrets: null spec.template.spec.containers.gc (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-gc) - two map entries removed: livenessProbe: httpGet: path: /healthz port: http initialDelaySeconds: 10 readinessProbe: httpGet: path: /healthz port: http initialDelaySeconds: 5 spec.template.spec.containers.gc.image (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-gc) ± value change - registry.k8s.io/nfd/node-feature-discovery:v0.19.0 + registry.k8s.io/nfd/node-feature-discovery:v0.17.3 spec.template.spec.containers.gc.ports (apps/v1/Deployment/nvidia/nvidia-device-plugin-node-feature-discovery-gc) - one list entry removed: + one list entry added: - name: http - name: metrics containerPort: 8080 containerPort: 8081 spec (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune) - one map entry removed: ttlSecondsAfterFinished: 3600 spec.template.spec (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune) - one map entry removed: imagePullSecrets: null spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune) + one list entry added: - preference: matchExpressions: - key: node-role.kubernetes.io/master operator: In values: - weight: 1 spec.template.spec.containers.nfd-master (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune) - one map entry removed: resources: limits: memory: 4Gi requests: cpu: 100m memory: 128Mi spec.template.spec.containers.nfd-master.image (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune) ± value change - registry.k8s.io/nfd/node-feature-discovery:v0.19.0 + registry.k8s.io/nfd/node-feature-discovery:v0.17.3 spec.template.spec.tolerations (batch/v1/Job/nvidia/nvidia-device-plugin-node-feature-discovery-prune) + one list entry added: - key: node-role.kubernetes.io/master effect: NoSchedule operator: Equal value: ``` [Pipeline](https://ci.aether.earth/repos/4/pipeline/368)
renovate-bot changed title from chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.36 to chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.50 2026-09-23 05:08:49 +00:00
renovate-bot force-pushed renovate/ghcr.io-archivebox-archivebox-0.x from 22f2152403
All checks were successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
to 70efc158a9
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
2026-09-23 05:08:50 +00:00
Compare
Member

flate diff

No differences detected.

Pipeline

## flate diff No differences detected. [Pipeline](https://ci.aether.earth/repos/4/pipeline/375)
renovate-bot force-pushed renovate/ghcr.io-archivebox-archivebox-0.x from 70efc158a9
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
to 0c7eebc6e1
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
2026-09-23 21:09:16 +00:00
Compare
renovate-bot changed title from chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.50 to chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.51 2026-09-23 21:09:24 +00:00
Member

flate diff

No differences detected.

Pipeline

## flate diff No differences detected. [Pipeline](https://ci.aether.earth/repos/4/pipeline/384)
renovate-bot force-pushed renovate/ghcr.io-archivebox-archivebox-0.x from cee0b3f777 to fb66ca0d0b 2026-09-29 00:08:22 +00:00 Compare
renovate-bot changed title from chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.51 to chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.71 2026-09-29 00:08:31 +00:00
renovate-bot force-pushed renovate/ghcr.io-archivebox-archivebox-0.x from fb66ca0d0b to 0773560579
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
2026-10-06 21:07:25 +00:00
Compare
renovate-bot changed title from chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.71 to chore(deps): update ghcr.io/archivebox/archivebox docker tag to v0.9.73 2026-10-06 21:07:33 +00:00
Member

flate diff

rules  (rbac.authorization.k8s.io/v1/ClusterRole/kube-prometheus-stack-operator)
  - six list entries removed:           + three list entries added:
    - resources:                          - resources:
      - alertmanagers                       - alertmanagers
      - prometheusagents                    - alertmanagers/finalizers
      - prometheuses                        - alertmanagers/status
      - thanosrulers                        - alertmanagerconfigs
      apiGroups:                            - prometheuses
      - monitoring.coreos.com               - prometheuses/finalizers
      verbs:                                - prometheuses/status
      - patch                               - prometheusagents
    - resources:                            - prometheusagents/finalizers
      - alertmanagers/status                - prometheusagents/status
      - podmonitors/status                  - thanosrulers
      - probes/status                       - thanosrulers/finalizers
      - prometheuses/status                 - thanosrulers/status
      - prometheusagents/status             - scrapeconfigs
      - prometheusrules/status              - scrapeconfigs/status
      - scrapeconfigs/status                - servicemonitors
      - servicemonitors/status              - servicemonitors/status
      - thanosrulers/status                 - podmonitors
      apiGroups:                            - podmonitors/status
      - monitoring.coreos.com               - probes
      verbs:                                - probes/status
      - create                              - prometheusrules
      - update                              - prometheusrules/status
      - patch                               apiGroups:
      - delete                              - monitoring.coreos.com
    - resources:                            verbs:
      - alertmanagers/finalizers            - "*"
      - prometheusagents/finalizers       - resources:
      - prometheuses/finalizers             - statefulsets
      - thanosrulers/finalizers             apiGroups:
      apiGroups:                            - apps
      - monitoring.coreos.com               verbs:
      verbs:                                - "*"
      - update                            - resources:
    - resources:                            - configmaps
      - alertmanagers                       - secrets
      - alertmanagerconfigs                 apiGroups:
      - podmonitors                         -
      - probes                              verbs:
      - prometheusagents                    - "*"
      - prometheuses
      - prometheusrules
      - servicemonitors
      - scrapeconfigs
      - thanosrulers
      apiGroups:
      - monitoring.coreos.com
      verbs:
      - get
      - list
      - watch
    - resources:
      - statefulsets
      apiGroups:
      - apps
      verbs:
      - get
      - list
      - watch
      - create
      - update
      - patch
      - delete
    - resources:
      - configmaps
      - secrets
      apiGroups:
      -
      verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete

metadata  (v1/Service/kube-privileged/node-exporter)
  + one map entry added:
    annotations:
      prometheus.io/scrape: "true"

spec.template.spec.containers.kube-state-metrics.image  (apps/v1/Deployment/monitoring/kube-state-metrics)
  ± value change
    - registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.20.0
    + registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.19.1

spec.template.spec  (apps/v1/Deployment/monitoring/kube-prometheus-stack-operator)
  - one map entry removed:
    nodeSelector:
      kubernetes.io/os: linux

spec.template.spec.containers.kube-prometheus-stack.args  (apps/v1/Deployment/monitoring/kube-prometheus-stack-operator)
  - three list entries removed:
    - "--prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.94.1"
    - "--thanos-default-base-image=quay.io/thanos/thanos:v0.42.4"
    - "--secret-field-selector=type!=kubernetes.io/dockercfg,type!=helm.sh/release.v1"
    
  
  + three list entries added:
    - "--prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.92.1"
    - "--thanos-default-base-image=quay.io/thanos/thanos:v0.42.2"
    - "--secret-field-selector=type!=kubernetes.io/dockercfg,type!=kubernetes.io/service-account-token,type!=helm.sh/release.v1"
    
  

spec.template.spec.containers.kube-prometheus-stack.image  (apps/v1/Deployment/monitoring/kube-prometheus-stack-operator)
  ± value change
    - quay.io/prometheus-operator/prometheus-operator:v0.94.1
    + quay.io/prometheus-operator/prometheus-operator:v0.92.1

spec  (monitoring.coreos.com/v1/Alertmanager/monitoring/kube-prometheus-stack)
  - one map entry removed:        + one map entry added:
    nodeSelector:                   hostNetwork: false
      kubernetes.io/os: linux

spec.image  (monitoring.coreos.com/v1/Alertmanager/monitoring/kube-prometheus-stack)
  ± value change
    - quay.io/prometheus/alertmanager:v0.34.1
    + quay.io/prometheus/alertmanager:v0.33.1

spec.version  (monitoring.coreos.com/v1/Alertmanager/monitoring/kube-prometheus-stack)
  ± value change
    - v0.34.1
    + v0.33.1

spec  (monitoring.coreos.com/v1/Prometheus/monitoring/kube-prometheus-stack)
  - one map entry removed:
    nodeSelector:
      kubernetes.io/os: linux

spec.image  (monitoring.coreos.com/v1/Prometheus/monitoring/kube-prometheus-stack)
  ± value change
    - quay.io/prometheus/prometheus:v3.15.0-distroless
    + quay.io/prometheus/prometheus:v3.13.1-distroless

spec.version  (monitoring.coreos.com/v1/Prometheus/monitoring/kube-prometheus-stack)
  ± value change
    - v3.15.0-distroless
    + v3.13.1-distroless

spec.groups.kube-apiserver-burnrate.rules.rules  (monitoring.coreos.com/v1/PrometheusRule/monitoring/kube-prometheus-stack-kube-apiserver-burnrate.rules)
  - eleven list entries removed:
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[5m]))
            -
            (
              (
                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le=~"1(\\.0)?"}[5m]))
                or
                vector(0)
              )
              +
              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le=~"5(\\.0)?"}[5m]))
              +
              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le=~"30(\\.0)?"}[5m]))
            )
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[5m]))
        )
      labels:
        verb: read
      record: "cluster_verb:apiserver_request_sli_bad_events:rate5m"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[5m]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[5m]))
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m]))
        )
      labels:
        verb: write
      record: "cluster_verb:apiserver_request_sli_bad_events:rate5m"
    - expr: "sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))"
      labels:
        verb: read
      record: "cluster_verb:apiserver_request_sli_events:rate5m"
    - expr: "sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))"
      labels:
        verb: write
      record: "cluster_verb:apiserver_request_sli_events:rate5m"
    - expr: |
        cluster_verb:apiserver_request_sli_bad_events:rate5m
        /
        cluster_verb:apiserver_request_sli_events:rate5m
      record: "apiserver_request:burnrate5m"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[1h]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[1h]))
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h]))
      labels:
        verb: write
      record: "apiserver_request:burnrate1h"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[2h]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[2h]))
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h]))
      labels:
        verb: write
      record: "apiserver_request:burnrate2h"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[30m]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[30m]))
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m]))
      labels:
        verb: write
      record: "apiserver_request:burnrate30m"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[6h]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[6h]))
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h]))
      labels:
        verb: write
      record: "apiserver_request:burnrate6h"
    - expr: |
        avg_over_time(cluster_verb:apiserver_request_sli_bad_events:rate5m[1d])
        /
        avg_over_time(cluster_verb:apiserver_request_sli_events:rate5m[1d])
      record: "apiserver_request:burnrate1d"
    - expr: |
        avg_over_time(cluster_verb:apiserver_request_sli_bad_events:rate5m[3d])
        /
        avg_over_time(cluster_verb:apiserver_request_sli_events:rate5m[3d])
      record: "apiserver_request:burnrate3d"
    
  
  + ten list entries added:
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[1d]))
            -
            (
              (
                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le=~"1(\\.0)?"}[1d]))
                or
                vector(0)
              )
              +
              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le=~"5(\\.0)?"}[1d]))
              +
              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le=~"30(\\.0)?"}[1d]))
            )
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1d]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1d]))
      labels:
        verb: read
      record: "apiserver_request:burnrate1d"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[3d]))
            -
            (
              (
                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le=~"1(\\.0)?"}[3d]))
                or
                vector(0)
              )
              +
              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le=~"5(\\.0)?"}[3d]))
              +
              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le=~"30(\\.0)?"}[3d]))
            )
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[3d]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[3d]))
      labels:
        verb: read
      record: "apiserver_request:burnrate3d"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[5m]))
            -
            (
              (
                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le=~"1(\\.0)?"}[5m]))
                or
                vector(0)
              )
              +
              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le=~"5(\\.0)?"}[5m]))
              +
              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le=~"30(\\.0)?"}[5m]))
            )
          )
          +
          # errors
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[5m]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m]))
      labels:
        verb: read
      record: "apiserver_request:burnrate5m"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[1d]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[1d]))
          )
          +
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1d]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d]))
      labels:
        verb: write
      record: "apiserver_request:burnrate1d"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[1h]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[1h]))
          )
          +
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h]))
      labels:
        verb: write
      record: "apiserver_request:burnrate1h"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[2h]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[2h]))
          )
          +
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h]))
      labels:
        verb: write
      record: "apiserver_request:burnrate2h"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[30m]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[30m]))
          )
          +
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m]))
      labels:
        verb: write
      record: "apiserver_request:burnrate30m"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[3d]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[3d]))
          )
          +
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[3d]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d]))
      labels:
        verb: write
      record: "apiserver_request:burnrate3d"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[5m]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[5m]))
          )
          +
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m]))
      labels:
        verb: write
      record: "apiserver_request:burnrate5m"
    - expr: |
        (
          (
            # too slow
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[6h]))
            -
            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[6h]))
          )
          +
          sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h]))
        )
        /
        sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h]))
      labels:
        verb: write
      record: "apiserver_request:burnrate6h"
    
  

spec.groups.kubernetes-apps.rules.KubeJobNotCompleted.expr  (monitoring.coreos.com/v1/PrometheusRule/monitoring/kube-prometheus-stack-kubernetes-apps)
  ± value change in multiline text (one insert, one deletion)
      time() - max by (namespace, job_name, cluster) (kube_job_status_start_time{job="kube-state-metrics", namespace=~".*"}
        and
    - kube_job_status_active{job="kube-state-metrics", namespace=~".*"} > 0) > 43200
    -   unless on (namespace, job_name, cluster)
    - max by (namespace, job_name, cluster) (kube_job_labels{job="kube-state-metrics", namespace=~".*",label_excluded_from_alerts="true"} == 1)
    + kube_job_status_active{job="kube-state-metrics", namespace=~".*"} > 0) > 43200
  
  

spec.groups.kubernetes-apps.rules.KubePdbNotEnoughHealthyPods.expr  (monitoring.coreos.com/v1/PrometheusRule/monitoring/kube-prometheus-stack-kubernetes-apps)
  ± value change in multiline text (no inserts, one deletion)
      (
        kube_poddisruptionbudget_status_desired_healthy{job="kube-state-metrics", namespace=~".*"}
        -
        kube_poddisruptionbudget_status_current_healthy{job="kube-state-metrics", namespace=~".*"}
      )
    - > 0
    - and
    - kube_poddisruptionbudget_status_expected_pods{job="kube-state-metrics", namespace=~".*"}
      > 0
  
  

spec.endpoints.0  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-coredns)
  - one map entry removed:
    authorization:
      type: Bearer
      credentials:
        name: kube-prometheus-stack-prometheus-token
        key: token
  
  + one map entry added:
    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
  

spec.endpoints.0  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-apiserver)
  - one map entry removed:
    authorization:
      type: Bearer
      credentials:
        name: kube-prometheus-stack-prometheus-token
        key: token
  
  + one map entry added:
    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
  

spec.endpoints.0.tlsConfig  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-apiserver)
  - one map entry removed:
    ca:
      configMap:
        name: kube-root-ca.crt
        key: ca.crt
  
  + one map entry added:
    caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  

spec.endpoints.0  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-controller-manager)
  - one map entry removed:
    authorization:
      type: Bearer
      credentials:
        name: kube-prometheus-stack-prometheus-token
        key: token
  
  + one map entry added:
    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
  

spec.endpoints.0.tlsConfig  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-controller-manager)
  - one map entry removed:
    ca:
      configMap:
        name: kube-root-ca.crt
        key: ca.crt
  
  + one map entry added:
    caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  

spec.endpoints.0  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-etcd)
  - one map entry removed:
    authorization:
      type: Bearer
      credentials:
        name: kube-prometheus-stack-prometheus-token
        key: token
  
  + one map entry added:
    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
  

spec.endpoints.0  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-scheduler)
  - one map entry removed:
    authorization:
      type: Bearer
      credentials:
        name: kube-prometheus-stack-prometheus-token
        key: token
  
  + one map entry added:
    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
  

spec.endpoints.0.tlsConfig  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-scheduler)
  - one map entry removed:
    ca:
      configMap:
        name: kube-root-ca.crt
        key: ca.crt
  
  + one map entry added:
    caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  

spec.endpoints  (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kubelet)
  - three list entries removed:
    - authorization:
        type: Bearer
        credentials:
          name: kube-prometheus-stack-prometheus-token
          key: token
      honorLabels: true
      honorTimestamps: true
      metricRelabelings:
      - action: drop
        regex: (csi_operations|storage_operation_duration)_seconds_bucket;(0.25|2.5|15|25|120|600)(\.0)?
        sourceLabels:
        - __name__
        - le
      port: https-metrics
      relabelings:
      - action: replace
        sourceLabels:
        - __metrics_path__
        targetLabel: metrics_path
      scheme: https
      tlsConfig:
        ca:
          configMap:
            name: kube-root-ca.crt
            key: ca.crt
        insecureSkipVerify: true
    - authorization:
        type: Bearer
        credentials:
          name: kube-prometheus-stack-prometheus-token
          key: token
      honorLabels: true
      honorTimestamps: true
      interval: 10s
      metricRelabelings:
      - action: drop
        regex: container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total)
        sourceLabels:
        - __name__
      - action: drop
        regex: container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total)
        sourceLabels:
        - __name__
      - action: drop
        regex: container_memory_(mapped_file|swap)
        sourceLabels:
        - __name__
      - action: drop
        regex: container_(file_descriptors|tasks_state|threads_max)
        sourceLabels:
        - __name__
      - action: drop
        regex: container_memory_failures_total;hierarchy
        sourceLabels:
        - __name__
        - scope
      - action: drop
        regex: "container_network_.*;(cali|cilium|cni|lxc|nodelocaldns|tunl).*"
        sourceLabels:
        - __name__
        - interface
      - action: drop
        regex: "container_spec.*"
        sourceLabels:
        - __name__
      - action: drop
        regex: .+;
        sourceLabels:
        - id
        - pod
      path: /metrics/cadvisor
      port: https-metrics
      relabelings:
      - action: replace
        sourceLabels:
        - __metrics_path__
        targetLabel: metrics_path
      scheme: https
      tlsConfig:
        ca:
          configMap:
            name: kube-root-ca.crt
            key: ca.crt
        insecureSkipVerify: true
      trackTimestampsStaleness: true
    - authorization:
        type: Bearer
        credentials:
          name: kube-prometheus-stack-prometheus-token
          key: token
      honorLabels: true
      honorTimestamps: true
      path: /metrics/probes
      port: https-metrics
      relabelings:
      - action: replace
        sourceLabels:
        - __metrics_path__
        targetLabel: metrics_path
      scheme: https
      tlsConfig:
        ca:
          configMap:
            name: kube-root-ca.crt
            key: ca.crt
        insecureSkipVerify: true
    
  
  + three list entries added:
    - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
      honorLabels: true
      honorTimestamps: true
      metricRelabelings:
      - action: drop
        regex: (csi_operations|storage_operation_duration)_seconds_bucket;(0.25|2.5|15|25|120|600)(\.0)?
        sourceLabels:
        - __name__
        - le
      port: https-metrics
      relabelings:
      - action: replace
        sourceLabels:
        - __metrics_path__
        targetLabel: metrics_path
      scheme: https
      tlsConfig:
        caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecureSkipVerify: true
    - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
      honorLabels: true
      honorTimestamps: true
      interval: 10s
      metricRelabelings:
      - action: drop
        regex: container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total)
        sourceLabels:
        - __name__
      - action: drop
        regex: container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total)
        sourceLabels:
        - __name__
      - action: drop
        regex: container_memory_(mapped_file|swap)
        sourceLabels:
        - __name__
      - action: drop
        regex: container_(file_descriptors|tasks_state|threads_max)
        sourceLabels:
        - __name__
      - action: drop
        regex: container_memory_failures_total;hierarchy
        sourceLabels:
        - __name__
        - scope
      - action: drop
        regex: "container_network_.*;(cali|cilium|cni|lxc|nodelocaldns|tunl).*"
        sourceLabels:
        - __name__
        - interface
      - action: drop
        regex: "container_spec.*"
        sourceLabels:
        - __name__
      - action: drop
        regex: .+;
        sourceLabels:
        - id
        - pod
      path: /metrics/cadvisor
      port: https-metrics
      relabelings:
      - action: replace
        sourceLabels:
        - __metrics_path__
        targetLabel: metrics_path
      scheme: https
      tlsConfig:
        caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecureSkipVerify: true
      trackTimestampsStaleness: true
    - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
      honorLabels: true
      honorTimestamps: true
      path: /metrics/probes
      port: https-metrics
      relabelings:
      - action: replace
        sourceLabels:
        - __metrics_path__
        targetLabel: metrics_path
      scheme: https
      tlsConfig:
        caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecureSkipVerify: true
    
  

spec.template.spec  (batch/v1/Job/monitoring/kube-prometheus-stack-admission-create)
  - one map entry removed:
    nodeSelector:
      kubernetes.io/os: linux

spec.template.spec.containers.create.image  (batch/v1/Job/monitoring/kube-prometheus-stack-admission-create)
  ± value change
    - ghcr.io/jkroepke/kube-webhook-certgen:1.8.9
    + ghcr.io/jkroepke/kube-webhook-certgen:1.8.4

spec.template.spec  (batch/v1/Job/monitoring/kube-prometheus-stack-admission-patch)
  - one map entry removed:
    nodeSelector:
      kubernetes.io/os: linux

spec.template.spec.containers.patch.image  (batch/v1/Job/monitoring/kube-prometheus-stack-admission-patch)
  ± value change
    - ghcr.io/jkroepke/kube-webhook-certgen:1.8.9
    + ghcr.io/jkroepke/kube-webhook-certgen:1.8.4

Pipeline

## flate diff ``` rules (rbac.authorization.k8s.io/v1/ClusterRole/kube-prometheus-stack-operator) - six list entries removed: + three list entries added: - resources: - resources: - alertmanagers - alertmanagers - prometheusagents - alertmanagers/finalizers - prometheuses - alertmanagers/status - thanosrulers - alertmanagerconfigs apiGroups: - prometheuses - monitoring.coreos.com - prometheuses/finalizers verbs: - prometheuses/status - patch - prometheusagents - resources: - prometheusagents/finalizers - alertmanagers/status - prometheusagents/status - podmonitors/status - thanosrulers - probes/status - thanosrulers/finalizers - prometheuses/status - thanosrulers/status - prometheusagents/status - scrapeconfigs - prometheusrules/status - scrapeconfigs/status - scrapeconfigs/status - servicemonitors - servicemonitors/status - servicemonitors/status - thanosrulers/status - podmonitors apiGroups: - podmonitors/status - monitoring.coreos.com - probes verbs: - probes/status - create - prometheusrules - update - prometheusrules/status - patch apiGroups: - delete - monitoring.coreos.com - resources: verbs: - alertmanagers/finalizers - "*" - prometheusagents/finalizers - resources: - prometheuses/finalizers - statefulsets - thanosrulers/finalizers apiGroups: apiGroups: - apps - monitoring.coreos.com verbs: verbs: - "*" - update - resources: - resources: - configmaps - alertmanagers - secrets - alertmanagerconfigs apiGroups: - podmonitors - - probes verbs: - prometheusagents - "*" - prometheuses - prometheusrules - servicemonitors - scrapeconfigs - thanosrulers apiGroups: - monitoring.coreos.com verbs: - get - list - watch - resources: - statefulsets apiGroups: - apps verbs: - get - list - watch - create - update - patch - delete - resources: - configmaps - secrets apiGroups: - verbs: - get - list - watch - create - update - delete metadata (v1/Service/kube-privileged/node-exporter) + one map entry added: annotations: prometheus.io/scrape: "true" spec.template.spec.containers.kube-state-metrics.image (apps/v1/Deployment/monitoring/kube-state-metrics) ± value change - registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.20.0 + registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.19.1 spec.template.spec (apps/v1/Deployment/monitoring/kube-prometheus-stack-operator) - one map entry removed: nodeSelector: kubernetes.io/os: linux spec.template.spec.containers.kube-prometheus-stack.args (apps/v1/Deployment/monitoring/kube-prometheus-stack-operator) - three list entries removed: - "--prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.94.1" - "--thanos-default-base-image=quay.io/thanos/thanos:v0.42.4" - "--secret-field-selector=type!=kubernetes.io/dockercfg,type!=helm.sh/release.v1" + three list entries added: - "--prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.92.1" - "--thanos-default-base-image=quay.io/thanos/thanos:v0.42.2" - "--secret-field-selector=type!=kubernetes.io/dockercfg,type!=kubernetes.io/service-account-token,type!=helm.sh/release.v1" spec.template.spec.containers.kube-prometheus-stack.image (apps/v1/Deployment/monitoring/kube-prometheus-stack-operator) ± value change - quay.io/prometheus-operator/prometheus-operator:v0.94.1 + quay.io/prometheus-operator/prometheus-operator:v0.92.1 spec (monitoring.coreos.com/v1/Alertmanager/monitoring/kube-prometheus-stack) - one map entry removed: + one map entry added: nodeSelector: hostNetwork: false kubernetes.io/os: linux spec.image (monitoring.coreos.com/v1/Alertmanager/monitoring/kube-prometheus-stack) ± value change - quay.io/prometheus/alertmanager:v0.34.1 + quay.io/prometheus/alertmanager:v0.33.1 spec.version (monitoring.coreos.com/v1/Alertmanager/monitoring/kube-prometheus-stack) ± value change - v0.34.1 + v0.33.1 spec (monitoring.coreos.com/v1/Prometheus/monitoring/kube-prometheus-stack) - one map entry removed: nodeSelector: kubernetes.io/os: linux spec.image (monitoring.coreos.com/v1/Prometheus/monitoring/kube-prometheus-stack) ± value change - quay.io/prometheus/prometheus:v3.15.0-distroless + quay.io/prometheus/prometheus:v3.13.1-distroless spec.version (monitoring.coreos.com/v1/Prometheus/monitoring/kube-prometheus-stack) ± value change - v3.15.0-distroless + v3.13.1-distroless spec.groups.kube-apiserver-burnrate.rules.rules (monitoring.coreos.com/v1/PrometheusRule/monitoring/kube-prometheus-stack-kube-apiserver-burnrate.rules) - eleven list entries removed: - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[5m])) - ( ( sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le=~"1(\\.0)?"}[5m])) or vector(0) ) + sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le=~"5(\\.0)?"}[5m])) + sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le=~"30(\\.0)?"}[5m])) ) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[5m])) ) labels: verb: read record: "cluster_verb:apiserver_request_sli_bad_events:rate5m" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[5m])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[5m])) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m])) ) labels: verb: write record: "cluster_verb:apiserver_request_sli_bad_events:rate5m" - expr: "sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))" labels: verb: read record: "cluster_verb:apiserver_request_sli_events:rate5m" - expr: "sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))" labels: verb: write record: "cluster_verb:apiserver_request_sli_events:rate5m" - expr: | cluster_verb:apiserver_request_sli_bad_events:rate5m / cluster_verb:apiserver_request_sli_events:rate5m record: "apiserver_request:burnrate5m" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[1h])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[1h])) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h])) labels: verb: write record: "apiserver_request:burnrate1h" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[2h])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[2h])) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h])) labels: verb: write record: "apiserver_request:burnrate2h" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[30m])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[30m])) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m])) labels: verb: write record: "apiserver_request:burnrate30m" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[6h])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[6h])) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h])) labels: verb: write record: "apiserver_request:burnrate6h" - expr: | avg_over_time(cluster_verb:apiserver_request_sli_bad_events:rate5m[1d]) / avg_over_time(cluster_verb:apiserver_request_sli_events:rate5m[1d]) record: "apiserver_request:burnrate1d" - expr: | avg_over_time(cluster_verb:apiserver_request_sli_bad_events:rate5m[3d]) / avg_over_time(cluster_verb:apiserver_request_sli_events:rate5m[3d]) record: "apiserver_request:burnrate3d" + ten list entries added: - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[1d])) - ( ( sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le=~"1(\\.0)?"}[1d])) or vector(0) ) + sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le=~"5(\\.0)?"}[1d])) + sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le=~"30(\\.0)?"}[1d])) ) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1d])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1d])) labels: verb: read record: "apiserver_request:burnrate1d" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[3d])) - ( ( sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le=~"1(\\.0)?"}[3d])) or vector(0) ) + sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le=~"5(\\.0)?"}[3d])) + sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le=~"30(\\.0)?"}[3d])) ) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[3d])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[3d])) labels: verb: read record: "apiserver_request:burnrate3d" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[5m])) - ( ( sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le=~"1(\\.0)?"}[5m])) or vector(0) ) + sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le=~"5(\\.0)?"}[5m])) + sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le=~"30(\\.0)?"}[5m])) ) ) + # errors sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[5m])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m])) labels: verb: read record: "apiserver_request:burnrate5m" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[1d])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[1d])) ) + sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1d])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d])) labels: verb: write record: "apiserver_request:burnrate1d" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[1h])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[1h])) ) + sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h])) labels: verb: write record: "apiserver_request:burnrate1h" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[2h])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[2h])) ) + sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h])) labels: verb: write record: "apiserver_request:burnrate2h" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[30m])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[30m])) ) + sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m])) labels: verb: write record: "apiserver_request:burnrate30m" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[3d])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[3d])) ) + sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[3d])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d])) labels: verb: write record: "apiserver_request:burnrate3d" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[5m])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[5m])) ) + sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) labels: verb: write record: "apiserver_request:burnrate5m" - expr: | ( ( # too slow sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[6h])) - sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le=~"1(\\.0)?"}[6h])) ) + sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h])) ) / sum by (cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h])) labels: verb: write record: "apiserver_request:burnrate6h" spec.groups.kubernetes-apps.rules.KubeJobNotCompleted.expr (monitoring.coreos.com/v1/PrometheusRule/monitoring/kube-prometheus-stack-kubernetes-apps) ± value change in multiline text (one insert, one deletion) time() - max by (namespace, job_name, cluster) (kube_job_status_start_time{job="kube-state-metrics", namespace=~".*"} and - kube_job_status_active{job="kube-state-metrics", namespace=~".*"} > 0) > 43200 - unless on (namespace, job_name, cluster) - max by (namespace, job_name, cluster) (kube_job_labels{job="kube-state-metrics", namespace=~".*",label_excluded_from_alerts="true"} == 1) + kube_job_status_active{job="kube-state-metrics", namespace=~".*"} > 0) > 43200 spec.groups.kubernetes-apps.rules.KubePdbNotEnoughHealthyPods.expr (monitoring.coreos.com/v1/PrometheusRule/monitoring/kube-prometheus-stack-kubernetes-apps) ± value change in multiline text (no inserts, one deletion) ( kube_poddisruptionbudget_status_desired_healthy{job="kube-state-metrics", namespace=~".*"} - kube_poddisruptionbudget_status_current_healthy{job="kube-state-metrics", namespace=~".*"} ) - > 0 - and - kube_poddisruptionbudget_status_expected_pods{job="kube-state-metrics", namespace=~".*"} > 0 spec.endpoints.0 (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-coredns) - one map entry removed: authorization: type: Bearer credentials: name: kube-prometheus-stack-prometheus-token key: token + one map entry added: bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token spec.endpoints.0 (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-apiserver) - one map entry removed: authorization: type: Bearer credentials: name: kube-prometheus-stack-prometheus-token key: token + one map entry added: bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token spec.endpoints.0.tlsConfig (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-apiserver) - one map entry removed: ca: configMap: name: kube-root-ca.crt key: ca.crt + one map entry added: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt spec.endpoints.0 (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-controller-manager) - one map entry removed: authorization: type: Bearer credentials: name: kube-prometheus-stack-prometheus-token key: token + one map entry added: bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token spec.endpoints.0.tlsConfig (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-controller-manager) - one map entry removed: ca: configMap: name: kube-root-ca.crt key: ca.crt + one map entry added: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt spec.endpoints.0 (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-etcd) - one map entry removed: authorization: type: Bearer credentials: name: kube-prometheus-stack-prometheus-token key: token + one map entry added: bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token spec.endpoints.0 (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-scheduler) - one map entry removed: authorization: type: Bearer credentials: name: kube-prometheus-stack-prometheus-token key: token + one map entry added: bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token spec.endpoints.0.tlsConfig (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kube-scheduler) - one map entry removed: ca: configMap: name: kube-root-ca.crt key: ca.crt + one map entry added: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt spec.endpoints (monitoring.coreos.com/v1/ServiceMonitor/monitoring/kube-prometheus-stack-kubelet) - three list entries removed: - authorization: type: Bearer credentials: name: kube-prometheus-stack-prometheus-token key: token honorLabels: true honorTimestamps: true metricRelabelings: - action: drop regex: (csi_operations|storage_operation_duration)_seconds_bucket;(0.25|2.5|15|25|120|600)(\.0)? sourceLabels: - __name__ - le port: https-metrics relabelings: - action: replace sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: ca: configMap: name: kube-root-ca.crt key: ca.crt insecureSkipVerify: true - authorization: type: Bearer credentials: name: kube-prometheus-stack-prometheus-token key: token honorLabels: true honorTimestamps: true interval: 10s metricRelabelings: - action: drop regex: container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total) sourceLabels: - __name__ - action: drop regex: container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total) sourceLabels: - __name__ - action: drop regex: container_memory_(mapped_file|swap) sourceLabels: - __name__ - action: drop regex: container_(file_descriptors|tasks_state|threads_max) sourceLabels: - __name__ - action: drop regex: container_memory_failures_total;hierarchy sourceLabels: - __name__ - scope - action: drop regex: "container_network_.*;(cali|cilium|cni|lxc|nodelocaldns|tunl).*" sourceLabels: - __name__ - interface - action: drop regex: "container_spec.*" sourceLabels: - __name__ - action: drop regex: .+; sourceLabels: - id - pod path: /metrics/cadvisor port: https-metrics relabelings: - action: replace sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: ca: configMap: name: kube-root-ca.crt key: ca.crt insecureSkipVerify: true trackTimestampsStaleness: true - authorization: type: Bearer credentials: name: kube-prometheus-stack-prometheus-token key: token honorLabels: true honorTimestamps: true path: /metrics/probes port: https-metrics relabelings: - action: replace sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: ca: configMap: name: kube-root-ca.crt key: ca.crt insecureSkipVerify: true + three list entries added: - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token honorLabels: true honorTimestamps: true metricRelabelings: - action: drop regex: (csi_operations|storage_operation_duration)_seconds_bucket;(0.25|2.5|15|25|120|600)(\.0)? sourceLabels: - __name__ - le port: https-metrics relabelings: - action: replace sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token honorLabels: true honorTimestamps: true interval: 10s metricRelabelings: - action: drop regex: container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total) sourceLabels: - __name__ - action: drop regex: container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total) sourceLabels: - __name__ - action: drop regex: container_memory_(mapped_file|swap) sourceLabels: - __name__ - action: drop regex: container_(file_descriptors|tasks_state|threads_max) sourceLabels: - __name__ - action: drop regex: container_memory_failures_total;hierarchy sourceLabels: - __name__ - scope - action: drop regex: "container_network_.*;(cali|cilium|cni|lxc|nodelocaldns|tunl).*" sourceLabels: - __name__ - interface - action: drop regex: "container_spec.*" sourceLabels: - __name__ - action: drop regex: .+; sourceLabels: - id - pod path: /metrics/cadvisor port: https-metrics relabelings: - action: replace sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true trackTimestampsStaleness: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token honorLabels: true honorTimestamps: true path: /metrics/probes port: https-metrics relabelings: - action: replace sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true spec.template.spec (batch/v1/Job/monitoring/kube-prometheus-stack-admission-create) - one map entry removed: nodeSelector: kubernetes.io/os: linux spec.template.spec.containers.create.image (batch/v1/Job/monitoring/kube-prometheus-stack-admission-create) ± value change - ghcr.io/jkroepke/kube-webhook-certgen:1.8.9 + ghcr.io/jkroepke/kube-webhook-certgen:1.8.4 spec.template.spec (batch/v1/Job/monitoring/kube-prometheus-stack-admission-patch) - one map entry removed: nodeSelector: kubernetes.io/os: linux spec.template.spec.containers.patch.image (batch/v1/Job/monitoring/kube-prometheus-stack-admission-patch) ± value change - ghcr.io/jkroepke/kube-webhook-certgen:1.8.9 + ghcr.io/jkroepke/kube-webhook-certgen:1.8.4 ``` [Pipeline](https://ci.aether.earth/repos/4/pipeline/485)
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/ghcr.io-archivebox-archivebox-0.x:renovate/ghcr.io-archivebox-archivebox-0.x
git switch renovate/ghcr.io-archivebox-archivebox-0.x

Merge

Merge the changes and update on Forgejo.
git switch main
git merge --no-ff renovate/ghcr.io-archivebox-archivebox-0.x
git switch renovate/ghcr.io-archivebox-archivebox-0.x
git rebase main
git switch main
git merge --ff-only renovate/ghcr.io-archivebox-archivebox-0.x
git switch renovate/ghcr.io-archivebox-archivebox-0.x
git rebase main
git switch main
git merge --no-ff renovate/ghcr.io-archivebox-archivebox-0.x
git switch main
git merge --squash renovate/ghcr.io-archivebox-archivebox-0.x
git switch main
git merge --ff-only renovate/ghcr.io-archivebox-archivebox-0.x
git switch main
git merge renovate/ghcr.io-archivebox-archivebox-0.x
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ops/homelab!153
No description provided.