diff --git a/.github/workflows/demo-refresh.yml b/.github/workflows/demo-refresh.yml new file mode 100644 index 00000000..2a866183 --- /dev/null +++ b/.github/workflows/demo-refresh.yml @@ -0,0 +1,56 @@ +# Rebuilds the mocked console demo (static/demo) from upstream cozystack-ui and +# opens a PR with the result. Self-contained: the demo overlay lives in +# demo-src/, the build clones upstream fresh, and the PR is opened in THIS repo +# with the built-in GITHUB_TOKEN — no external tokens, no forks. +# +# Requires: Settings → Actions → General → "Allow GitHub Actions to create and +# approve pull requests" (enabled once). This repo is public, so Actions +# minutes are free. + +name: Refresh console demo + +on: + workflow_dispatch: + schedule: + - cron: "0 3 * * 1" # Mondays 03:00 UTC + +concurrency: + group: demo-refresh + cancel-in-progress: false + +permissions: + contents: write + pull-requests: write + +jobs: + refresh: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + + - name: Build demo from upstream (with smoke gate) + run: bash demo-src/build.sh main + + - name: Open a PR if the demo changed + env: + GH_TOKEN: ${{ github.token }} + run: | + if git diff --quiet -- static/demo; then + echo "No demo changes — nothing to do." + exit 0 + fi + BR="demo/refresh-${GITHUB_RUN_ID}" + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git checkout -b "$BR" + git add static/demo + git commit --signoff -m "chore(demo): refresh mocked console demo from cozystack-ui" + git push origin "$BR" + gh pr create --base main --head "$BR" --draft \ + --title "chore(demo): refresh mocked console demo" \ + --body "Automated rebuild of the /demo/ bundle from the current cozystack-ui. The Playwright smoke check (every sidebar/tab screen, no un-mocked API call or page error) passed on this build. Review the Netlify deploy preview, then merge. Not auto-merged." diff --git a/.gitignore b/.gitignore index 55782a61..4df86a46 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ static/docs/*/cozystack-api/ # Claude Code local settings .claude/ +.demo-build-uidir diff --git a/demo-src/build.sh b/demo-src/build.sh new file mode 100755 index 00000000..261f9686 --- /dev/null +++ b/demo-src/build.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# Builds the mocked Cozystack console demo into ../static/demo. +# +# The demo is a thin overlay on cozystack/cozystack-ui: a few new files +# (demo/ mock layer, MSW worker, smoke test) plus small patches to main.tsx, +# vite.config and the manifests. This fetches upstream fresh, lays the overlay +# on top, smoke-checks a root build, then produces the /demo/ bundle. +# +# demo-src/build.sh [cozystack-ui-ref] # ref defaults to "main" +# SKIP_SMOKE=1 demo-src/build.sh # regenerate the bundle only +# +set -euo pipefail + +REF="${1:-main}" +HERE="$(cd "$(dirname "$0")" && pwd)" +SITE="$(cd "$HERE/.." && pwd)" +WORK="$(mktemp -d)" +trap 'rm -rf "$WORK"' EXIT +UI="$WORK/ui" + +echo "==> cloning cozystack-ui @ $REF" +git clone --depth 1 --branch "$REF" https://github.com/cozystack/cozystack-ui.git "$UI" + +echo "==> applying demo overlay" +cp -R "$HERE/overlay/." "$UI/" + +echo "==> applying patches" +( cd "$UI" + for p in "$HERE"/patches/*.patch; do + echo " $(basename "$p")" + git apply --3way "$p" || { echo "PATCH FAILED: $(basename "$p") — upstream drifted, needs a human"; exit 3; } + done ) + +echo "==> installing deps" +corepack enable >/dev/null 2>&1 || true +( cd "$UI" && pnpm install --frozen-lockfile=false ) + +if [ "${SKIP_SMOKE:-0}" != "1" ]; then + echo "==> smoke: root build + walk every screen" + ( cd "$UI" + VITE_DEMO=1 DEMO_BASE_PATH=/ pnpm --filter @cozystack/console build + cp apps/console/dist/index.html apps/console/dist/404.html + PW_FLAGS=""; [ "${CI:-}" = "true" ] && PW_FLAGS="--with-deps" + pnpm --filter @cozystack/console exec playwright install $PW_FLAGS chromium + SMOKE_DIST="$UI/apps/console/dist" node apps/console/demo-smoke.mjs ) +fi + +echo "==> building demo (base /demo/)" +( cd "$UI" + VITE_DEMO=1 DEMO_BASE_PATH=/demo/ pnpm --filter @cozystack/console build + cp apps/console/dist/index.html apps/console/dist/404.html ) + +echo "==> publishing to static/demo" +rm -rf "$SITE/static/demo" +mkdir -p "$SITE/static/demo" +cp -R "$UI/apps/console/dist/." "$SITE/static/demo/" +echo "==> done: $(find "$SITE/static/demo" -type f | wc -l) files in static/demo" diff --git a/demo-src/overlay/apps/console/demo-smoke.mjs b/demo-src/overlay/apps/console/demo-smoke.mjs new file mode 100644 index 00000000..f1f489b0 --- /dev/null +++ b/demo-src/overlay/apps/console/demo-smoke.mjs @@ -0,0 +1,82 @@ +// Demo smoke check for the mocked console. Serves nothing itself — point it at +// a running static server of the VITE_DEMO build (SPA fallback required): +// +// VITE_DEMO=1 pnpm --filter @cozystack/console build +// cp apps/console/dist/index.html apps/console/dist/404.html +// (serve apps/console/dist on $SMOKE_BASE with SPA fallback) +// node apps/console/demo-smoke.mjs +// +// It walks every sidebar/tab destination reachable from the three top sections, +// visits each, and fails on any un-mocked Kubernetes call (4xx/5xx to /api or +// /apis), any page error. Exit code is non-zero on +// failure so CI can gate a deploy on it. + +import { chromium } from "@playwright/test" +import http from "node:http" +import fs from "node:fs" +import path from "node:path" + +// Self-contained: serve the built demo (SPA fallback) so CI just runs +// VITE_DEMO=1 pnpm --filter @cozystack/console build && node demo-smoke.mjs +const DIST = process.env.SMOKE_DIST || "dist" +const TYPES = { ".html":"text/html", ".js":"text/javascript", ".css":"text/css", ".json":"application/json", ".svg":"image/svg+xml", ".ico":"image/x-icon", ".woff2":"font/woff2", ".png":"image/png" } +const server = http.createServer((req, res) => { + const url = req.url.split("?")[0] + let file = path.join(DIST, url) + if (!fs.existsSync(file) || fs.statSync(file).isDirectory()) file = path.join(DIST, "index.html") + res.setHeader("Content-Type", TYPES[path.extname(file)] || "application/octet-stream") + fs.createReadStream(file).pipe(res) +}) +await new Promise((r) => server.listen(0, r)) +const PORT = server.address().port + +const BASE = `http://localhost:${PORT}` +const ENTRIES = ["/marketplace", "/console", "/admin/capacity/cluster"] + +// Deliberately un-mocked, handled gracefully by the app — not failures. +const ALLOWED_404 = [ + "cozy-dashboard-console-config", // config configmap, swallowed to {} + "buckets/cozy-backups", // optional backup bucket +] + +const browser = await chromium.launch() +const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }) + +const badApi = new Set() +const pageErrors = [] +page.on("response", (r) => { + const u = new URL(r.url()).pathname + if (!/^\/(api|apis)\b/.test(u) && !u.startsWith("/api/") && !u.startsWith("/apis/")) return + if (r.status() < 400) return + if (ALLOWED_404.some((a) => u.includes(a))) return + badApi.add(`${r.status()} ${u}`) +}) +page.on("pageerror", (e) => pageErrors.push(String(e).slice(0, 160))) + +const routes = new Set(ENTRIES) +for (const entry of ENTRIES) { + await page.goto(BASE + entry, { waitUntil: "domcontentloaded" }) + await page.waitForTimeout(1500) + for (const href of await page + .locator("aside a, nav a, [role=tablist] a, a[href^='/console'], a[href^='/admin'], a[href^='/marketplace']") + .evaluateAll((as) => as.map((a) => a.getAttribute("href")))) + if (href && href.startsWith("/") && !href.startsWith("//")) routes.add(href) +} + +console.log(`\n########## visiting ${routes.size} destinations\n`) +for (const route of [...routes].sort()) { + await page.goto(BASE + route, { waitUntil: "domcontentloaded" }) + await page.waitForTimeout(1200) +} +// This console has no distinct "not found" screen (an unknown route just +// renders the shell), so a broken screen shows up as an un-mocked API call or +// a page error, both collected above — not as body text. + +await browser.close() +server.close() + +const fail = badApi.size || pageErrors.length +console.log("un-mocked API calls:", badApi.size ? [...badApi] : "none") +console.log("page errors:", pageErrors.length ? pageErrors : "none") +console.log(fail ? "\nSMOKE FAILED" : "\nsmoke OK") +process.exit(fail ? 1 : 0) diff --git a/demo-src/overlay/apps/console/src/demo/browser.ts b/demo-src/overlay/apps/console/src/demo/browser.ts new file mode 100644 index 00000000..0bd32a6e --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/browser.ts @@ -0,0 +1,15 @@ +import { setupWorker } from "msw/browser" +import { handlers } from "./handlers.ts" + +// Запускается только в demo-сборке (VITE_DEMO=1). unhandled-запросы пропускаем +// молча — часть путей k8s UI может дёргать опционально. +export async function startDemo() { + const worker = setupWorker(...handlers) + // worker + его scope должны жить под base-путём (напр. /demo/), иначе на + // под-путях моки не перехватываются. + await worker.start({ + onUnhandledRequest: "bypass", + quiet: true, + serviceWorker: { url: `${import.meta.env.BASE_URL}mockServiceWorker.js` }, + }) +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/apis-discovery.json b/demo-src/overlay/apps/console/src/demo/fixtures/apis-discovery.json new file mode 100644 index 00000000..4e3c77ff --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/apis-discovery.json @@ -0,0 +1 @@ +{"kind":"APIGroupList","apiVersion":"v1","groups":[{"name":"apiregistration.k8s.io","versions":[{"groupVersion":"apiregistration.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"apiregistration.k8s.io/v1","version":"v1"}},{"name":"apps","versions":[{"groupVersion":"apps/v1","version":"v1"}],"preferredVersion":{"groupVersion":"apps/v1","version":"v1"}},{"name":"events.k8s.io","versions":[{"groupVersion":"events.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"events.k8s.io/v1","version":"v1"}},{"name":"authentication.k8s.io","versions":[{"groupVersion":"authentication.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"authentication.k8s.io/v1","version":"v1"}},{"name":"authorization.k8s.io","versions":[{"groupVersion":"authorization.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"authorization.k8s.io/v1","version":"v1"}},{"name":"autoscaling","versions":[{"groupVersion":"autoscaling/v2","version":"v2"},{"groupVersion":"autoscaling/v1","version":"v1"}],"preferredVersion":{"groupVersion":"autoscaling/v2","version":"v2"}},{"name":"batch","versions":[{"groupVersion":"batch/v1","version":"v1"}],"preferredVersion":{"groupVersion":"batch/v1","version":"v1"}},{"name":"certificates.k8s.io","versions":[{"groupVersion":"certificates.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"certificates.k8s.io/v1","version":"v1"}},{"name":"networking.k8s.io","versions":[{"groupVersion":"networking.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"networking.k8s.io/v1","version":"v1"}},{"name":"policy","versions":[{"groupVersion":"policy/v1","version":"v1"}],"preferredVersion":{"groupVersion":"policy/v1","version":"v1"}},{"name":"rbac.authorization.k8s.io","versions":[{"groupVersion":"rbac.authorization.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"rbac.authorization.k8s.io/v1","version":"v1"}},{"name":"storage.k8s.io","versions":[{"groupVersion":"storage.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"storage.k8s.io/v1","version":"v1"}},{"name":"admissionregistration.k8s.io","versions":[{"groupVersion":"admissionregistration.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"admissionregistration.k8s.io/v1","version":"v1"}},{"name":"apiextensions.k8s.io","versions":[{"groupVersion":"apiextensions.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"apiextensions.k8s.io/v1","version":"v1"}},{"name":"scheduling.k8s.io","versions":[{"groupVersion":"scheduling.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"scheduling.k8s.io/v1","version":"v1"}},{"name":"coordination.k8s.io","versions":[{"groupVersion":"coordination.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"coordination.k8s.io/v1","version":"v1"}},{"name":"node.k8s.io","versions":[{"groupVersion":"node.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"node.k8s.io/v1","version":"v1"}},{"name":"discovery.k8s.io","versions":[{"groupVersion":"discovery.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"discovery.k8s.io/v1","version":"v1"}},{"name":"resource.k8s.io","versions":[{"groupVersion":"resource.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"resource.k8s.io/v1","version":"v1"}},{"name":"flowcontrol.apiserver.k8s.io","versions":[{"groupVersion":"flowcontrol.apiserver.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"flowcontrol.apiserver.k8s.io/v1","version":"v1"}},{"name":"psmdb.percona.com","versions":[{"groupVersion":"psmdb.percona.com/v1","version":"v1"},{"groupVersion":"psmdb.percona.com/v1-10-0","version":"v1-10-0"},{"groupVersion":"psmdb.percona.com/v1-11-0","version":"v1-11-0"},{"groupVersion":"psmdb.percona.com/v1-12-0","version":"v1-12-0"}],"preferredVersion":{"groupVersion":"psmdb.percona.com/v1","version":"v1"}},{"name":"internal.linstor.linbit.com","versions":[{"groupVersion":"internal.linstor.linbit.com/v1","version":"v1"},{"groupVersion":"internal.linstor.linbit.com/v1-15-0","version":"v1-15-0"},{"groupVersion":"internal.linstor.linbit.com/v1-17-0","version":"v1-17-0"},{"groupVersion":"internal.linstor.linbit.com/v1-18-2","version":"v1-18-2"},{"groupVersion":"internal.linstor.linbit.com/v1-19-1","version":"v1-19-1"},{"groupVersion":"internal.linstor.linbit.com/v1-25-1","version":"v1-25-1"},{"groupVersion":"internal.linstor.linbit.com/v1-27-1","version":"v1-27-1"},{"groupVersion":"internal.linstor.linbit.com/v1-31-1","version":"v1-31-1"}],"preferredVersion":{"groupVersion":"internal.linstor.linbit.com/v1","version":"v1"}},{"name":"acme.cert-manager.io","versions":[{"groupVersion":"acme.cert-manager.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"acme.cert-manager.io/v1","version":"v1"}},{"name":"autoscaling.k8s.io","versions":[{"groupVersion":"autoscaling.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"autoscaling.k8s.io/v1","version":"v1"}},{"name":"barmancloud.cnpg.io","versions":[{"groupVersion":"barmancloud.cnpg.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"barmancloud.cnpg.io/v1","version":"v1"}},{"name":"cert-manager.io","versions":[{"groupVersion":"cert-manager.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"cert-manager.io/v1","version":"v1"}},{"name":"clickhouse-keeper.altinity.com","versions":[{"groupVersion":"clickhouse-keeper.altinity.com/v1","version":"v1"}],"preferredVersion":{"groupVersion":"clickhouse-keeper.altinity.com/v1","version":"v1"}},{"name":"clickhouse.altinity.com","versions":[{"groupVersion":"clickhouse.altinity.com/v1","version":"v1"}],"preferredVersion":{"groupVersion":"clickhouse.altinity.com/v1","version":"v1"}},{"name":"databases.spotahome.com","versions":[{"groupVersion":"databases.spotahome.com/v1","version":"v1"}],"preferredVersion":{"groupVersion":"databases.spotahome.com/v1","version":"v1"}},{"name":"gateway.networking.k8s.io","versions":[{"groupVersion":"gateway.networking.k8s.io/v1","version":"v1"},{"groupVersion":"gateway.networking.k8s.io/v1beta1","version":"v1beta1"},{"groupVersion":"gateway.networking.k8s.io/v1alpha3","version":"v1alpha3"},{"groupVersion":"gateway.networking.k8s.io/v1alpha2","version":"v1alpha2"}],"preferredVersion":{"groupVersion":"gateway.networking.k8s.io/v1","version":"v1"}},{"name":"image.toolkit.fluxcd.io","versions":[{"groupVersion":"image.toolkit.fluxcd.io/v1","version":"v1"},{"groupVersion":"image.toolkit.fluxcd.io/v1beta2","version":"v1beta2"}],"preferredVersion":{"groupVersion":"image.toolkit.fluxcd.io/v1","version":"v1"}},{"name":"k8s.cni.cncf.io","versions":[{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}},{"name":"kubeovn.io","versions":[{"groupVersion":"kubeovn.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"kubeovn.io/v1","version":"v1"}},{"name":"kubevirt.io","versions":[{"groupVersion":"kubevirt.io/v1","version":"v1"},{"groupVersion":"kubevirt.io/v1alpha3","version":"v1alpha3"}],"preferredVersion":{"groupVersion":"kubevirt.io/v1","version":"v1"}},{"name":"kustomize.toolkit.fluxcd.io","versions":[{"groupVersion":"kustomize.toolkit.fluxcd.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"kustomize.toolkit.fluxcd.io/v1","version":"v1"}},{"name":"monitoring.coreos.com","versions":[{"groupVersion":"monitoring.coreos.com/v1","version":"v1"},{"groupVersion":"monitoring.coreos.com/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"monitoring.coreos.com/v1","version":"v1"}},{"name":"notification.toolkit.fluxcd.io","versions":[{"groupVersion":"notification.toolkit.fluxcd.io/v1","version":"v1"},{"groupVersion":"notification.toolkit.fluxcd.io/v1beta3","version":"v1beta3"},{"groupVersion":"notification.toolkit.fluxcd.io/v1beta2","version":"v1beta2"}],"preferredVersion":{"groupVersion":"notification.toolkit.fluxcd.io/v1","version":"v1"}},{"name":"opensearch.opster.io","versions":[{"groupVersion":"opensearch.opster.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"opensearch.opster.io/v1","version":"v1"}},{"name":"operator.victoriametrics.com","versions":[{"groupVersion":"operator.victoriametrics.com/v1","version":"v1"},{"groupVersion":"operator.victoriametrics.com/v1beta1","version":"v1beta1"},{"groupVersion":"operator.victoriametrics.com/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"operator.victoriametrics.com/v1","version":"v1"}},{"name":"piraeus.io","versions":[{"groupVersion":"piraeus.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"piraeus.io/v1","version":"v1"}},{"name":"postgresql.cnpg.io","versions":[{"groupVersion":"postgresql.cnpg.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"postgresql.cnpg.io/v1","version":"v1"}},{"name":"snapshot.storage.k8s.io","versions":[{"groupVersion":"snapshot.storage.k8s.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"snapshot.storage.k8s.io/v1","version":"v1"}},{"name":"source.toolkit.fluxcd.io","versions":[{"groupVersion":"source.toolkit.fluxcd.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"source.toolkit.fluxcd.io/v1","version":"v1"}},{"name":"subresources.kubevirt.io","versions":[{"groupVersion":"subresources.kubevirt.io/v1","version":"v1"},{"groupVersion":"subresources.kubevirt.io/v1alpha3","version":"v1alpha3"}],"preferredVersion":{"groupVersion":"subresources.kubevirt.io/v1","version":"v1"}},{"name":"v1.edp.epam.com","versions":[{"groupVersion":"v1.edp.epam.com/v1","version":"v1"},{"groupVersion":"v1.edp.epam.com/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"v1.edp.epam.com/v1","version":"v1"}},{"name":"velero.io","versions":[{"groupVersion":"velero.io/v1","version":"v1"},{"groupVersion":"velero.io/v2alpha1","version":"v2alpha1"}],"preferredVersion":{"groupVersion":"velero.io/v1","version":"v1"}},{"name":"apps.cozystack.io","versions":[{"groupVersion":"apps.cozystack.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"apps.cozystack.io/v1alpha1","version":"v1alpha1"}},{"name":"backup.kubevirt.io","versions":[{"groupVersion":"backup.kubevirt.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"backup.kubevirt.io/v1alpha1","version":"v1alpha1"}},{"name":"backups.cozystack.io","versions":[{"groupVersion":"backups.cozystack.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"backups.cozystack.io/v1alpha1","version":"v1alpha1"}},{"name":"clone.kubevirt.io","versions":[{"groupVersion":"clone.kubevirt.io/v1beta1","version":"v1beta1"},{"groupVersion":"clone.kubevirt.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"clone.kubevirt.io/v1beta1","version":"v1beta1"}},{"name":"controlplane.cluster.x-k8s.io","versions":[{"groupVersion":"controlplane.cluster.x-k8s.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"controlplane.cluster.x-k8s.io/v1alpha1","version":"v1alpha1"}},{"name":"core.cozystack.io","versions":[{"groupVersion":"core.cozystack.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"core.cozystack.io/v1alpha1","version":"v1alpha1"}},{"name":"cozystack.io","versions":[{"groupVersion":"cozystack.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"cozystack.io/v1alpha1","version":"v1alpha1"}},{"name":"export.kubevirt.io","versions":[{"groupVersion":"export.kubevirt.io/v1beta1","version":"v1beta1"},{"groupVersion":"export.kubevirt.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"export.kubevirt.io/v1beta1","version":"v1beta1"}},{"name":"gateway.cozystack.io","versions":[{"groupVersion":"gateway.cozystack.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"gateway.cozystack.io/v1alpha1","version":"v1alpha1"}},{"name":"gateway.networking.x-k8s.io","versions":[{"groupVersion":"gateway.networking.x-k8s.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"gateway.networking.x-k8s.io/v1alpha1","version":"v1alpha1"}},{"name":"groupsnapshot.storage.k8s.io","versions":[{"groupVersion":"groupsnapshot.storage.k8s.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"groupsnapshot.storage.k8s.io/v1alpha1","version":"v1alpha1"}},{"name":"infrastructure.cluster.x-k8s.io","versions":[{"groupVersion":"infrastructure.cluster.x-k8s.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"infrastructure.cluster.x-k8s.io/v1alpha1","version":"v1alpha1"}},{"name":"ipam.cluster.x-k8s.io","versions":[{"groupVersion":"ipam.cluster.x-k8s.io/v1beta1","version":"v1beta1"},{"groupVersion":"ipam.cluster.x-k8s.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"ipam.cluster.x-k8s.io/v1beta1","version":"v1beta1"}},{"name":"k8s.mariadb.com","versions":[{"groupVersion":"k8s.mariadb.com/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"k8s.mariadb.com/v1alpha1","version":"v1alpha1"}},{"name":"kafka.strimzi.io","versions":[{"groupVersion":"kafka.strimzi.io/v1beta2","version":"v1beta2"},{"groupVersion":"kafka.strimzi.io/v1beta1","version":"v1beta1"},{"groupVersion":"kafka.strimzi.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"kafka.strimzi.io/v1beta2","version":"v1beta2"}},{"name":"kamaji.clastix.io","versions":[{"groupVersion":"kamaji.clastix.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"kamaji.clastix.io/v1alpha1","version":"v1alpha1"}},{"name":"migrations.kubevirt.io","versions":[{"groupVersion":"migrations.kubevirt.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"migrations.kubevirt.io/v1alpha1","version":"v1alpha1"}},{"name":"objectstorage.k8s.io","versions":[{"groupVersion":"objectstorage.k8s.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"objectstorage.k8s.io/v1alpha1","version":"v1alpha1"}},{"name":"operator.cluster.x-k8s.io","versions":[{"groupVersion":"operator.cluster.x-k8s.io/v1alpha2","version":"v1alpha2"},{"groupVersion":"operator.cluster.x-k8s.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"operator.cluster.x-k8s.io/v1alpha2","version":"v1alpha2"}},{"name":"pool.kubevirt.io","versions":[{"groupVersion":"pool.kubevirt.io/v1beta1","version":"v1beta1"},{"groupVersion":"pool.kubevirt.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"pool.kubevirt.io/v1beta1","version":"v1beta1"}},{"name":"rabbitmq.com","versions":[{"groupVersion":"rabbitmq.com/v1beta1","version":"v1beta1"},{"groupVersion":"rabbitmq.com/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"rabbitmq.com/v1beta1","version":"v1beta1"}},{"name":"runtime.cluster.x-k8s.io","versions":[{"groupVersion":"runtime.cluster.x-k8s.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"runtime.cluster.x-k8s.io/v1alpha1","version":"v1alpha1"}},{"name":"sdn.cozystack.io","versions":[{"groupVersion":"sdn.cozystack.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"sdn.cozystack.io/v1alpha1","version":"v1alpha1"}},{"name":"snapshot.kubevirt.io","versions":[{"groupVersion":"snapshot.kubevirt.io/v1beta1","version":"v1beta1"},{"groupVersion":"snapshot.kubevirt.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"snapshot.kubevirt.io/v1beta1","version":"v1beta1"}},{"name":"strategy.backups.cozystack.io","versions":[{"groupVersion":"strategy.backups.cozystack.io/v1alpha1","version":"v1alpha1"}],"preferredVersion":{"groupVersion":"strategy.backups.cozystack.io/v1alpha1","version":"v1alpha1"}},{"name":"bootstrap.cluster.x-k8s.io","versions":[{"groupVersion":"bootstrap.cluster.x-k8s.io/v1beta1","version":"v1beta1"},{"groupVersion":"bootstrap.cluster.x-k8s.io/v1alpha3","version":"v1alpha3"},{"groupVersion":"bootstrap.cluster.x-k8s.io/v1alpha2","version":"v1alpha2"}],"preferredVersion":{"groupVersion":"bootstrap.cluster.x-k8s.io/v1beta1","version":"v1beta1"}},{"name":"etcd-operator.cozystack.io","versions":[{"groupVersion":"etcd-operator.cozystack.io/v1alpha2","version":"v1alpha2"}],"preferredVersion":{"groupVersion":"etcd-operator.cozystack.io/v1alpha2","version":"v1alpha2"}},{"name":"addons.cluster.x-k8s.io","versions":[{"groupVersion":"addons.cluster.x-k8s.io/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"addons.cluster.x-k8s.io/v1beta1","version":"v1beta1"}},{"name":"cdi.kubevirt.io","versions":[{"groupVersion":"cdi.kubevirt.io/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"cdi.kubevirt.io/v1beta1","version":"v1beta1"}},{"name":"cluster.x-k8s.io","versions":[{"groupVersion":"cluster.x-k8s.io/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"cluster.x-k8s.io/v1beta1","version":"v1beta1"}},{"name":"forklift.cdi.kubevirt.io","versions":[{"groupVersion":"forklift.cdi.kubevirt.io/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"forklift.cdi.kubevirt.io/v1beta1","version":"v1beta1"}},{"name":"grafana.integreatly.org","versions":[{"groupVersion":"grafana.integreatly.org/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"grafana.integreatly.org/v1beta1","version":"v1beta1"}},{"name":"instancetype.kubevirt.io","versions":[{"groupVersion":"instancetype.kubevirt.io/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"instancetype.kubevirt.io/v1beta1","version":"v1beta1"}},{"name":"source.extensions.fluxcd.io","versions":[{"groupVersion":"source.extensions.fluxcd.io/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"source.extensions.fluxcd.io/v1beta1","version":"v1beta1"}},{"name":"upload.cdi.kubevirt.io","versions":[{"groupVersion":"upload.cdi.kubevirt.io/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"upload.cdi.kubevirt.io/v1beta1","version":"v1beta1"}},{"name":"apps.foundationdb.org","versions":[{"groupVersion":"apps.foundationdb.org/v1beta2","version":"v1beta2"}],"preferredVersion":{"groupVersion":"apps.foundationdb.org/v1beta2","version":"v1beta2"}},{"name":"core.strimzi.io","versions":[{"groupVersion":"core.strimzi.io/v1beta2","version":"v1beta2"}],"preferredVersion":{"groupVersion":"core.strimzi.io/v1beta2","version":"v1beta2"}},{"name":"cilium.io","versions":[{"groupVersion":"cilium.io/v2","version":"v2"},{"groupVersion":"cilium.io/v2alpha1","version":"v2alpha1"}],"preferredVersion":{"groupVersion":"cilium.io/v2","version":"v2"}},{"name":"helm.toolkit.fluxcd.io","versions":[{"groupVersion":"helm.toolkit.fluxcd.io/v2","version":"v2"}],"preferredVersion":{"groupVersion":"helm.toolkit.fluxcd.io/v2","version":"v2"}},{"name":"metrics.k8s.io","versions":[{"groupVersion":"metrics.k8s.io/v1beta1","version":"v1beta1"}],"preferredVersion":{"groupVersion":"metrics.k8s.io/v1beta1","version":"v1beta1"}}]} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/applicationdefinitions.json b/demo-src/overlay/apps/console/src/demo/fixtures/applicationdefinitions.json new file mode 100644 index 00000000..17049c36 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/applicationdefinitions.json @@ -0,0 +1,4604 @@ +{ + "apiVersion": "v1", + "items": [ + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "bucket-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:24Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "bucket-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "bucket", + "resourceVersion": "35829", + "uid": "c2db902b-e7ca-4e93-ba92-dae4b6e8c7b7" + }, + "spec": { + "application": { + "kind": "Bucket", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"locking\":{\"description\":\"Provisions bucket from the `-lock` BucketClass (with object lock enabled).\",\"type\":\"boolean\",\"default\":false},\"storagePool\":{\"description\":\"Selects a specific BucketClass by storage pool name.\",\"type\":\"string\",\"default\":\"\",\"x-cozystack-options\":{\"source\":\"storagepool\"}},\"users\":{\"description\":\"Users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"readonly\":{\"description\":\"Whether the user has read-only access.\",\"type\":\"boolean\"}}}}}}", + "plural": "buckets", + "singular": "bucket" + }, + "dashboard": { + "category": "IaaS", + "description": "S3 compatible storage", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODNfMzA5MSkiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03MiAzMC4xNjQxTDExNy45ODMgMzYuNzc4OVY0MC42NzM5QzExNy45ODMgNDYuNDY1MyA5Ny4zODYyIDUxLjEzMzIgNzEuOTgyNyA1MS4xMzMyQzQ2LjU3OTIgNTEuMTMzMiAyNiA0Ni40NjUzIDI2IDQwLjY3MzlWMzYuNDQzMUw3MiAzMC4xNjQxWk03MiA1OC4yNjc4QzkxLjIwODQgNTguMjY3OCAxMDcuNjU4IDU1LjU5ODYgMTE0LjU0NyA1MS44MDQ4TDExNi44MDMgNDguMTExTDExNy43MjMgNDQuNzUzVjQ4LjkxNzFMMTAyLjY3OSAxMTEuMDMzQzEwMi42NzkgMTE0Ljg5NSA4OC45NTMzIDExOCA3Mi4wMTcyIDExOEM1NS4wODEyIDExOCA0MS4zNzQzIDExNC44OTUgNDEuMzc0MyAxMTEuMDMzTDI2LjMzIDQ4LjkxNzFWNDQuODM2OUwyOS44MDA3IDUxLjkzODJDMzYuNzA2NSA1NS42NjUzIDUyLjk5OTcgNTguMjY3OCA3MiA1OC4yNjc4WiIgZmlsbD0iIzhDMzEyMyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcyLjAwMDMgMjZDOTcuNDAzOCAyNiAxMTggMzAuNjgzOSAxMTggMzYuNDQyQzExOCA0Mi4yIDk3LjM4NjYgNDYuODUwNyA3Mi4wMDAzIDQ2Ljg1MDdDNDYuNjE0MSA0Ni44NTA3IDI2LjAxNzYgNDIuMjM0NSAyNi4wMTc2IDM2LjQ0MkMyNi4wMTc2IDMwLjY0OTQgNDYuNTk2OCAyNiA3Mi4wMDAzIDI2Wk03Mi4wMDAzIDU0LjEwMzdDOTUuNjg1NyA1NC4xMDM3IDExNS4xNzIgNTAuMDU4IDExNy43MDYgNDQuODE5N0wxMDIuNjYyIDEwNi45MzdDMTAyLjY2MiAxMTAuNzk5IDg4LjkzNjQgMTEzLjkwNSA3Mi4wMDAzIDExMy45MDVDNTUuMDY0MyAxMTMuOTA1IDQxLjMzOSAxMTAuODE2IDQxLjMzOSAxMDYuOTU0TDI2LjI5NTkgNDQuODM3QzI4Ljg0NjYgNTAuMDU4IDQ4LjMzMzMgNTQuMTAzNyA3Mi4wMDAzIDU0LjEwMzdaIiBmaWxsPSIjRTA1MjQzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNjEuMTcyNSA2MC4wMjkzSDgxLjA5MjhWNzkuMTY3Nkg2MS4xNzI1VjYwLjAyOTNaTTQ1LjMzMDEgOTUuMzY4OEM0NS4zMzAxIDkwLjE0MiA0OS43MTA0IDg1LjkzNDIgNTUuMTUxMSA4NS45MzQyQzYwLjU5MTcgODUuOTM0MiA2NC45NzIxIDkwLjE0MiA2NC45NzIxIDk1LjM2ODhDNjQuOTcyMSAxMDAuNTk2IDYwLjU5MTcgMTA0LjgwMyA1NS4xNTExIDEwNC44MDNDNDkuNzEwNCAxMDQuODAzIDQ1LjMzMDEgMTAwLjU5NiA0NS4zMzAxIDk1LjM2ODhaTTk2LjQ0ODcgMTA0LjM2OEg3Ni43NzIyTDg2LjYxMDUgODYuNzczN0w5Ni40NDg3IDEwNC4zNjhaIiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4M18zMDkxIiB4MT0iMCIgeTE9IjAiIHgyPSIxNTEiIHkyPSIxODAiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0ZGRjBFRSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFQzg4N0QiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "locking" + ], + [ + "spec", + "storagePool" + ], + [ + "spec", + "users" + ] + ], + "plural": "Buckets", + "singular": "Bucket", + "tags": [ + "storage" + ], + "weight": 80 + }, + "ingresses": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "bucket-{{ .name }}-ui" + ] + } + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-bucket-application-default-bucket", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "bucket-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "bucket-{{ .name }}-credentials" + ] + }, + { + "matchLabels": { + "apps.cozystack.io/user-secret": "true" + } + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:26Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "clickhouse-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "clickhouse", + "resourceVersion": "35976", + "uid": "97202fab-948b-4429-ad73-acdce6ed10da" + }, + "spec": { + "application": { + "kind": "ClickHouse", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of ClickHouse replicas.\",\"type\":\"integer\",\"default\":2},\"shards\":{\"description\":\"Number of ClickHouse shards.\",\"type\":\"integer\",\"default\":1},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each ClickHouse replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"logStorageSize\":{\"description\":\"Size of Persistent Volume for logs.\",\"default\":\"2Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"logTTL\":{\"description\":\"TTL (expiration time) for `query_log` and `query_thread_log`.\",\"type\":\"integer\",\"default\":15},\"users\":{\"description\":\"Users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"password\":{\"description\":\"Password for the user.\",\"type\":\"string\"},\"readonly\":{\"description\":\"User is readonly (default: false).\",\"type\":\"boolean\"}}}},\"backup\":{\"description\":\"Backup configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\"],\"properties\":{\"cleanupStrategy\":{\"description\":\"Legacy. Restic retention policy passed to the legacy CronJob (`restic forget …`). Unused by the Altinity strategy.\",\"type\":\"string\",\"default\":\"--keep-last=3 --keep-daily=3 --keep-within-weekly=1m\"},\"enabled\":{\"description\":\"Enable backup integration. Materialises the chart-emitted `\u003crelease\u003e-backup-s3` Secret consumed by the Altinity backup strategy and, when `schedule` is non-empty, also renders the legacy chart-managed CronJob.\",\"type\":\"boolean\",\"default\":false},\"endpoint\":{\"description\":\"DEPRECATED. S3 endpoint URL for the legacy chart-emitted sidecar.\",\"type\":\"string\",\"default\":\"\"},\"resticPassword\":{\"description\":\"Legacy. Password for Restic backup encryption used by the legacy CronJob. Unused by the Altinity strategy.\",\"type\":\"string\",\"default\":\"\u003cpassword\u003e\"},\"s3AccessKey\":{\"description\":\"DEPRECATED. Tenants no longer supply S3 keys; the platform-managed Bucket Secret is the source of truth. Optional now so `useSystemBucket: true` tenants can omit it.\",\"type\":\"string\",\"default\":\"\u003cyour-access-key\u003e\"},\"s3Bucket\":{\"description\":\"DEPRECATED. Optional; see `s3Region`.\",\"type\":\"string\",\"default\":\"s3.example.org/clickhouse-backups\"},\"s3CredentialsSecret\":{\"description\":\"DEPRECATED. Pre-existing Secret reference for the legacy chart-emitted sidecar. The platform flow projects `cozy-backups-creds` instead.\",\"type\":\"object\",\"default\":{},\"properties\":{\"accessKeyIDKey\":{\"description\":\"Key in the Secret holding the access key ID. Defaults to `accessKey`.\",\"type\":\"string\",\"default\":\"\"},\"bucketKey\":{\"description\":\"Key in the Secret holding the bucket name. Defaults to `bucketName`.\",\"type\":\"string\",\"default\":\"\"},\"endpointKey\":{\"description\":\"Key in the Secret holding the S3 endpoint URL. Defaults to `endpoint`.\",\"type\":\"string\",\"default\":\"\"},\"name\":{\"description\":\"Name of the Secret in the application namespace. Empty means the chart materialises `\u003crelease\u003e-backup-s3` from the legacy `s3*` fields.\",\"type\":\"string\",\"default\":\"\"},\"regionKey\":{\"description\":\"Key in the Secret holding the S3 region. Defaults to `region`.\",\"type\":\"string\",\"default\":\"\"},\"secretAccessKeyKey\":{\"description\":\"Key in the Secret holding the secret access key. Defaults to `secretKey`.\",\"type\":\"string\",\"default\":\"\"}}},\"s3PathOverride\":{\"description\":\"DEPRECATED. Object-key prefix inside the legacy `s3Bucket`; the new platform flow scopes by namespace automatically.\",\"type\":\"string\",\"default\":\"\"},\"s3Region\":{\"description\":\"DEPRECATED. Per-tenant S3 configuration is being phased out in favour of the platform-managed `cozy-default` BackupClass. Optional now so tenants on `useSystemBucket: true` can omit it.\",\"type\":\"string\",\"default\":\"us-east-1\"},\"s3SecretKey\":{\"description\":\"DEPRECATED. Optional; see `s3AccessKey`.\",\"type\":\"string\",\"default\":\"\u003cyour-secret-key\u003e\"},\"schedule\":{\"description\":\"Legacy. Cron schedule for the chart-emitted CronJob that runs the dump+restic backup. Empty (default) skips the legacy CronJob; recommended when a `BackupClass` + `Plan` from `backups.cozystack.io` already drives backup orchestration via the Altinity strategy.\",\"type\":\"string\",\"default\":\"\"},\"useSystemBucket\":{\"description\":\"Opt-in: when true, the chart-emitted `\u003crelease\u003e-backup-s3` Secret is skipped and the `clickhouse-backup` sidecar reads bucket coordinates + S3 credentials from the platform-projected `cozy-backups-creds` Secret. `S3_PATH` is set to `\u003cnamespace\u003e/\u003crelease\u003e` for cross-tenant isolation. Use together with the platform `cozy-default` BackupClass — tenants do not need to fill any `s3*` field below.\",\"type\":\"boolean\",\"default\":false}}},\"clickhouseKeeper\":{\"description\":\"ClickHouse Keeper configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"enabled\":{\"description\":\"Deploy ClickHouse Keeper for cluster coordination.\",\"type\":\"boolean\",\"default\":true},\"replicas\":{\"description\":\"Number of Keeper replicas.\",\"type\":\"integer\",\"default\":3},\"resourcesPreset\":{\"description\":\"Default sizing preset.\",\"type\":\"string\",\"default\":\"t1.micro\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"1Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}}", + "plural": "clickhouses", + "singular": "clickhouse" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed ClickHouse service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODNfMzIwMikiLz4KPHBhdGggZD0iTTIzIDEwNUgzNFYxMTZIMjNWMTA1WiIgZmlsbD0iI0ZGMDAwMCIvPgo8cGF0aCBkPSJNMjMgMjhIMzRWMTA1SDIzVjI4Wk00NSAyOEg1NS45OTk5VjExNkg0NVYyOFpNNjYuOTk5OSAyOEg3Ny45OTk5VjExNkg2Ni45OTk5VjI4Wk04OC45OTk5IDI4SDk5Ljk5OTlWMTE2SDg4Ljk5OTlWMjhaTTExMSA2My43NDk5SDEyMlY4MC4yNDk5SDExMVY2My43NDk5WiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl82ODNfMzIwMiIgeDE9Ii0wLjQ5OTk5OCIgeTE9IjEuNSIgeDI9IjE1My41IiB5Mj0iMTYyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRkNDMDAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY3QTAwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "shards" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "logStorageSize" + ], + [ + "spec", + "logTTL" + ], + [ + "spec", + "users" + ], + [ + "spec", + "backup" + ], + [ + "spec", + "backup", + "enabled" + ], + [ + "spec", + "backup", + "useSystemBucket" + ], + [ + "spec", + "backup", + "s3Region" + ], + [ + "spec", + "backup", + "s3Bucket" + ], + [ + "spec", + "backup", + "endpoint" + ], + [ + "spec", + "backup", + "s3PathOverride" + ], + [ + "spec", + "backup", + "schedule" + ], + [ + "spec", + "backup", + "cleanupStrategy" + ], + [ + "spec", + "backup", + "s3AccessKey" + ], + [ + "spec", + "backup", + "s3SecretKey" + ], + [ + "spec", + "backup", + "resticPassword" + ], + [ + "spec", + "backup", + "s3CredentialsSecret" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "name" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "bucketKey" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "endpointKey" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "regionKey" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "accessKeyIDKey" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "secretAccessKeyKey" + ], + [ + "spec", + "clickhouseKeeper" + ], + [ + "spec", + "clickhouseKeeper", + "enabled" + ], + [ + "spec", + "clickhouseKeeper", + "size" + ], + [ + "spec", + "clickhouseKeeper", + "resourcesPreset" + ], + [ + "spec", + "clickhouseKeeper", + "replicas" + ] + ], + "plural": "ClickHouse", + "singular": "ClickHouse", + "tags": [] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-clickhouse-application-default-clickhouse", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "clickhouse-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "clickhouse-{{ .name }}-credentials" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "chendpoint-clickhouse-{{ .name }}" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "etcd-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:24Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "etcd-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "etcd", + "resourceVersion": "35823", + "uid": "ee6484f5-6d80-4fd0-8533-e04185d812f2" + }, + "spec": { + "application": { + "kind": "Etcd", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"version\":{\"description\":\"etcd version (X.Y.Z) to run, set on the EtcdCluster's spec.version; the operator pulls etcd from its own configured image.\",\"type\":\"string\",\"default\":\"3.6.11\"},\"size\":{\"description\":\"Persistent Volume size.\",\"default\":\"4Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\"},\"replicas\":{\"description\":\"Number of etcd replicas.\",\"type\":\"integer\",\"default\":3},\"resources\":{\"description\":\"Resource configuration for etcd.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"default\":\"1000m\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"default\":\"512Mi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}}", + "plural": "etcds", + "singular": "etcd" + }, + "dashboard": { + "category": "Administration", + "description": "Storage for Kubernetes clusters", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9Ii0wLjAwMTk1MzEyIiB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgcng9IjI0IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfNjgzXzI5NjMpIi8+CjxwYXRoIGQ9Ik0xMjIuNDQyIDczLjQ3MjlDMTIxLjk1OSA3My41MTM0IDEyMS40NzQgNzMuNTMyMiAxMjAuOTU4IDczLjUzMjJDMTE3Ljk2NSA3My41MzIyIDExNS4wNjEgNzIuODMwNCAxMTIuNDQyIDcxLjU0NTFDMTEzLjMxNCA2Ni41NDIxIDExMy42ODUgNjEuNTAxOSAxMTMuNTg4IDU2LjQ4MDJDMTEwLjc0OCA1Mi4zNzIzIDEwNy41MDIgNDguNDk2NSAxMDMuODM4IDQ0LjkyNTdDMTA1LjQyOCA0MS45NDU0IDEwNy43NzggMzkuMzgxMSAxMTAuNzExIDM3LjU2MjhMMTExLjk3MSAzNi43ODQyTDExMC45ODkgMzUuNjc3NEMxMDUuOTMyIDI5Ljk4MzIgOTkuODk3MSAyNS41ODA5IDkzLjA1NDcgMjIuNTkzN0w5MS42OTAyIDIyTDkxLjM0MzcgMjMuNDQyM0M5MC41Mjc3IDI2LjgwMzYgODguODIyMiAyOS44MzYgODYuNDgwNyAzMi4yNjk1QzgxLjk4MDMgMjkuODc3NCA3Ny4yNzg4IDI3Ljk0NCA3Mi40MzA1IDI2LjQ3OTdDNjcuNTkzNyAyNy45NDA4IDYyLjkwMDUgMjkuODY4NiA1OC40MDIgMzIuMjU3MUM1Ni4wNzAxIDI5LjgyNjggNTQuMzY4OCAyNi44MDE4IDUzLjU1NiAyMy40NTAxTDUzLjIwNzIgMjIuMDA4M0w1MS44NDc3IDIyLjU5OTJDNDUuMDkxNCAyNS41NDMxIDM4Ljg5MDEgMzAuMDY0NyAzMy45MTYyIDM1LjY3NDJMMzIuOTMxOCAzNi43ODMzTDM0LjE5IDM3LjU2MTlDMzcuMTE0MiAzOS4zNzMzIDM5LjQ1NzYgNDEuOTIyNCA0MS4wNDQ0IDQ0Ljg4NjZDMzcuMzkxNyA0OC40NDM1IDM0LjE0OTUgNTIuMzA3IDMxLjMxMTkgNTYuMzk1OUMzMS4yMDE0IDYxLjQxNTQgMzEuNTUzNSA2Ni40OTI0IDMyLjQyOTcgNzEuNTY0NEMyOS44MjMxIDcyLjgzNzggMjYuOTM1OCA3My41MzE4IDIzLjk2MjggNzMuNTMxOEMyMy40NDA5IDczLjUzMTggMjIuOTUyNyA3My41MTI5IDIyLjQ3ODIgNzMuNDczM0wyMSA3My4zNjA2TDIxLjEzODUgNzQuODM2NUMyMS44NjI5IDgyLjMwMzMgMjQuMTgxNCA4OS40MDUzIDI4LjAzMzQgOTUuOTQ3MUwyOC43ODUzIDk3LjIyMzdMMjkuOTE0MiA5Ni4yNjU2QzMyLjUzMDUgOTQuMDQ2NSAzNS42OTE3IDkyLjU3NyAzOS4wNTMgOTEuOTg0N0M0MS4yNjg5IDk2LjUxNTUgNDMuODk1MyAxMDAuNzcyIDQ2Ljg3NDcgMTA0LjcyNUM1MS42Mjg3IDEwNi4zODcgNTYuNTgxOSAxMDcuNjI5IDYxLjY5NzEgMTA4LjM2N0M2Mi4xODc3IDExMS43NSA2MS43OTcgMTE1LjI0OSA2MC40NjI0IDExOC40ODRMNTkuODk5NSAxMTkuODU1TDYxLjM0NjkgMTIwLjE3NEM2NS4wNTI5IDEyMC45ODkgNjguNzkxNyAxMjEuNDA0IDcyLjQ1MjYgMTIxLjQwNEw4My41NTUxIDEyMC4xNzRMODUuMDAzOSAxMTkuODU1TDg0LjQzOTcgMTE4LjQ4MkM4My4xMDg3IDExNS4yNDYgODIuNzE4IDExMS43NDMgODMuMjA4NiAxMDguMzZDODguMzAzNiAxMDcuNjIxIDkzLjIzODQgMTA2LjM4MiA5Ny45NzQ4IDEwNC43MjVDMTAwLjk1NyAxMDAuNzY5IDEwMy41ODYgOTYuNTA5NSAxMDUuODA1IDkxLjk3MjhDMTA5LjE3NyA5Mi41NjE0IDExMi4zNTYgOTQuMDMxNyAxMTQuOTg5IDk2LjI1NzNMMTE2LjExOCA5Ny4yMTQxTDExNi44NjYgOTUuOTQwN0MxMjAuNzI1IDg5LjM5MDUgMTIzLjA0MyA4Mi4yODkxIDEyMy43NTYgNzQuODM0MkwxMjMuODk1IDczLjM2MUwxMjIuNDQyIDczLjQ3MjlaTTg4LjMxOTcgOTEuNTE4MUM4My4wNjczIDkyLjk0NjYgNzcuNzMzIDkzLjY2NzcgNzIuNDMwNSA5My42Njc3QzY3LjExMzcgOTMuNjY3NyA2MS43ODU5IDkyLjk0NyA1Ni41MjkgOTEuNTE4MUM1My42NDQ4IDg3LjAzNjYgNTEuMzY0NSA4Mi4yMzU3IDQ5LjcyMzQgNzcuMTgxMkM0OC4wODkyIDcyLjE1MDIgNDcuMTMyOSA2Ni44Nzk1IDQ2Ljg1NTQgNjEuNDUyMkM1MC4yNTA0IDU3LjI1NDcgNTQuMTExIDUzLjU3NzYgNTguMzc2NyA1MC40ODIzQzYyLjcxMTQgNDcuMzI5NCA2Ny40MjcxIDQ0Ljc2NzkgNzIuNDMwNSA0Mi44NDFDNzcuNDI1NiA0NC43NjgzIDgyLjEzMjYgNDcuMzI2MiA4Ni40NTcyIDUwLjQ2NTdDOTAuNzM5NCA1My41Nzc2IDk0LjYxNzEgNTcuMjgzMiA5OC4wMjg3IDYxLjUwN0M5Ny43Mzc4IDY2LjkwMzQgOTYuNzcgNzIuMTQzOCA5NS4xMzMgNzcuMTY2NUM5My40OTYxIDgyLjIyIDkxLjIwODQgODcuMDM2MSA4OC4zMTk3IDkxLjUxODFaTTc2Ljc2ODQgNjYuMTk3NEM3Ni43Njg0IDY5LjkwODEgNzkuNzc1NCA3Mi45MDk2IDgzLjQ4MSA3Mi45MDk2Qzg3LjE4NTcgNzIuOTA5NiA5MC4xODk1IDY5LjkwODYgOTAuMTg5NSA2Ni4xOTc0QzkwLjE4OTUgNjIuNTAxIDg3LjE4NTcgNTkuNDg4MSA4My40ODEgNTkuNDg4MUM3OS43NzU0IDU5LjQ4ODEgNzYuNzY4NCA2Mi41MDEgNzYuNzY4NCA2Ni4xOTc0Wk02OC4wOTU0IDY2LjE5NzRDNjguMDk1NCA2OS45MDgxIDY1LjA4ODggNzIuOTA5NiA2MS4zODMyIDcyLjkwOTZDNTcuNjc0OSA3Mi45MDk2IDU0LjY3NjYgNjkuOTA4NiA1NC42NzY2IDY2LjE5NzRDNTQuNjc2NiA2Mi41MDI0IDU3LjY3NTMgNTkuNDg5NCA2MS4zODMyIDU5LjQ4OTRDNjUuMDg4OCA1OS40ODk0IDY4LjA5NTQgNjIuNTAyNCA2OC4wOTU0IDY2LjE5NzRaIiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4M18yOTYzIiB4MT0iNS41IiB5MT0iMTEiIHgyPSIxNDEiIHkyPSIxMjQuNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNTNCMkYwIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzQxOUVEQSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "version" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resources", + "cpu" + ], + [ + "spec", + "resources", + "memory" + ] + ], + "module": true, + "name": "etcd", + "plural": "Etcd", + "singular": "Etcd" + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-etcd-application-default-etcd", + "namespace": "cozy-system" + }, + "labels": { + "internal.cozystack.io/tenantmodule": "true", + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "" + }, + "secrets": { + "exclude": [], + "include": [] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "etcd" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "foundationdb-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:26Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "foundationdb-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "foundationdb", + "resourceVersion": "36000", + "uid": "e911539a-5920-478c-a823-76ec35d1fbbf" + }, + "spec": { + "application": { + "kind": "FoundationDB", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"cluster\":{\"description\":\"Cluster configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"faultDomain\",\"processCounts\",\"redundancyMode\",\"storageEngine\",\"version\"],\"properties\":{\"faultDomain\":{\"description\":\"Fault domain configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"key\",\"valueFrom\"],\"properties\":{\"key\":{\"description\":\"Fault domain key.\",\"type\":\"string\",\"default\":\"kubernetes.io/hostname\"},\"valueFrom\":{\"description\":\"Fault domain value source.\",\"type\":\"string\",\"default\":\"spec.nodeName\"}}},\"processCounts\":{\"description\":\"Process counts for different roles.\",\"type\":\"object\",\"default\":{},\"required\":[\"cluster_controller\",\"stateless\",\"storage\"],\"properties\":{\"cluster_controller\":{\"description\":\"Number of cluster controller processes.\",\"type\":\"integer\",\"default\":1},\"stateless\":{\"description\":\"Number of stateless processes (-1 for automatic).\",\"type\":\"integer\",\"default\":-1},\"storage\":{\"description\":\"Number of storage processes (determines cluster size).\",\"type\":\"integer\",\"default\":3}}},\"redundancyMode\":{\"description\":\"Database redundancy mode (single, double, triple, three_datacenter, three_datacenter_fallback).\",\"type\":\"string\",\"default\":\"double\"},\"storageEngine\":{\"description\":\"Storage engine (ssd-2, ssd-redwood-v1, ssd-rocksdb-v1, memory).\",\"type\":\"string\",\"default\":\"ssd-2\"},\"version\":{\"description\":\"Version of FoundationDB to use.\",\"type\":\"string\",\"default\":\"7.3.63\"}}},\"storage\":{\"description\":\"Storage configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"size\",\"storageClass\"],\"properties\":{\"size\":{\"description\":\"Size of persistent volumes for each instance.\",\"default\":\"16Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"Storage class (if not set, uses cluster default).\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}}}},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each FoundationDB instance. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each instance.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each instance.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"c1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"backup\":{\"description\":\"DEPRECATED Backup configuration (use the Cozystack backups framework: BackupClass + FoundationDB strategy).\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"retentionPolicy\",\"s3\"],\"properties\":{\"enabled\":{\"description\":\"DEPRECATED Enable in-chart backups (superseded by BackupClass + FoundationDB strategy).\",\"type\":\"boolean\",\"default\":false},\"retentionPolicy\":{\"description\":\"DEPRECATED Retention policy for backups.\",\"type\":\"string\",\"default\":\"7d\"},\"s3\":{\"description\":\"DEPRECATED S3 configuration for backups.\",\"type\":\"object\",\"default\":{},\"required\":[\"bucket\",\"credentials\",\"endpoint\",\"region\"],\"properties\":{\"bucket\":{\"description\":\"DEPRECATED S3 bucket name.\",\"type\":\"string\",\"default\":\"\"},\"credentials\":{\"description\":\"DEPRECATED S3 credentials.\",\"type\":\"object\",\"default\":{},\"required\":[\"accessKeyId\",\"secretAccessKey\"],\"properties\":{\"accessKeyId\":{\"description\":\"DEPRECATED S3 access key ID.\",\"type\":\"string\",\"default\":\"\"},\"secretAccessKey\":{\"description\":\"DEPRECATED S3 secret access key.\",\"type\":\"string\",\"default\":\"\"}}},\"endpoint\":{\"description\":\"DEPRECATED S3 endpoint URL.\",\"type\":\"string\",\"default\":\"\"},\"region\":{\"description\":\"DEPRECATED S3 region.\",\"type\":\"string\",\"default\":\"us-east-1\"}}}}},\"monitoring\":{\"description\":\"Monitoring configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"description\":\"Enable WorkloadMonitor integration.\",\"type\":\"boolean\",\"default\":true}}},\"customParameters\":{\"description\":\"Custom parameters to pass to FoundationDB.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"imageType\":{\"description\":\"Container image deployment type.\",\"type\":\"string\",\"default\":\"split\",\"enum\":[\"unified\",\"split\"]},\"securityContext\":{\"description\":\"Security context for containers.\",\"type\":\"object\",\"default\":{},\"required\":[\"runAsGroup\",\"runAsUser\"],\"properties\":{\"runAsGroup\":{\"description\":\"Group ID to run the container.\",\"type\":\"integer\",\"default\":4059},\"runAsUser\":{\"description\":\"User ID to run the container.\",\"type\":\"integer\",\"default\":4059}}},\"automaticReplacements\":{\"description\":\"Enable automatic pod replacements.\",\"type\":\"boolean\",\"default\":true}}}", + "plural": "foundationdbs", + "singular": "foundationdb" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed FoundationDB service", + "icon": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjE0NCIKICAgaGVpZ2h0PSIxNDQiCiAgIHZpZXdCb3g9IjAgMCAxNDQgMTQ0IgogICBmaWxsPSJub25lIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc0IgogICBzb2RpcG9kaTpkb2NuYW1lPSJmb3VuZGF0aW9uZGIuc3ZnIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjQuMiAodW5rbm93bikiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXc0IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzAwMDAwMCIKICAgICBib3JkZXJvcGFjaXR5PSIwLjI1IgogICAgIGlua3NjYXBlOnNob3dwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0iMCIKICAgICBpbmtzY2FwZTpkZXNrY29sb3I9IiNkMWQxZDEiCiAgICAgaW5rc2NhcGU6em9vbT0iNi4wOTAyNzc4IgogICAgIGlua3NjYXBlOmN4PSI3MiIKICAgICBpbmtzY2FwZTpjeT0iNzIuNDkyNTg4IgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMTI4IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnNCIgLz4KICA8cmVjdAogICAgIHdpZHRoPSIxNDQiCiAgICAgaGVpZ2h0PSIxNDQiCiAgICAgcng9IjI0IgogICAgIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl9mZGIpIgogICAgIGlkPSJyZWN0MSIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmIiAvPgogIDwhLS0gRm91bmRhdGlvbkRCIEljb24gKHNjYWxlZCBhbmQgcG9zaXRpb25lZCkgLS0+CiAgPCEtLSBGb3VuZGF0aW9uREIgVGV4dCAtLT4KICA8ZGVmcwogICAgIGlkPSJkZWZzNCI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJwYWludDBfbGluZWFyX2ZkYiIKICAgICAgIHgxPSIxNDAiCiAgICAgICB5MT0iMTMwLjUiCiAgICAgICB4Mj0iNCIKICAgICAgIHkyPSI5LjQ5OTk5IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcAogICAgICAgICBzdG9wLWNvbG9yPSIjMDQ3QkZFIgogICAgICAgICBpZD0ic3RvcDMiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3RvcC1jb2xvcj0iIzNGOUFGQiIKICAgICAgICAgaWQ9InN0b3A0IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPGcKICAgICBpZD0iZzExMzQiCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMy4xMzI3OTEsMCwwLDMuMTMyNzkxLC0xMTUuOTgzODUsNi45Mjk0MjI3KSI+CiAgICA8ZwogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4wODU0MTI1MSwwLDAsMC4wODU0MTI1MSw4Ljc2MTUxNTksOS41OTYyNTQzKSIKICAgICAgIGlkPSJnMTAiPgoJCTxwb2x5Z29uCiAgIHN0eWxlPSJmaWxsOiMzZjlhZmIiCiAgIGNsYXNzPSJzdDAiCiAgIHBvaW50cz0iNDU3LjIsMTUwLjUgNDU3LjIsOTguNiA1NjEuNCwxMjQgNTYxLjYsMTY0LjggNjY2LjYsMTUwLjkgNjY2LjMsOTguNyA4NDUuOCwxNDMgODQ2LjQsMTg5LjkgNjY3LjQsMTY1LjggNTYwLjYsMTc3LjMgNDU3LjEsMTY1LjQgMzU0LjIsMTc3LjYgMzU0LjEsMTY1LjcgIgogICBpZD0icG9seWdvbjQiIC8+CgoJCTxwYXRoCiAgIHN0eWxlPSJmaWxsOiMwYjcwZTAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgIGNsYXNzPSJzdDEiCiAgIGQ9Im0gNjY2LjYsMTgzLjIgMTc5LjYsMTguNiB2IDQ2IEggMzUzLjggbCAtMC41LC0xMi4yIGggMTAzLjUgYyAwLDAgMCwtMzQuMiAwLC01Mi4zIDM0LjgsMy40IDEwMy44LDEwLjIgMTAzLjgsMTAuMiB2IDQwLjkgaCAxMDYgeiIKICAgaWQ9InBhdGg2IiAvPgoKCQk8cGF0aAogICBzdHlsZT0iZmlsbDojOWVjY2ZkIgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICBjbGFzcz0ic3QyIgogICBkPSJtIDU2MS40LDEwOS4xIC0wLjMsLTEyLjYgYyAwLDAgNjguMSwtMjAuNCAxMDMuMywtMzAuOCAwLC0xNi45IDAsLTMzLjIgMCwtNTIuOSA2MS44LDI0LjggMTIxLjIsNDguOCAxODEuMiw3Mi45IDAsMTUgMCwyOS40IDAsNDUuNCAtNjEuNSwtMTYuOSAtMTIxLjcsLTMzLjUgLTE4MC4yLC00OS42IC0zNS42LDkuNSAtMTA0LDI3LjYgLTEwNCwyNy42IHoiCiAgIGlkPSJwYXRoOCIgLz4KCgk8L2c+CiAgICA8cG9seWdvbgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4wODU0MTI1MSwwLDAsMC4wODU0MTI1MSw4Ljc3OTU1OTcsOS42ODY5NjcxKSIKICAgICAgIHN0eWxlPSJmaWxsOiMzZjlhZmIiCiAgICAgICBjbGFzcz0ic3QwIgogICAgICAgcG9pbnRzPSI2NjYuNiwxNTAuOSA2NjYuMyw5OC43IDg0NS44LDE0MyA4NDYuNCwxODkuOSA2NjcuNCwxNjUuOCA1NjAuNiwxNzcuMyA0NTcuMSwxNjUuNCAzNTQuMiwxNzcuNiAzNTQuMSwxNjUuNyA0NTcuMiwxNTAuNSA0NTcuMiw5OC42IDU2MS40LDEyNCA1NjEuNiwxNjQuOCAiCiAgICAgICBpZD0icG9seWdvbjg1NiIgLz4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDojMGI3MGUwO3N0cm9rZS13aWR0aDowLjA4NTQxMjUiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgY2xhc3M9InN0MSIKICAgICAgIGQ9Im0gNjUuNzE1NTM5LDI1LjMzNDUzOSAxNS4zNDAwODcsMS41ODg2NzMgdiAzLjkyODk3NSBoIC00Mi4wNTcxMiBsIC0wLjA0MjcxLC0xLjA0MjAzMyBoIDguODQwMTk1IGMgMCwwIDAsLTIuOTIxMTA3IDAsLTQuNDY3MDc0IDIuOTcyMzU2LDAuMjkwNDAzIDguODY1ODE5LDAuODcxMjA4IDguODY1ODE5LDAuODcxMjA4IHYgMy40OTMzNzEgaCA5LjA1MzcyNiB6IgogICAgICAgaWQ9InBhdGg4NTgiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzllY2NmZDtzdHJva2Utd2lkdGg6MC4wODU0MTI1IgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgIGNsYXNzPSJzdDIiCiAgICAgICBkPSJtIDU2LjczMDE0MywxOS4wMDU0NzIgLTAuMDI1NjIsLTEuMDc2MTk4IGMgMCwwIDUuODE2NTkyLC0xLjc0MjQxNSA4LjgyMzExMiwtMi42MzA3MDUgMCwtMS40NDM0NzEgMCwtMi44MzU2OTUgMCwtNC41MTgzMjIgNS4yNzg0OTMsMi4xMTgyMyAxMC4zNTE5OTcsNC4xNjgxMzEgMTUuNDc2NzQ3LDYuMjI2NTcyIDAsMS4yODExODggMCwyLjUxMTEyOCAwLDMuODc3NzI4IC01LjI1Mjg2OSwtMS40NDM0NzEgLTEwLjM5NDcwMiwtMi44NjEzMTkgLTE1LjM5MTMzNCwtNC4yMzY0NiAtMy4wNDA2ODYsMC44MTE0MTkgLTguODgyOTAxLDIuMzU3Mzg1IC04Ljg4MjkwMSwyLjM1NzM4NSB6IgogICAgICAgaWQ9InBhdGg4NjAiIC8+CiAgPC9nPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "cluster" + ], + [ + "spec", + "cluster", + "processCounts" + ], + [ + "spec", + "cluster", + "processCounts", + "stateless" + ], + [ + "spec", + "cluster", + "processCounts", + "storage" + ], + [ + "spec", + "cluster", + "processCounts", + "cluster_controller" + ], + [ + "spec", + "cluster", + "version" + ], + [ + "spec", + "cluster", + "redundancyMode" + ], + [ + "spec", + "cluster", + "storageEngine" + ], + [ + "spec", + "cluster", + "faultDomain" + ], + [ + "spec", + "cluster", + "faultDomain", + "key" + ], + [ + "spec", + "cluster", + "faultDomain", + "valueFrom" + ], + [ + "spec", + "storage" + ], + [ + "spec", + "storage", + "size" + ], + [ + "spec", + "storage", + "storageClass" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "backup" + ], + [ + "spec", + "backup", + "enabled" + ], + [ + "spec", + "backup", + "s3" + ], + [ + "spec", + "backup", + "s3", + "bucket" + ], + [ + "spec", + "backup", + "s3", + "endpoint" + ], + [ + "spec", + "backup", + "s3", + "region" + ], + [ + "spec", + "backup", + "s3", + "credentials" + ], + [ + "spec", + "backup", + "s3", + "credentials", + "accessKeyId" + ], + [ + "spec", + "backup", + "s3", + "credentials", + "secretAccessKey" + ], + [ + "spec", + "backup", + "retentionPolicy" + ], + [ + "spec", + "monitoring" + ], + [ + "spec", + "monitoring", + "enabled" + ], + [ + "spec", + "customParameters" + ], + [ + "spec", + "imageType" + ], + [ + "spec", + "securityContext" + ], + [ + "spec", + "securityContext", + "runAsUser" + ], + [ + "spec", + "securityContext", + "runAsGroup" + ], + [ + "spec", + "automaticReplacements" + ] + ], + "plural": "FoundationDB", + "singular": "FoundationDB", + "tags": [ + "database" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-foundationdb-application-default-foundationdb", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "foundationdb-" + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "harbor-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:26Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "harbor-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "harbor", + "resourceVersion": "36018", + "uid": "ab22dd90-a686-47d7-809c-2146e745512c" + }, + "spec": { + "application": { + "kind": "Harbor", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"host\":{\"description\":\"Hostname for external access to Harbor (defaults to 'harbor' subdomain for the tenant host).\",\"type\":\"string\",\"default\":\"\"},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"core\":{\"description\":\"Core API server configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}},\"registry\":{\"description\":\"Container image registry configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}},\"jobservice\":{\"description\":\"Background job service configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}},\"trivy\":{\"description\":\"Trivy vulnerability scanner configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"size\"],\"properties\":{\"enabled\":{\"description\":\"Enable or disable the vulnerability scanner.\",\"type\":\"boolean\",\"default\":true},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume size for vulnerability database cache.\",\"default\":\"5Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"database\":{\"description\":\"PostgreSQL database configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"replicas\",\"size\"],\"properties\":{\"replicas\":{\"description\":\"Number of database instances.\",\"type\":\"integer\",\"default\":2},\"size\":{\"description\":\"Persistent Volume size for database storage.\",\"default\":\"5Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"redis\":{\"description\":\"Redis cache configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"replicas\",\"size\"],\"properties\":{\"replicas\":{\"description\":\"Number of Redis replicas.\",\"type\":\"integer\",\"default\":2},\"size\":{\"description\":\"Persistent Volume size for cache storage.\",\"default\":\"1Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}}", + "plural": "harbors", + "singular": "harbor" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed Harbor container registry", + "icon": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHJvbGU9ImltZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjEuMDUgLTEuOTUgMzU5LjQxIDM2MS42NiI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQiIHgxPSIyNjQuNzkiIHgyPSIyNjcuMjciIHkxPSI5NTIuMzkiIHkyPSI5NTIuMzkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMzAuNDMgMCAwIC0zMC40MyAtNzk1NS4yMiAyOTI4NS43NSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM2MGI5MzIiLz48c3RvcCBvZmZzZXQ9Ii4yOCIgc3RvcC1jb2xvcj0iIzYwYjkzMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzM2N2MzNCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjI2My43NyIgeDI9IjI2Ni4yNiIgeTE9Ijk1NS42NSIgeTI9Ijk1NS42NSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgyNy4yMSAwIDAgLTI3LjIxIC03MDczLjg1IDI2MTY5LjQxKSIgeGxpbms6aHJlZj0iI2xpbmVhci1ncmFkaWVudCIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50LTMiIHgxPSIyNjMuMjgiIHgyPSIyNjUuNzYiIHkxPSI5NTMuNzQiIHkyPSI5NTMuNzQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMjUuNzUgMCAwIC0yNS43NSAtNjY3MS4xMyAyNDgxMi4yMykiIHhsaW5rOmhyZWY9IiNsaW5lYXItZ3JhZGllbnQiLz48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC00IiB4MT0iMjYzLjc3IiB4Mj0iMjY2LjI1IiB5MT0iOTUzLjIiIHkyPSI5NTMuMiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgyNy4xIDAgMCAtMjcuMSAtNzA0MC45IDI2MTAyLjQ5KSIgeGxpbms6aHJlZj0iI2xpbmVhci1ncmFkaWVudCIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50LTUiIHgxPSIyNjIuNzMiIHgyPSIyNjUuMjEiIHkxPSI5NTQuMzQiIHkyPSI5NTQuMzQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMjQuNCAwIDAgLTI0LjQgLTYzMDEuMzYgMjM1MjEuOTcpIiB4bGluazpocmVmPSIjbGluZWFyLWdyYWRpZW50Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtNiIgeDE9IjI3Mi4xNCIgeDI9IjI3NC42MiIgeTE9Ijk1NS4xNSIgeTI9Ijk1NS4xNSIgZ3JhZGllbnRUcmFuc2Zvcm09InNjYWxlKDY2LjA5IC02Ni4wOSkgcm90YXRlKDM2LjUyIDE1ODguMTUzIDY4LjE0OCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0NTk2ZDgiLz48c3RvcCBvZmZzZXQ9Ii4yIiBzdG9wLWNvbG9yPSIjNDU5NmQ4Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZmIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC03IiB4MT0iMjcwLjY1IiB4Mj0iMjczLjEzIiB5MT0iOTUyLjM4IiB5Mj0iOTUyLjM4IiBncmFkaWVudFRyYW5zZm9ybT0ic2NhbGUoNzcuOCAtNzcuOCkgcm90YXRlKC0xMS41NCAtNDU4Ny4yMDkgMTgwMy4zMjMpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNDE5NGQ3Ii8+PHN0b3Agb2Zmc2V0PSIuMiIgc3RvcC1jb2xvcj0iIzQxOTRkNyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtOCIgeDE9IjI3MC45NyIgeDI9IjI3My40NSIgeTE9Ijk1My43NSIgeTI9Ijk1My43NSIgZ3JhZGllbnRUcmFuc2Zvcm09InNjYWxlKDcxLjM1IC03MS4zNSkgcm90YXRlKDEwLjIzIDU0NzcuMzcgLTEwMjQuNjAyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzQxOTRkNyIvPjxzdG9wIG9mZnNldD0iLjMzIiBzdG9wLWNvbG9yPSIjNDQ5NmQ4Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZmIi8+PC9saW5lYXJHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aCI+PHBhdGggZD0iTTE3NC40IDMwMi41MmwtNjguNjUtMzAuMjYtMy44MyA0My4yMSA3NS41IDIzLjk4LTMuMDItMzYuOTN6IiBjbGFzcz0iY2xzLTEiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPjxwYXRoIGQ9Ik0xMTkuMTkgMTM1LjM4aDM4LjU1djMyLjg5aC05LjE1di0xNGExMC4xMyAxMC4xMyAwIDEgMC0yMC4yNiAwdjE0aC05LjE1em0tNy43IDcybDU3LjIgMjUuMjEtMy45NC00OC4yNGg3LjQ5di0xNi4wOGgtNS41NXYtMzIuODloNS41NXYtOS40NWwtMzAuODYtMzAuMTl2LTIuMTJhMi45MSAyLjkxIDAgMCAwLTUuODIgMHYyLjEybC0zMC44NiAzMC4xOXY5LjQ1aDUuNTZ2MzIuODloLTUuNTZ2MTYuMTJoOC44MnoiIGNsYXNzPSJjbHMtMSIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJjbGlwLXBhdGgtMyI+PHBhdGggZD0iTTEwOC4xNCAyNDUuMjhsNjMuODggMjguMTYtLjk2LTExLjczLTYxLjk2LTI3LjMtLjk2IDEwLjg3eiIgY2xhc3M9ImNscy0xIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aC00Ij48cGF0aCBkPSJNMTA2LjQ2IDI2NC4yMWw2Ny4yMyAyOS42My0uOTYtMTEuNzItNjUuMzEtMjguNzgtLjk2IDEwLjg3eiIgY2xhc3M9ImNscy0xIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aC01Ij48cGF0aCBkPSJNMTEwLjc3IDIxNS40OGwtLjk2IDEwLjg3IDYwLjU0IDI2LjY4LS45NS0xMS43Mi01OC42My0yNS44M3oiIGNsYXNzPSJjbHMtMSIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJjbGlwLXBhdGgtNiI+PHBhdGggZD0iTTMxMy4xMyA2Ny41OWExNzUuMzEgMTc1LjMxIDAgMCAwLTI5Ljc1LTI4LjEzYy0xLjU3LTEuMTctMy4xOC0yLjMtNC43OS0zLjQyTDI1NiA1OS41bC04Mi4zNCA4NS42MyAxMTMuNDEtNTguNjggMjkuMDctMTVjLTEuMDEtMS4zMS0xLjk4LTIuNjItMy4wMS0zLjg2eiIgY2xhc3M9ImNscy0xIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aC03Ij48cGF0aCBkPSJNMzUzLjU5IDE3Ny42MWMwLTItLjE0LTQtLjIyLTUuOTNsLTMyLjIxLTIuMzEtMTQ3LjQ3LTEwLjU4TDMxOC4zNiAyMDlsMzAuNDEgMTAuNTVjLjA5LS4zNi4xOS0uNzEuMjgtMS4wOGExNzMuNjUgMTczLjY1IDAgMCAwIDQuNTctMzkuNDd2LTEuMzd6IiBjbGFzcz0iY2xzLTEiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTgiPjxwYXRoIGQ9Ik0zNDguODQgMTM4LjYxYTE3Mi41NSAxNzIuNTUgMCAwIDAtMTMuODQtMzcuN2wtMzAuOTQgOS45NEwxNzUuOTIgMTUybDE0Mi00LjgzIDMyLjUtMS4xMWMtLjUtMi40OC0uOTktNC45OC0xLjU4LTcuNDV6IiBjbGFzcz0iY2xzLTEiLz48L2NsaXBQYXRoPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lfS5jbHMtMTN7ZmlsbDojNjk2NTY2fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJnMTIiPjxwYXRoIGlkPSJwYXRoMTQiIGZpbGw9IiNmZmYiIGQ9Ik0zMC44OSAxNzlhMTQ4Ljg3IDE0OC44NyAwIDEgMSAxNDguODcgMTQ4Ljg1QTE0OC44NyAxNDguODcgMCAwIDEgMzAuODkgMTc5Ii8+PGcgaWQ9ImczMCIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAtcGF0aCkiPjxnIGlkPSJnMzIiPjxwYXRoIGlkPSJwYXRoNDYiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50KSIgZD0iTTE3NC40IDMwMi41MmwtNjguNjUtMzAuMjUtMy44MiA0My4yIDc1LjUgMjQtMy0zNi45MyIvPjwvZz48L2c+PGcgaWQ9Imc0OCIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAtcGF0aC0yKSI+PGcgaWQ9Imc1MCI+PHBhdGggaWQ9InBhdGg2NCIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtMikiIGQ9Ik0xMTkuMTkgMTM1LjM4aDM4LjU1djMyLjg5aC05LjE1di0xNGExMC4xMyAxMC4xMyAwIDEgMC0yMC4yNiAwdjE0aC05LjE1em0tNy43IDcybDU3LjIgMjUuMjEtMy45NC00OC4yNGg3LjQ5di0xNi4wOGgtNS41NXYtMzIuODloNS41NXYtOS40NWwtMzAuODYtMzAuMTl2LTIuMTJhMi45MSAyLjkxIDAgMCAwLTUuODIgMHYyLjEybC0zMC44NiAzMC4xOXY5LjQ1aDUuNTZ2MzIuODloLTUuNTZ2MTYuMTJoOC44MmwtMiAyMyIvPjwvZz48L2c+PGcgaWQ9Imc2NiIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAtcGF0aC0zKSI+PGcgaWQ9Imc2OCI+PHBhdGggaWQ9InBhdGg4MiIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtMykiIGQ9Ik0xMDguMTMgMjQ1LjI4TDE3MiAyNzMuNDRsLTEtMTEuNzItNjItMjcuMzEtMSAxMC44NyIvPjwvZz48L2c+PGcgaWQ9Imc4NCIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAtcGF0aC00KSI+PGcgaWQ9Imc4NiI+PHBhdGggaWQ9InBhdGgxMDAiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50LTQpIiBkPSJNMTA2LjQ2IDI2NC4yMWw2Ny4yMyAyOS42My0xLTExLjcyLTY1LjMxLTI4Ljc4LTEgMTAuODciLz48L2c+PC9nPjxnIGlkPSJnMTAyIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoLTUpIj48ZyBpZD0iZzEwNCI+PHBhdGggaWQ9InBhdGgxMTgiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50LTUpIiBkPSJNMTEwLjc3IDIxNS40OGwtMSAxMC44OEwxNzAuMzUgMjUzbC0xLTExLjcyLTU4LjYyLTI1LjgzIi8+PC9nPjwvZz48cGF0aCBpZD0icGF0aDEyMCIgZD0iTTMwNC4wNyAxMTAuODVsMzAuOTMtOS45NGMtLjExLS4yMi0uMjEtLjQ1LS4zMi0uNjZhMTc0LjQxIDE3NC40MSAwIDAgMC0xOC41NS0yOC44M2wtMjkuMDcgMTVhMTQyLjcxIDE0Mi43MSAwIDAgMSAxNi43MyAyMy44N2MuMS4xNy4xOC4zNS4yNy41MyIgY2xhc3M9ImNscy0xMyIvPjxwYXRoIGlkPSJwYXRoMTIyIiBkPSJNMzIxLjE1IDE2OS4zN2wzMi4yMSAyLjMxYTE3Mi44NiAxNzIuODYgMCAwIDAtMy0yNS41OWwtMzIuNSAxLjExYTE0MSAxNDEgMCAwIDEgMy4yNSAyMi4xNyIgY2xhc3M9ImNscy0xMyIvPjxwYXRoIGlkPSJwYXRoMTI0IiBkPSJNMTgyIDMyMC44MWMtNzguMiAwLTE0MS44My02My42Mi0xNDEuODMtMTQxLjgyUzEwMy44MiAzNy4xNiAxODIgMzcuMTZhMTQwLjkzIDE0MC45MyAwIDAgMSA3Ni4zIDIyLjM0TDI4MC44NSAzNkExNzIuODYgMTcyLjg2IDAgMCAwIDE4MiA1LjExQzg2LjE1IDUuMTEgOC4xNSA4My4xMSA4LjE1IDE3OXM3OCAxNzMuODUgMTczLjg1IDE3My44NWM4MS45IDAgMTUwLjY5LTU3IDE2OS0xMzMuMzJMMzIwLjYyIDIwOWMtMTMuOCA2My44NC03MC42OSAxMTEuODMtMTM4LjYgMTExLjgzIiBjbGFzcz0iY2xzLTEzIi8+PGcgaWQ9ImcxMjYiIGNsaXAtcGF0aD0idXJsKCNjbGlwLXBhdGgtNikiPjxnIGlkPSJnMTI4Ij48cGF0aCBpZD0icGF0aDE0MiIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNikiIGQ9Ik0zMTMuMTMgNjcuNTlhMTc1LjMxIDE3NS4zMSAwIDAgMC0yOS43NS0yOC4xM2MtMS41Ny0xLjE3LTMuMTgtMi4zLTQuNzktMy40MkwyNTYgNTkuNWwtODIuMzQgODUuNjMgMTEzLjQxLTU4LjY4IDI5LjA3LTE1Yy0xLTEuMjctMi0yLjU4LTMtMy44MiIvPjwvZz48L2c+PGcgaWQ9ImcxNDQiIGNsaXAtcGF0aD0idXJsKCNjbGlwLXBhdGgtNykiPjxnIGlkPSJnMTQ2Ij48cGF0aCBpZD0icGF0aDE2MCIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNykiIGQ9Ik0zNTMuNTkgMTc3LjYxYzAtMi0uMTQtNC0uMjItNS45M2wtMzIuMjEtMi4zMS0xNDcuNDctMTAuNThMMzE4LjM2IDIwOWwzMC40MSAxMC41NWMuMDktLjM2LjE5LS43MS4yOC0xLjA4YTE3My42NSAxNzMuNjUgMCAwIDAgNC41Ny0zOS40N3YtMS4zNyIvPjwvZz48L2c+PGcgaWQ9ImcxNjIiIGNsaXAtcGF0aD0idXJsKCNjbGlwLXBhdGgtOCkiPjxnIGlkPSJnMTY0Ij48cGF0aCBpZD0icGF0aDE3OCIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtOCkiIGQ9Ik0zNDguODQgMTM4LjYxYTE3Mi41NSAxNzIuNTUgMCAwIDAtMTMuODQtMzcuN2wtMzAuOTQgOS45NEwxNzUuOTIgMTUybDE0Mi00LjgzIDMyLjUtMS4xMWMtLjQ4LTIuNTEtMS01LTEuNTYtNy40OCIvPjwvZz48L2c+PC9nPjwvc3ZnPg==", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "host" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "core" + ], + [ + "spec", + "core", + "resources" + ], + [ + "spec", + "core", + "resourcesPreset" + ], + [ + "spec", + "registry" + ], + [ + "spec", + "registry", + "resources" + ], + [ + "spec", + "registry", + "resourcesPreset" + ], + [ + "spec", + "jobservice" + ], + [ + "spec", + "jobservice", + "resources" + ], + [ + "spec", + "jobservice", + "resourcesPreset" + ], + [ + "spec", + "trivy" + ], + [ + "spec", + "trivy", + "enabled" + ], + [ + "spec", + "trivy", + "size" + ], + [ + "spec", + "trivy", + "resources" + ], + [ + "spec", + "trivy", + "resourcesPreset" + ], + [ + "spec", + "database" + ], + [ + "spec", + "database", + "size" + ], + [ + "spec", + "database", + "replicas" + ], + [ + "spec", + "redis" + ], + [ + "spec", + "redis", + "size" + ], + [ + "spec", + "redis", + "replicas" + ] + ], + "name": "harbor", + "plural": "Harbor", + "singular": "Harbor", + "tags": [ + "registry", + "container" + ] + }, + "ingresses": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "{{ .name }}-ingress" + ] + } + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-harbor-application-default-harbor", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "harbor-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "{{ .name }}-credentials" + ] + }, + { + "matchLabels": { + "apps.cozystack.io/user-secret": "true" + } + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "{{ .name }}" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "http-cache-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:28Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "http-cache-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "http-cache", + "resourceVersion": "36314", + "uid": "5a688174-bea5-4288-a321-a8de801e12d9" + }, + "spec": { + "application": { + "kind": "HTTPCache", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"endpoints\":{\"description\":\"Endpoints configuration, as a list of \u003cip:port\u003e.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"haproxy\":{\"description\":\"HAProxy configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"replicas\",\"resourcesPreset\"],\"properties\":{\"replicas\":{\"description\":\"Number of HAProxy replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}},\"nginx\":{\"description\":\"Nginx configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"replicas\",\"resourcesPreset\"],\"properties\":{\"replicas\":{\"description\":\"Number of Nginx replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}}}}", + "plural": "httpcaches", + "singular": "httpcache" + }, + "dashboard": { + "category": "NaaS", + "description": "Layer7 load balancer and caching service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODFfMjgyNSkiLz4KPHBhdGggZD0iTTI2LjAwMjYgMzcuODU4OEMyNi4wMDI2IDYwLjkxOSAyNi4wMDI2IDgzLjk4MTQgMjYuMDAyNiAxMDcuMDQ2QzI1Ljk3MyAxMDguMzIzIDI2LjE5OTYgMTA5LjU5MyAyNi42NjkyIDExMC43ODNDMjcuMTM4NyAxMTEuOTcyIDI3Ljg0MTggMTEzLjA1NiAyOC43Mzc0IDExMy45NzJDMzAuNDUzOSAxMTUuNjU5IDMyLjcgMTE2LjcwOSAzNS4xMDA5IDExNi45NDhDMzcuNTAxOSAxMTcuMTg3IDM5LjkxMjYgMTE2LjYgNDEuOTMxIDExNS4yODRDNDMuMjgyIDExNC4zNzEgNDQuMzg4MSAxMTMuMTQzIDQ1LjE1MjcgMTExLjcwN0M0NS45MTc0IDExMC4yNzEgNDYuMzE3NSAxMDguNjcxIDQ2LjMxODEgMTA3LjA0NkM0Ni4zMTgxIDkwLjM1MjggNDYuMjg2MSA3My42NTk3IDQ2LjMxODEgNTYuOTY2NkM2MS42MTY4IDc1LjE4ODkgNzYuOTQ3NCA5My4zODU2IDkyLjMxIDExMS41NTdDOTQuNDQ0NCAxMTMuNzA4IDk3LjA4NzUgMTE1LjI5MSA5OS45OTcgMTE2LjE2MkMxMDIuOTA2IDExNy4wMzIgMTA1Ljk4OSAxMTcuMTYyIDEwOC45NjIgMTE2LjUzOUMxMTEuMDYxIDExNi4xMjggMTEyLjk3MyAxMTUuMDU3IDExNC40MTUgMTEzLjQ4NUMxMTUuODU3IDExMS45MTMgMTE2Ljc1NCAxMDkuOTIxIDExNi45NzQgMTA3LjgwNEMxMTcuMDA5IDg0LjI2ODEgMTE3LjAwOSA2MC43MzQzIDExNi45NzQgMzcuMjAyNUMxMTYuNzU0IDM0LjY5MDcgMTE1LjU5NSAzMi4zNTIyIDExMy43MjYgMzAuNjQ4NkMxMTEuODU4IDI4Ljk0NSAxMDkuNDE1IDI4IDEwNi44ODEgMjhDMTA0LjM0NiAyOCAxMDEuOTAzIDI4Ljk0NSAxMDAuMDM1IDMwLjY0ODZDOTguMTY2MyAzMi4zNTIyIDk3LjAwNzQgMzQuNjkwNyA5Ni43ODY5IDM3LjIwMjVDOTYuNzg2OSA1NC4xNjMyIDk2LjY4NDQgNzEuMTA0OCA5Ni43ODY5IDg4LjA1OTFDODEuNzYxNiA3MC40MzU4IDY2LjkyMTkgNTIuNjU5NiA1MS45NTQzIDM0Ljk3MjVDNDkuOTgxIDMyLjQ1NTQgNDcuMzY4NSAzMC41MDczIDQ0LjM4NjMgMjkuMzI5MUM0MS40MDQxIDI4LjE1MDkgMzguMTU5OSAyNy43ODUyIDM0Ljk4ODMgMjguMjY5OEMzMi41ODU3IDI4LjUzNTkgMzAuMzU4MyAyOS42NDkzIDI4LjcwOTkgMzEuNDA4NEMyNy4wNjE1IDMzLjE2NzUgMjYuMTAxIDM1LjQ1NTkgMjYuMDAyNiAzNy44NTg4WiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl82ODFfMjgyNSIgeDE9IjEwIiB5MT0iMTUuNSIgeDI9IjE0NCIgeTI9IjEzMS41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMEM1NEEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDE5NjM5Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "endpoints" + ], + [ + "spec", + "haproxy" + ], + [ + "spec", + "haproxy", + "replicas" + ], + [ + "spec", + "haproxy", + "resources" + ], + [ + "spec", + "haproxy", + "resourcesPreset" + ], + [ + "spec", + "nginx" + ], + [ + "spec", + "nginx", + "replicas" + ], + [ + "spec", + "nginx", + "resources" + ], + [ + "spec", + "nginx", + "resourcesPreset" + ] + ], + "plural": "HTTP Cache", + "singular": "HTTP Cache", + "tags": [ + "cache", + "network" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-http-cache-application-default-http-cache", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "http-cache-" + }, + "secrets": { + "exclude": [], + "include": [] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "info-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:27Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "info-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "info", + "resourceVersion": "36064", + "uid": "a7999f21-2a1d-4ab1-aa03-351b7bb0923b" + }, + "spec": { + "application": { + "kind": "Info", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{}}", + "plural": "infos", + "singular": "info" + }, + "dashboard": { + "category": "Administration", + "description": "Info", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF8xNDRfMykiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE0NF8zKSI+CjxwYXRoIGQ9Ik03Ny42NDA3IDk3LjA4NDRMODIuODMzIDk3LjM2MDRWMTA0LjYzN0g2MS4xNzI4Vjk3LjcxOTdMNjQuMTc3MSA5Ny40NDk1QzY1LjgxMDEgOTcuMjY4NCA2Ni44MTA2IDk2LjcxOTMgNjYuODEwNiA5NC41MzQzVjY5LjIzMTRDNjYuODEwNiA2Ny4yMjE3IDY2LjI3MDEgNjYuNTg2NCA2NC41MzY1IDY2LjU4NjRMNjEuMzU2OCA2Ni40MDgxVjU4Ljg1ODRINzcuNjQ2NUw3Ny42NDA3IDk3LjA4NDRaTTcxLjI3MjYgMzkuMzYzQzc1LjI4MDQgMzkuMzYzIDc4LjE4NyA0Mi4zNzMxIDc4LjE4NyA0Ni4xODgzQzc4LjE4NyA1MC4wMTQ5IDc1LjI3MTggNTIuODM4MSA3MS4xNzc4IDUyLjgzODFDNjYuOTk3NSA1Mi44MzgxIDY0LjI2NjMgNTAuMDE0OSA2NC4yNjYzIDQ2LjE4ODNDNjQuMjY2MyA0Mi4zNzMxIDY2Ljk5NzUgMzkuMzYzIDcxLjI3MjYgMzkuMzYzWk03MiAxMThDNDYuNjM2OCAxMTggMjYgOTcuMzYzMiAyNiA3MkMyNiA0Ni42MzY4IDQ2LjYzNjggMjYgNzIgMjZDOTcuMzU3NSAyNiAxMTggNDYuNjM2OCAxMTggNzJDMTE4IDk3LjM2MzIgOTcuMzU3NSAxMTggNzIgMTE4Wk03MiAzNC42MjVDNTEuMzkyIDM0LjYyNSAzNC42MjUgNTEuMzkyIDM0LjYyNSA3MkMzNC42MjUgOTIuNjA4IDUxLjM5MiAxMDkuMzc1IDcyIDEwOS4zNzVDOTIuNjA4IDEwOS4zNzUgMTA5LjM3NSA5Mi42MDggMTA5LjM3NSA3MkMxMDkuMzc1IDUxLjM5MiA5Mi42MDggMzQuNjI1IDcyIDM0LjYyNVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQwX3JhZGlhbF8xNDRfMyIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjMyMjk4ZS0wNSAtNy41MDAwMSkgcm90YXRlKDQ0LjcxNzgpIHNjYWxlKDIxNS4zMTcgMzEyLjQ1NSkiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMDBCNUU3Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwMzk4NCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzE0NF8zIj4KPHJlY3Qgd2lkdGg9IjkyIiBoZWlnaHQ9IjkyIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjYgMjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ] + ], + "module": true, + "name": "info", + "plural": "Info", + "singular": "Info" + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-info-application-default-info", + "namespace": "cozy-system" + }, + "labels": { + "internal.cozystack.io/tenantmodule": "true", + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "kubeconfig-{{ .namespace }}", + "{{ .namespace }}" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:24Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "ingress-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "ingress", + "resourceVersion": "35824", + "uid": "76108a83-0ed6-4660-a9d7-9713ad94f443" + }, + "spec": { + "application": { + "kind": "Ingress", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of ingress-nginx replicas.\",\"type\":\"integer\",\"default\":2},\"whitelist\":{\"description\":\"List of client networks.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"cloudflareProxy\":{\"description\":\"Restoring original visitor IPs when Cloudflare proxied is enabled.\",\"type\":\"boolean\",\"default\":false},\"proxyProtocol\":{\"description\":\"Enable PROXY-protocol (use-proxy-protocol) on a tenant Ingress application. The upstream L4 load balancer in front of ingress-nginx MUST already inject PROXY-protocol v1 headers, otherwise all traffic to this ingress breaks — including in-cluster and direct-Service (hairpin) access to its public hostnames. Mutually exclusive with cloudflareProxy. For the host (external-facing) ingress use the platform-level publishing.proxyProtocol switch instead; the per-app value is rejected there because it would bypass the ouroboros hairpin handling and the disable-hazard guard.\",\"type\":\"boolean\",\"default\":false},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each ingress-nginx replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.micro\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}}", + "plural": "ingresses", + "singular": "ingress" + }, + "dashboard": { + "category": "Administration", + "description": "NGINX Ingress Controller", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODRfMzIyOSkiLz4KPHBhdGggZD0iTTg2LjkyNzQgMzcuMTA3NEgxN1YxMDcuMDM1SDg2LjkyNzRWMzcuMTA3NFoiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iNiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEyNy42NDMgMjlIMTA3LjQ1NVY0OS4xODgzSDEyNy42NDNWMjlaIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMjcuNjQzIDYxLjcyNjZIMTA3LjQ1NVY4MS45MTQ5SDEyNy42NDNWNjEuNzI2NloiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEyNy42NDMgOTQuNDUyMUgxMDcuNDU1VjExNC42NEgxMjcuNjQzVjk0LjQ1MjFaIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik04OC41MTM3IDcyLjA3MTNIMTA2LjI3IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik04Ny41Njc0IDgwLjQyNDhMMTA3LjczIDk1Ljc4MDUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTg3LjU2NzQgNjMuNzE4MUwxMDcuNzMgNDguMzYyMyIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4NF8zMjI5IiB4MT0iMTAiIHkxPSIxNS41IiB4Mj0iMTQ0IiB5Mj0iMTMxLjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzAwREE1MyIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDk2MzkiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "whitelist" + ], + [ + "spec", + "cloudflareProxy" + ], + [ + "spec", + "proxyProtocol" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ] + ], + "module": true, + "name": "ingress", + "plural": "Ingress", + "singular": "Ingress" + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-ingress-application-default-ingress", + "namespace": "cozy-system" + }, + "labels": { + "internal.cozystack.io/tenantmodule": "true", + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "" + }, + "secrets": { + "exclude": [], + "include": [] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "{{ slice .namespace 7 }}-ingress-controller" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "kafka-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:28Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "kafka-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "kafka", + "resourceVersion": "36201", + "uid": "aaec7b6e-3710-4970-a2aa-22738cb068cc" + }, + "spec": { + "application": { + "kind": "Kafka", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"tls\":{\"description\":\"TLS configuration. Strimzi manages the cluster PKI automatically (no cert-manager is involved for this chart): the operator auto-creates `\u003crelease\u003e-cluster-ca-cert` and `\u003crelease\u003e-clients-ca-cert` secrets, both exposed for client trust setup. The internal TLS listener on 9093 is always on; this toggle only controls the external listener on 9094.\",\"type\":\"object\",\"default\":{},\"properties\":{\"enabled\":{\"description\":\"Enable TLS on the external listener. When unset, inherits the value of `external` (TLS is on when external access is enabled). Warning: setting this to false while external is true exposes Kafka over plaintext on a public IP via LoadBalancer. Strimzi does not provide authentication on this listener unless SCRAM, mTLS, or OAuth is separately configured. Use only in controlled networks.\",\"type\":\"boolean\"}}},\"topics\":{\"description\":\"Topics configuration.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"config\",\"name\",\"partitions\",\"replicas\"],\"properties\":{\"config\":{\"description\":\"Topic configuration.\",\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"name\":{\"description\":\"Topic name.\",\"type\":\"string\"},\"partitions\":{\"description\":\"Number of partitions.\",\"type\":\"integer\"},\"replicas\":{\"description\":\"Number of replicas.\",\"type\":\"integer\"}}}},\"kafka\":{\"description\":\"Kafka configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"replicas\",\"resourcesPreset\",\"size\",\"storageClass\"],\"properties\":{\"replicas\":{\"description\":\"Number of Kafka replicas.\",\"type\":\"integer\",\"default\":3},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"c1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume size for Kafka.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the Kafka data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}}}},\"zookeeper\":{\"description\":\"ZooKeeper configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"replicas\",\"resourcesPreset\",\"size\",\"storageClass\"],\"properties\":{\"replicas\":{\"description\":\"Number of ZooKeeper replicas.\",\"type\":\"integer\",\"default\":3},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"c1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume size for ZooKeeper.\",\"default\":\"5Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the ZooKeeper data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}}}}}}", + "plural": "kafkas", + "singular": "kafka" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed Kafka service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODFfMjgyMCkiLz4KPHBhdGggZD0iTTkxLjAzMDcgNzcuODE4NUM4Ni44NTc3IDc3LjgxODUgODMuMTE2NiA3OS42ODE4IDgwLjU1NDcgODIuNjE1NEw3My45OTAxIDc3LjkzMTVDNzQuNjg2OSA3NS45OTc4IDc1LjA4NyA3My45MjE1IDc1LjA4NyA3MS43NDgyQzc1LjA4NyA2OS42MTI2IDc0LjcwMDggNjcuNTcxMSA3NC4wMjY5IDY1LjY2Nkw4MC41NzY5IDYxLjAzMThDODMuMTM4NSA2My45NTA1IDg2Ljg2OTkgNjUuODAzNyA5MS4wMzA3IDY1LjgwMzdDOTguNzMyOCA2NS44MDM3IDEwNSA1OS40ODg0IDEwNSA1MS43MjQ3QzEwNSA0My45NjEgOTguNzMyOCAzNy42NDU3IDkxLjAzMDcgMzcuNjQ1N0M4My4zMjg1IDM3LjY0NTcgNzcuMDYxNCA0My45NjEgNzcuMDYxNCA1MS43MjQ3Qzc3LjA2MTQgNTMuMTE0MyA3Ny4yNjk3IDU0LjQ1NDMgNzcuNjQzNSA1NS43MjMzTDcxLjA4OTEgNjAuMzU5OEM2OC4zNTEyIDU2LjkzNjUgNjQuNDA5IDU0LjU0NjMgNTkuOTE3NCA1My44MTY2VjQ1Ljg1NTNDNjYuMjQ1MSA0NC41MTU4IDcxLjAxMjggMzguODQ5NSA3MS4wMTI4IDMyLjA3OUM3MS4wMTI4IDI0LjMxNTMgNjQuNzQ1NyAxOCA1Ny4wNDM1IDE4QzQ5LjM0MTQgMTggNDMuMDc0MiAyNC4zMTUzIDQzLjA3NDIgMzIuMDc5QzQzLjA3NDIgMzguNzU4OSA0Ny43MTg0IDQ0LjM1NTIgNTMuOTE5NiA0NS43OTAzVjUzLjg1NTFDNDUuNDU2NyA1NS4zNTIzIDM5IDYyLjc5NjEgMzkgNzEuNzQ4MkMzOSA4MC43NDQgNDUuNTIwNiA4OC4yMTUxIDU0LjA0NDYgODkuNjYxM1Y5OC4xNzcyQzQ3Ljc4MDEgOTkuNTY1IDQzLjA3NDIgMTA1LjE5NiA0My4wNzQyIDExMS45MjFDNDMuMDc0MiAxMTkuNjg1IDQ5LjM0MTQgMTI2IDU3LjA0MzUgMTI2QzY0Ljc0NTcgMTI2IDcxLjAxMjggMTE5LjY4NSA3MS4wMTI4IDExMS45MjFDNzEuMDEyOCAxMDUuMTk2IDY2LjMwNyA5OS41NjUgNjAuMDQyNCA5OC4xNzcyVjg5LjY2MTFDNjQuMzU2OSA4OC45Mjg2IDY4LjI2MDEgODYuNjQwNyA3MS4wMjUyIDgzLjIyMzRMNzcuNjMzNyA4Ny45Mzc2Qzc3LjI2NjkgODkuMTk1MiA3Ny4wNjE0IDkwLjUyMTkgNzcuMDYxNCA5MS44OTc1Qzc3LjA2MTQgOTkuNjYxMiA4My4zMjg1IDEwNS45NzYgOTEuMDMwNyAxMDUuOTc2Qzk4LjczMjggMTA1Ljk3NiAxMDUgOTkuNjYxMiAxMDUgOTEuODk3NUMxMDUgODQuMTMzOCA5OC43MzI4IDc3LjgxODUgOTEuMDMwNyA3Ny44MTg1Wk05MS4wMzA3IDQ0Ljg5ODVDOTQuNzY1NiA0NC44OTg1IDk3LjgwMzQgNDcuOTYxNSA5Ny44MDM0IDUxLjcyNDdDOTcuODAzNCA1NS40ODc5IDk0Ljc2NTYgNTguNTUwNiA5MS4wMzA3IDU4LjU1MDZDODcuMjk1OCA1OC41NTA2IDg0LjI1OCA1NS40ODc5IDg0LjI1OCA1MS43MjQ3Qzg0LjI1OCA0Ny45NjE1IDg3LjI5NTggNDQuODk4NSA5MS4wMzA3IDQ0Ljg5ODVaTTUwLjI3MDUgMzIuMDc5QzUwLjI3MDUgMjguMzE1OCA1My4zMDg2IDI1LjI1MzEgNTcuMDQzNSAyNS4yNTMxQzYwLjc3ODUgMjUuMjUzMSA2My44MTYzIDI4LjMxNTggNjMuODE2MyAzMi4wNzlDNjMuODE2MyAzNS44NDIyIDYwLjc3ODUgMzguOTA0OSA1Ny4wNDM1IDM4LjkwNDlDNTMuMzA4NiAzOC45MDQ5IDUwLjI3MDUgMzUuODQyMiA1MC4yNzA1IDMyLjA3OVpNNjMuODE2MyAxMTEuOTIxQzYzLjgxNjMgMTE1LjY4NCA2MC43Nzg1IDExOC43NDcgNTcuMDQzNSAxMTguNzQ3QzUzLjMwODYgMTE4Ljc0NyA1MC4yNzA1IDExNS42ODQgNTAuMjcwNSAxMTEuOTIxQzUwLjI3MDUgMTA4LjE1OCA1My4zMDg2IDEwNS4wOTUgNTcuMDQzNSAxMDUuMDk1QzYwLjc3ODUgMTA1LjA5NSA2My44MTYzIDEwOC4xNTggNjMuODE2MyAxMTEuOTIxWk01Ny4wNDMgODEuMjY4MUM1MS44MzM5IDgxLjI2ODEgNDcuNTk2MiA3Ni45OTggNDcuNTk2MiA3MS43NDgyQzQ3LjU5NjIgNjYuNDk4MiA1MS44MzM5IDYyLjIyNzMgNTcuMDQzIDYyLjIyNzNDNjIuMjUxOSA2Mi4yMjczIDY2LjQ4OTUgNjYuNDk4MiA2Ni40ODk1IDcxLjc0ODJDNjYuNDg5NSA3Ni45OTggNjIuMjUxOSA4MS4yNjgxIDU3LjA0MyA4MS4yNjgxWk05MS4wMzA3IDk4LjcyMzdDODcuMjk1OCA5OC43MjM3IDg0LjI1OCA5NS42NjA3IDg0LjI1OCA5MS44OTc1Qzg0LjI1OCA4OC4xMzQzIDg3LjI5NTggODUuMDcxNiA5MS4wMzA3IDg1LjA3MTZDOTQuNzY1NiA4NS4wNzE2IDk3LjgwMzQgODguMTM0MyA5Ny44MDM0IDkxLjg5NzVDOTcuODAzNCA5NS42NjA3IDk0Ljc2NTYgOTguNzIzNyA5MS4wMzA3IDk4LjcyMzdaIiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4MV8yODIwIiB4MT0iMTQwIiB5MT0iMTMwLjUiIHgyPSI0IiB5Mj0iOS40OTk5OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcC8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzQzNDE0MSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "external" + ], + [ + "spec", + "tls" + ], + [ + "spec", + "topics" + ], + [ + "spec", + "kafka" + ], + [ + "spec", + "kafka", + "replicas" + ], + [ + "spec", + "kafka", + "resources" + ], + [ + "spec", + "kafka", + "resourcesPreset" + ], + [ + "spec", + "kafka", + "size" + ], + [ + "spec", + "kafka", + "storageClass" + ], + [ + "spec", + "zookeeper" + ], + [ + "spec", + "zookeeper", + "replicas" + ], + [ + "spec", + "zookeeper", + "resources" + ], + [ + "spec", + "zookeeper", + "resourcesPreset" + ], + [ + "spec", + "zookeeper", + "size" + ], + [ + "spec", + "zookeeper", + "storageClass" + ] + ], + "plural": "Kafka", + "singular": "Kafka", + "tags": [ + "messaging" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-kafka-application-default-kafka", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "kafka-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "kafka-{{ .name }}-clients-ca-cert", + "kafka-{{ .name }}-cluster-ca-cert" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "kafka-{{ .name }}-kafka-bootstrap" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "kubernetes-rd", + "meta.helm.sh/release-namespace": "cozy-system", + "release.cozystack.io/helm-install-disable-wait": "true", + "release.cozystack.io/helm-install-timeout": "20m" + }, + "creationTimestamp": "2026-08-12T10:13:25Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "kubernetes-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "kubernetes", + "resourceVersion": "35917", + "uid": "b8f66ef5-a74b-453a-9331-2261eb3fb1ce" + }, + "spec": { + "application": { + "kind": "Kubernetes", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"storageClass\":{\"description\":\"Default StorageClass inside the tenant cluster. Remote-accessible LINSTOR classes are auto-propagated to the tenant under the same name.\",\"type\":\"string\",\"default\":\"replicated\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"nodeGroups\":{\"description\":\"Worker nodes configuration map. When left empty, a default node group `md0` is emitted with `minReplicas: 0` and `roles: [ingress-nginx]` — the MachineDeployment renders but provisions no workers until an unschedulable Pod triggers the cluster-autoscaler (or an operator scales the group manually). Enabling `addons.ingressNginx.enabled: true` on a CR with default `nodeGroups: {}` therefore requires either supplying a nodeGroup with `roles: [ingress-nginx]` and `minReplicas \u003e= 1`, or waiting for the autoscaler to bring up the default md0 in response to the ingress-nginx controller Pods becoming Pending. Provide your own groups to take full control — they are not merged with the default, so you may name and omit groups freely.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"required\":[\"diskSize\",\"instanceType\",\"maxReplicas\",\"minReplicas\"],\"properties\":{\"diskSize\":{\"description\":\"System disk size for the worker VM. Carries the Talos OS image (factory.talos.dev raw artifact streamed in by CDI), kubelet state, containerd image cache, and any local-path PVCs. Pre-Talos installs used a separate disk-kubelet PVC for kubelet/containerd state; on Talos this is consolidated onto the single system disk imaged from the factory artifact.\",\"default\":\"20Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"gpus\":{\"description\":\"List of GPUs to attach (NVIDIA driver requires at least 4 GiB RAM).\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"name\":{\"description\":\"Name of GPU, such as \\\"nvidia.com/AD102GL_L40S\\\".\",\"type\":\"string\",\"x-cozystack-options\":{\"source\":\"gpu\"}}}}},\"instanceType\":{\"description\":\"Virtual machine instance type.\",\"type\":\"string\",\"default\":\"u1.medium\",\"x-cozystack-options\":{\"source\":\"instancetype\"}},\"kubelet\":{\"description\":\"Kubelet resource reservations for this node group.\",\"type\":\"object\",\"properties\":{\"evictionHardMemory\":{\"description\":\"Hard eviction threshold for memory (absolute like 200Mi or percentage like 7%).\",\"type\":\"string\",\"default\":\"7%\"},\"evictionSoftMemory\":{\"description\":\"Soft eviction threshold for memory (absolute like 1Gi or percentage like 10%).\",\"type\":\"string\",\"default\":\"10%\"},\"kubeReservedCpu\":{\"description\":\"CPU reserved for kubelet and container runtime. Auto-computed from instanceType if empty.\",\"type\":\"string\"},\"kubeReservedMemory\":{\"description\":\"Memory reserved for kubelet and container runtime. Auto-computed from instanceType if empty.\",\"type\":\"string\"},\"systemReservedCpu\":{\"description\":\"CPU reserved for host OS. Auto-computed from instanceType if empty.\",\"type\":\"string\"},\"systemReservedMemory\":{\"description\":\"Memory reserved for host OS. Auto-computed from instanceType if empty.\",\"type\":\"string\"}}},\"maxReplicas\":{\"description\":\"Maximum number of replicas.\",\"type\":\"integer\",\"default\":10},\"maxUnhealthy\":{\"description\":\"Per-group override for `nodeHealthCheck.maxUnhealthy`. When unset, the cluster-wide `nodeHealthCheck.maxUnhealthy` applies. Accepts a bare integer (\\\"0\\\", \\\"1\\\", ...) or an integer percentage (\\\"0%\\\", \\\"50%\\\").\",\"type\":\"string\"},\"minReplicas\":{\"description\":\"Minimum number of replicas.\",\"type\":\"integer\",\"default\":0},\"nodeStartupTimeout\":{\"description\":\"Per-group override for `nodeHealthCheck.nodeStartupTimeout`. When unset, the cluster-wide `nodeHealthCheck.nodeStartupTimeout` applies.\",\"type\":\"string\"},\"resources\":{\"description\":\"Explicit CPU and memory for each worker node, as an alternative to `instanceType` sizing. Optional: when omitted, the node is sized by `instanceType`. When both `cpu` and `memory` are set, they take precedence and `instanceType` is ignored for that node group (the instancetype is omitted from the VM, since KubeVirt cannot override an instancetype's CPU/memory). Set both `cpu` and `memory` together or neither; setting only one is rejected at render time.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"CPU available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"roles\":{\"description\":\"List of node roles.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"storageClass\":{\"description\":\"StorageClass for worker node persistent disks. When empty, falls back to the application-level storageClass. Worker VMs live-migrate, so their disks need ReadWriteMany — the RWX access mode is supplied by the chosen StorageClass's CDI StorageProfile, not set on the DataVolume here — and linstor-csi rejects RWX volumes that are not on a DRBD-backed StorageClass, so the fallback targets the replicated/DRBD application storageClass rather than a possibly non-DRBD cluster default. NOTE: deliberately not marked immutable — the field is optional and undefaulted, so a strict `self == oldSelf` rule would block any future attempt to set it on an existing node group.\",\"type\":\"string\",\"x-cozystack-options\":{\"source\":\"storageclass\"}}}}},\"version\":{\"description\":\"Kubernetes major.minor version to deploy\",\"type\":\"string\",\"default\":\"v1.35\",\"enum\":[\"v1.35\",\"v1.34\",\"v1.33\",\"v1.32\",\"v1.31\"]},\"host\":{\"description\":\"External hostname for Kubernetes cluster. Defaults to `\u003ccluster-name\u003e.\u003ctenant-host\u003e` if empty.\",\"type\":\"string\",\"default\":\"\"},\"addons\":{\"description\":\"Cluster addons configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"certManager\",\"cilium\",\"coredns\",\"fluxcd\",\"gatewayAPI\",\"gpuOperator\",\"hami\",\"ingressNginx\",\"monitoringAgents\",\"ouroboros\",\"velero\",\"verticalPodAutoscaler\"],\"properties\":{\"certManager\":{\"description\":\"Cert-manager addon.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"valuesOverride\"],\"properties\":{\"enabled\":{\"description\":\"Enable cert-manager.\",\"type\":\"boolean\",\"default\":false},\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"cilium\":{\"description\":\"Cilium CNI plugin.\",\"type\":\"object\",\"default\":{},\"required\":[\"valuesOverride\"],\"properties\":{\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"coredns\":{\"description\":\"CoreDNS addon.\",\"type\":\"object\",\"default\":{},\"required\":[\"valuesOverride\"],\"properties\":{\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"fluxcd\":{\"description\":\"FluxCD GitOps operator.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"valuesOverride\"],\"properties\":{\"enabled\":{\"description\":\"Enable FluxCD.\",\"type\":\"boolean\",\"default\":false},\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"gatewayAPI\":{\"description\":\"Gateway API addon.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"description\":\"Enable Gateway API.\",\"type\":\"boolean\",\"default\":false}}},\"gpuOperator\":{\"description\":\"NVIDIA GPU Operator.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"valuesOverride\"],\"properties\":{\"enabled\":{\"description\":\"Enable GPU Operator.\",\"type\":\"boolean\",\"default\":false},\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"hami\":{\"description\":\"HAMi GPU virtualization middleware.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"valuesOverride\"],\"properties\":{\"enabled\":{\"description\":\"Enable HAMi (requires GPU Operator).\",\"type\":\"boolean\",\"default\":false},\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"ingressNginx\":{\"description\":\"Ingress-NGINX controller.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"exposeMethod\",\"valuesOverride\"],\"properties\":{\"enabled\":{\"description\":\"Enable the controller (requires nodes labeled `ingress-nginx`).\",\"type\":\"boolean\",\"default\":false},\"exposeMethod\":{\"description\":\"Method to expose the controller. Allowed values: `Proxied`, `LoadBalancer`.\",\"type\":\"string\",\"default\":\"Proxied\",\"enum\":[\"Proxied\",\"LoadBalancer\"]},\"hosts\":{\"description\":\"Domains routed to this tenant cluster when `exposeMethod` is `Proxied`.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"monitoringAgents\":{\"description\":\"Monitoring agents.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"valuesOverride\"],\"properties\":{\"enabled\":{\"description\":\"Enable monitoring agents.\",\"type\":\"boolean\",\"default\":false},\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"ouroboros\":{\"description\":\"Hairpin-NAT fix for ingress-nginx with PROXY-protocol.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"valuesOverride\"],\"properties\":{\"enabled\":{\"description\":\"Enable ouroboros. Requires addons.ingressNginx.enabled (chart-render fail otherwise). Only useful when PROXY-protocol is wired on the tenant ingress-nginx via valuesOverride.\",\"type\":\"boolean\",\"default\":false},\"valuesOverride\":{\"description\":\"Custom Helm values overrides. Operator-key wins over cozystack defaults.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"velero\":{\"description\":\"Velero backup/restore addon.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"valuesOverride\"],\"properties\":{\"enabled\":{\"description\":\"Enable Velero.\",\"type\":\"boolean\",\"default\":false},\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}},\"verticalPodAutoscaler\":{\"description\":\"Vertical Pod Autoscaler.\",\"type\":\"object\",\"default\":{},\"required\":[\"valuesOverride\"],\"properties\":{\"valuesOverride\":{\"description\":\"Custom Helm values overrides.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}}}},\"controlPlane\":{\"description\":\"Kubernetes control-plane configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"apiServer\",\"controllerManager\",\"konnectivity\",\"replicas\",\"scheduler\"],\"properties\":{\"apiServer\":{\"description\":\"API Server configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"resources\",\"resourcesPreset\"],\"properties\":{\"extraArgs\":{\"description\":\"Extra command-line flags appended to the tenant kube-apiserver, passed through to KamajiControlPlane `spec.apiServer.extraArgs`. For OIDC use `spec.oidc.mode` — this passthrough is the escape hatch for other apiserver flags (`--requestheader-uid-headers=X-Remote-Uid`, feature gates, etc). Do NOT add legacy `--oidc-*` flags here when `spec.oidc.mode` is not `None`; the chart injects `--authentication-config` and the apiserver refuses to boot with both. Empty by default (no change to current behavior).\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"extraVolumeMounts\":{\"description\":\"Extra volume mounts added to the tenant kube-apiserver container, passed through to KamajiControlPlane `spec.apiServer.extraVolumeMounts`. Each `name` must reference a volume declared in `extraVolumes`; the chart-managed talos secret volumes cannot be mounted. Each item is a core/v1 VolumeMount. Empty by default.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"extraVolumes\":{\"description\":\"Extra volumes added to the control-plane Deployment, passed through to KamajiControlPlane `spec.deployment.extraVolumes`. Use to mount a ConfigMap or Secret holding an AuthenticationConfiguration file referenced by `extraArgs`. Each item is a core/v1 Volume, but because the control-plane pod runs on the management cluster only `configMap` and `secret` sources are allowed (host-reaching sources like `hostPath`/`csi` and token-projection via `projected` are rejected); each volume must have a unique, non-empty name and exactly one source. The names `talos-ca` and `talos-tls-cert` are reserved by the chart. Empty by default.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"resources\":{\"description\":\"CPU and memory resources for API Server.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Preset if `resources` omitted.\",\"type\":\"string\",\"default\":\"c1.medium\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}},\"controllerManager\":{\"description\":\"Controller Manager configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"resources\",\"resourcesPreset\"],\"properties\":{\"resources\":{\"description\":\"CPU and memory resources for Controller Manager.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Preset if `resources` omitted.\",\"type\":\"string\",\"default\":\"t1.micro\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}},\"konnectivity\":{\"description\":\"Konnectivity configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"server\"],\"properties\":{\"server\":{\"description\":\"Konnectivity Server configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"resources\",\"resourcesPreset\"],\"properties\":{\"resources\":{\"description\":\"CPU and memory resources for Konnectivity.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Preset if `resources` omitted.\",\"type\":\"string\",\"default\":\"t1.micro\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}}}},\"replicas\":{\"description\":\"Number of control-plane replicas.\",\"type\":\"integer\",\"default\":2},\"scheduler\":{\"description\":\"Scheduler configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"resources\",\"resourcesPreset\"],\"properties\":{\"resources\":{\"description\":\"CPU and memory resources for Scheduler.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Preset if `resources` omitted.\",\"type\":\"string\",\"default\":\"t1.micro\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}}}},\"images\":{\"description\":\"Optional image overrides for air-gapped or rate-limited registries.\",\"type\":\"object\",\"default\":{},\"properties\":{\"kubectl\":{\"description\":\"Image used by the bootstrap-token tenant Job (kubectl). Empty falls back to images/kubectl.tag.\",\"type\":\"string\",\"default\":\"\"},\"talosCsrSigner\":{\"description\":\"Image used by the talos-csr-signer sidecar in the Kamaji control plane. Empty falls back to images/talos-csr-signer.tag.\",\"type\":\"string\",\"default\":\"\"},\"waitForKubeconfig\":{\"description\":\"Image used by the wait-for-kubeconfig init container. Empty falls back to images/busybox.tag.\",\"type\":\"string\",\"default\":\"\"}}},\"talos\":{\"description\":\"Talos worker image configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"imageFactoryURL\",\"installerRepository\",\"schematicID\",\"version\"],\"properties\":{\"imageFactoryURL\":{\"description\":\"Base URL of the Talos Image Factory that serves the worker OS disk image (the `openstack-amd64.raw.xz` raw artifact streamed in by CDI over HTTP). Defaults to the public factory. Point at a self-hosted Image Factory, a caching mirror, or an internal HTTP file server for air-gapped, rate-limited, or flaky-egress environments. No trailing slash.\",\"type\":\"string\",\"default\":\"https://factory.talos.dev\"},\"installerRepository\":{\"description\":\"OCI repository prefix for the Talos installer image used by the in-guest `talos-reconcile` upgrade Job. Resolved as `\u003cinstallerRepository\u003e/\u003cschematicID\u003e:\u003cversion\u003e`. Defaults to the public factory's installer path. Override for air-gapped or mirrored registries. No trailing slash.\",\"type\":\"string\",\"default\":\"factory.talos.dev/installer\"},\"schematicID\":{\"description\":\"Talos image-factory schematic ID. Defaults to the cozystack-tested vanilla schematic. Operators using custom schematics (system extensions, kernel args) override here.\",\"type\":\"string\",\"default\":\"ce4c980550dd2ab1b17bbf2b08801c7eb59418eafe8f279833297925d67c7515\"},\"version\":{\"description\":\"Talos release used for worker OS image and installer. Must satisfy the chart's Talos\u003c-\u003eKubernetes support matrix against the chosen `version`.\",\"type\":\"string\",\"default\":\"v1.13.6\"}}},\"nodeHealthCheck\":{\"description\":\"MachineHealthCheck tuning for worker node groups.\",\"type\":\"object\",\"default\":{},\"required\":[\"maxUnhealthy\",\"nodeStartupTimeout\"],\"properties\":{\"maxUnhealthy\":{\"description\":\"Maximum number of unhealthy nodes tolerated per node group before remediation is paused. The MHC admission webhook accepts either a bare integer (\\\"0\\\", \\\"1\\\", ...) or a percentage (\\\"0%\\\", \\\"50%\\\"); bare numeric strings are rejected, so the safer default is to express the value as a percentage. Default \\\"50%\\\" leaves headroom for transient unhealthy nodes during the kubeadm-to-Talos rollover and slow first boots from factory.talos.dev. Drop to \\\"0%\\\" once the fleet is stable on Talos workers.\",\"type\":\"string\",\"default\":\"50%\"},\"nodeStartupTimeout\":{\"description\":\"Maximum time a Machine is allowed to spend reaching the Ready condition before it is remediated. Raise for slow first boots (Talos image fetch from factory.talos.dev or a busy storage class on the kubevirt-csi PVC populator).\",\"type\":\"string\",\"default\":\"10m\"}}},\"oidc\":{\"description\":\"OIDC authentication and per-user RBAC for the tenant kube-apiserver. See docs/oidc-tenant.md for the operator guide.\",\"type\":\"object\",\"default\":{},\"required\":[\"mode\"],\"properties\":{\"customConfig\":{\"description\":\"Tenant-supplied AuthenticationConfiguration; consumed only when `mode: CustomConfig`.\",\"type\":\"object\",\"default\":{},\"properties\":{\"config\":{\"description\":\"Inline AuthenticationConfiguration YAML (`apiserver.config.k8s.io/v1beta1`). The chart writes the value verbatim into a Secret mounted at `/etc/kubernetes/authentication-config/config.yaml` on the kube-apiserver. Mutually exclusive with `secretRef.name`.\",\"type\":\"string\",\"default\":\"\"},\"secretRef\":{\"description\":\"Reference to an existing Secret in the tenant namespace carrying the `AuthenticationConfiguration`.\",\"type\":\"object\",\"default\":{},\"properties\":{\"name\":{\"description\":\"Name of an existing Secret in the tenant (release) namespace whose `config.yaml` key holds an `apiserver.config.k8s.io/v1beta1` `AuthenticationConfiguration`. Mutually exclusive with `customConfig.config`.\",\"type\":\"string\",\"default\":\"\"}}}}},\"mode\":{\"description\":\"Identity mode. `None`: no OIDC, only the static admin kubeconfig works. `System`: trust the platform `cozy` realm via a per-cluster public client with audience binding; zero-config default. `CustomConfig`: trust a tenant-supplied issuer directly (BYO); `cozy` is not in the path.\",\"type\":\"string\",\"default\":\"None\",\"enum\":[\"None\",\"System\",\"CustomConfig\"]},\"users\":{\"description\":\"Users granted access to the tenant cluster; each entry produces one ClusterRoleBinding inside the tenant cluster. Works for both `System` and `CustomConfig` modes.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"email\",\"role\"],\"properties\":{\"email\":{\"description\":\"Email address matched against the `email` claim from the issuer. Used verbatim as the `User:` subject in the ClusterRoleBinding inside the tenant cluster. The `email` claim is a built-in OIDC scope requested explicitly by the chart-generated `kubectl oidc-login` kubeconfig; every conformant OIDC provider (cozy realm included) emits it.\",\"type\":\"string\"},\"role\":{\"description\":\"Role to bind: `admin` maps to `ClusterRole/cluster-admin`, `view` maps to `ClusterRole/view`.\",\"type\":\"string\",\"enum\":[\"admin\",\"view\"]}}}}}}}}", + "plural": "kuberneteses", + "singular": "kubernetes" + }, + "dashboard": { + "category": "IaaS", + "description": "Managed Kubernetes service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODFfMjg0NSkiLz4KPHBhdGggZD0iTTcxLjk5NjggMTlDNzAuMzAzOSAxOS4wMDAyIDY4LjkzMTIgMjAuNTMyMiA2OC45MzE0IDIyLjQyMjFDNjguOTMxNCAyMi40NTExIDY4LjkzNzMgMjIuNDc4OCA2OC45Mzc5IDIyLjUwNzZDNjguOTM1NCAyMi43NjQ0IDY4LjkyMzEgMjMuMDczNyA2OC45MzE0IDIzLjI5NzNDNjguOTcxNyAyNC4zODczIDY5LjIwODIgMjUuMjIxNiA2OS4zNTA2IDI2LjIyNThDNjkuNjA4NCAyOC4zNzUyIDY5LjgyNDUgMzAuMTU2OSA2OS42OTEyIDMxLjgxM0M2OS41NjE1IDMyLjQzNzUgNjkuMTAzNyAzMy4wMDg2IDY4LjY5NTYgMzMuNDA1Nkw2OC42MjM1IDM0LjcwODZDNjYuNzgzOSAzNC44NjE3IDY0LjkzMTkgMzUuMTQyMSA2My4wODIxIDM1LjU2NDFDNTUuMTIyNiAzNy4zNzk4IDQ4LjI2OTUgNDEuNDk5MSA0My4wNTIgNDcuMDYwOUM0Mi43MTM0IDQ2LjgyODggNDIuMTIxMSA0Ni40MDE5IDQxLjk0NSA0Ni4yNzEyQzQxLjM5NzcgNDYuMzQ1NCA0MC44NDQ1IDQ2LjUxNTEgNDAuMTI0MSA0Ni4wOTM1QzM4Ljc1MjIgNDUuMTY1NyAzNy41MDI4IDQzLjg4NTEgMzUuOTkxIDQyLjM0MjRDMzUuMjk4MiA0MS42MDQ0IDM0Ljc5NjYgNDAuOTAxOCAzMy45NzM1IDQwLjE5MDRDMzMuNzg2NiA0MC4wMjg5IDMzLjUwMTQgMzkuODEwNCAzMy4yOTIzIDM5LjY0NDJDMzIuNjQ4OSAzOS4xMjg4IDMxLjg5IDM4Ljg2IDMxLjE1NyAzOC44MzQ4QzMwLjIxNDcgMzguODAyNCAyOS4zMDc1IDM5LjE3MjUgMjguNzEzOCAzOS45MjA2QzI3LjY1ODQgNDEuMjUwNiAyNy45OTYzIDQzLjI4MzMgMjkuNDY3MSA0NC40NjE0QzI5LjQ4MiA0NC40NzM0IDI5LjQ5NzkgNDQuNDgyNyAyOS41MTI5IDQ0LjQ5NDNDMjkuNzE1IDQ0LjY1ODkgMjkuOTYyNSA0NC44Njk4IDMwLjE0ODMgNDUuMDA3NkMzMS4wMjE3IDQ1LjY1NTUgMzEuODE5NSA0NS45ODcyIDMyLjY4OTcgNDYuNTAxNUMzNC41MjMxIDQ3LjYzOTEgMzYuMDQzIDQ4LjU4MjMgMzcuMjQ4NiA0OS43MTk2QzM3LjcxOTQgNTAuMjIzNyAzNy44MDE2IDUxLjExMjIgMzcuODY0MyA1MS40OTY0TDM4Ljg0NjggNTIuMzc4MkMzMy41ODcyIDYwLjMzMDggMzEuMTUzIDcwLjE1MzkgMzIuNTkxNSA4MC4xNjI3TDMxLjMwNzcgODAuNTM3OEMzMC45NjkzIDgwLjk3NjggMzAuNDkxMiA4MS42Njc2IDI5Ljk5MTEgODEuODczOEMyOC40MTM4IDgyLjM3MjkgMjYuNjM4NyA4Mi41NTYyIDI0LjQ5NTYgODIuNzgxOUMyMy40ODk0IDgyLjg2NiAyMi42MjEzIDgyLjgxNTggMjEuNTU0NiA4My4wMTg4QzIxLjMxOTggODMuMDYzNSAyMC45OTI3IDgzLjE0OTEgMjAuNzM1OCA4My4yMDk3QzIwLjcyNjkgODMuMjExNiAyMC43MTg2IDgzLjIxNDIgMjAuNzA5NiA4My4yMTYyQzIwLjY5NTYgODMuMjE5NSAyMC42NzcyIDgzLjIyNjMgMjAuNjYzOCA4My4yMjk0QzE4Ljg1NyA4My42NjggMTcuNjk2MyA4NS4zMzY1IDE4LjA2OTkgODYuOTgwNUMxOC40NDM3IDg4LjYyNDggMjAuMjA4NiA4OS42MjQ4IDIyLjAyNjIgODkuMjMxMkMyMi4wMzkzIDg5LjIyODIgMjIuMDU4NCA4OS4yMjc3IDIyLjA3MiA4OS4yMjQ2QzIyLjA5MjYgODkuMjE5OSAyMi4xMTA2IDg5LjIwOTkgMjIuMTMxIDg5LjIwNDlDMjIuMzg0NCA4OS4xNDkgMjIuNzAxOSA4OS4wODY4IDIyLjkyMzYgODkuMDI3MkMyMy45NzIzIDg4Ljc0NTEgMjQuNzMxOCA4OC4zMzA2IDI1LjY3NDYgODcuOTY3N0MyNy43MDI5IDg3LjIzNjggMjkuMzgyOCA4Ni42MjYyIDMxLjAxOTUgODYuMzg4M0MzMS43MDMgODYuMzM0NSAzMi40MjMyIDg2LjgxMiAzMi43ODE0IDg3LjAxMzRMMzQuMTE3NyA4Ni43ODMxQzM3LjE5MjYgOTYuMzYxMyA0My42MzY2IDEwNC4xMDMgNTEuNzk2MyAxMDguOTYxTDUxLjIzOTYgMTEwLjMwM0M1MS40NDAzIDExMC44MjQgNTEuNjYxNiAxMTEuNTMgNTEuNTEyMSAxMTIuMDQ1QzUwLjkxNzEgMTEzLjU5NSA0OS44OTggMTE1LjIzMSA0OC43Mzc0IDExNy4wNTVDNDguMTc1NSAxMTcuODk4IDQ3LjYwMDQgMTE4LjU1MiA0Ny4wOTM0IDExOS41MTZDNDYuOTcyIDExOS43NDcgNDYuODE3NSAxMjAuMTAyIDQ2LjcwMDQgMTIwLjM0NkM0NS45MTI1IDEyMi4wMzkgNDYuNDkwNCAxMjMuOTkgNDguMDAzOCAxMjQuNzIyQzQ5LjUyNjggMTI1LjQ1OSA1MS40MTcxIDEyNC42ODIgNTIuMjM1MiAxMjIuOTg1QzUyLjIzNjQgMTIyLjk4MiA1Mi4yNDA2IDEyMi45OCA1Mi4yNDE3IDEyMi45NzhDNTIuMjQyNiAxMjIuOTc2IDUyLjI0MDkgMTIyLjk3MyA1Mi4yNDE3IDEyMi45NzFDNTIuMzU4MiAxMjIuNzMxIDUyLjUyMzMgMTIyLjQxNSA1Mi42MjE2IDEyMi4xODhDNTMuMDU2IDEyMS4xODkgNTMuMjAwNSAxMjAuMzMyIDUzLjUwNTkgMTE5LjM2NUM1NC4zMTcgMTE3LjMxOCA1NC43NjI2IDExNS4xNyA1NS44NzkxIDExMy44MzJDNTYuMTg0OSAxMTMuNDY2IDU2LjY4MzMgMTEzLjMyNSA1Ny4yMDAxIDExMy4xODZMNTcuODk0NCAxMTEuOTIyQzY1LjAwOCAxMTQuNjY1IDcyLjk3MDUgMTE1LjQwMiA4MC45MjQ1IDExMy41ODdDODIuNzM5MSAxMTMuMTczIDg0LjQ5MDggMTEyLjYzNyA4Ni4xODQzIDExMS45OTRDODYuMzc5NCAxMTIuMzQyIDg2Ljc0MiAxMTMuMDExIDg2LjgzOTMgMTEzLjE3OUM4Ny4zNjQ0IDExMy4zNTEgODcuOTM3NyAxMTMuNDM5IDg4LjQwNDcgMTE0LjEzM0M4OS4yNDAxIDExNS41NjcgODkuODExNCAxMTcuMjYzIDkwLjUwNzMgMTE5LjMxMkM5MC44MTI4IDEyMC4yNzkgOTAuOTYzOCAxMjEuMTM2IDkxLjM5ODEgMTIyLjEzNkM5MS40OTcxIDEyMi4zNjMgOTEuNjYxNCAxMjIuNjg0IDkxLjc3OCAxMjIuOTI1QzkyLjU5NDQgMTI0LjYyOCA5NC40OTA3IDEyNS40MDcgOTYuMDE1OSAxMjQuNjY5Qzk3LjUyOTIgMTIzLjkzNyA5OC4xMDc3IDEyMS45ODYgOTcuMzE5NCAxMjAuMjkzQzk3LjIwMjMgMTIwLjA0OSA5Ny4wNDEyIDExOS42OTUgOTYuOTE5OCAxMTkuNDY0Qzk2LjQxMjcgMTE4LjQ5OSA5NS44Mzc3IDExNy44NTIgOTUuMjc1OCAxMTcuMDA5Qzk0LjExNTIgMTE1LjE4NSA5My4xNTI2IDExMy42NyA5Mi41NTc1IDExMi4xMkM5Mi4zMDg3IDExMS4zMiA5Mi41OTk1IDExMC44MjMgOTIuNzkzMyAxMTAuMzAzQzkyLjY3NzIgMTEwLjE3IDkyLjQyODggMTA5LjQxNCA5Mi4yODI0IDEwOS4wNTlDMTAwLjc2MiAxMDQuMDI5IDEwNy4wMTcgOTUuOTk4NSAxMDkuOTU1IDg2LjcyMzlDMTEwLjM1MSA4Ni43ODY1IDExMS4wNDEgODYuOTA5MSAxMTEuMjY1IDg2Ljk1NDJDMTExLjcyNiA4Ni42NDg3IDExMi4xNDkgODYuMjUwMSAxMTIuOTgxIDg2LjMxNTlDMTE0LjYxNyA4Ni41NTM3IDExNi4yOTcgODcuMTY0NSAxMTguMzI2IDg3Ljg5NTNDMTE5LjI2OCA4OC4yNTgxIDEyMC4wMjggODguNjc5MyAxMjEuMDc3IDg4Ljk2MTRDMTIxLjI5OCA4OS4wMjEgMTIxLjYxNiA4OS4wNzY2IDEyMS44NjkgODkuMTMyNUMxMjEuODg5IDg5LjEzNzUgMTIxLjkwOCA4OS4xNDc1IDEyMS45MjggODkuMTUyMkMxMjEuOTQyIDg5LjE1NTMgMTIxLjk2MSA4OS4xNTU4IDEyMS45NzQgODkuMTU4OEMxMjMuNzkyIDg5LjU1MiAxMjUuNTU3IDg4LjU1MjYgMTI1LjkzIDg2LjkwODFDMTI2LjMwMyA4NS4yNjQxIDEyNS4xNDMgODMuNTk1MiAxMjMuMzM2IDgzLjE1N0MxMjMuMDc0IDgzLjA5NyAxMjIuNzAxIDgyLjk5NSAxMjIuNDQ2IDgyLjk0NjVDMTIxLjM3OSA4Mi43NDM1IDEyMC41MTEgODIuNzkzNSAxMTkuNTA1IDgyLjcwOTVDMTE3LjM2MSA4Mi40ODM5IDExNS41ODYgODIuMzAwNCAxMTQuMDA5IDgxLjgwMTRDMTEzLjM2NiA4MS41NTA3IDExMi45MDggODAuNzgxOSAxMTIuNjg2IDgwLjQ2NTVMMTExLjQ0OCA4MC4xMDM1QzExMi4wOSA3NS40MzggMTExLjkxNyA3MC41ODI1IDExMC44MDYgNjUuNzI0M0MxMDkuNjg1IDYwLjgyMDggMTA3LjcwNCA1Ni4zMzYxIDEwNS4wNjIgNTIuMzg0OEMxMDUuMzc5IDUyLjA5NDggMTA1Ljk3OSA1MS41NjEyIDEwNi4xNDkgNTEuNDA0M0MxMDYuMTk5IDUwLjg1MTcgMTA2LjE1NiA1MC4yNzIyIDEwNi43MjUgNDkuNjYwM0MxMDcuOTMxIDQ4LjUyMyAxMDkuNDUxIDQ3LjU3OTkgMTExLjI4NCA0Ni40NDIzQzExMi4xNTQgNDUuOTI3OSAxMTIuOTU5IDQ1LjU5NjQgMTEzLjgzMiA0NC45NDg0QzExNC4wMyA0NC44MDE5IDExNC4yOTkgNDQuNTY5OSAxMTQuNTA3IDQ0LjQwMjJDMTE1Ljk3NyA0My4yMjM3IDExNi4zMTYgNDEuMTkxMSAxMTUuMjYgMzkuODYxNEMxMTQuMjA0IDM4LjUzMTcgMTEyLjE1OSAzOC40MDY1IDExMC42ODggMzkuNTg1QzExMC40NzkgMzkuNzUxNiAxMTAuMTk1IDM5Ljk2ODggMTEwLjAwNyA0MC4xMzEyQzEwOS4xODQgNDAuODQyNiAxMDguNjc2IDQxLjU0NTIgMTA3Ljk4MyA0Mi4yODMyQzEwNi40NzEgNDMuODI1OSAxMDUuMjIyIDQ1LjExMyAxMDMuODUgNDYuMDQwOUMxMDMuMjU1IDQ2LjM4ODUgMTAyLjM4NSA0Ni4yNjgyIDEwMS45OSA0Ni4yNDQ5TDEwMC44MjQgNDcuMDgwNkM5NC4xNzUzIDQwLjA3NjMgODUuMTIzNSAzNS41OTgyIDc1LjM3NjYgMzQuNzI4M0M3NS4zNDk0IDM0LjMxNzkgNzUuMzEzNyAzMy41NzYxIDc1LjMwNDYgMzMuMzUyOUM3NC45MDU2IDMyLjk2OTMgNzQuNDIzNSAzMi42NDE4IDc0LjMwMjQgMzEuODEzQzc0LjE2OTEgMzAuMTU2OSA3NC4zOTE3IDI4LjM3NTIgNzQuNjQ5NiAyNi4yMjU4Qzc0Ljc5MTkgMjUuMjIxNiA3NS4wMjg0IDI0LjM4NzMgNzUuMDY4OCAyMy4yOTczQzc1LjA3OCAyMy4wNDk1IDc1LjA2MzIgMjIuNjkgNzUuMDYyMiAyMi40MjIxQzc1LjA2MiAyMC41MzIyIDczLjY4OTggMTguOTk5OCA3MS45OTY4IDE5Wk02OC4xNTg1IDQyLjg4ODZMNjcuMjQ4IDU5LjA0NDdMNjcuMTgyNSA1OS4wNzc2QzY3LjEyMTQgNjAuNTIyOSA2NS45Mzc1IDYxLjY3NyA2NC40ODM5IDYxLjY3N0M2My44ODg0IDYxLjY3NyA2My4zMzg4IDYxLjQ4NDkgNjIuODkyMiA2MS4xNTcxTDYyLjg2NiA2MS4xNzAzTDQ5LjY4MDcgNTEuNzc5NEM1My43MzMxIDQ3Ljc3NTkgNTguOTE2NCA0NC44MTcyIDY0Ljg5IDQzLjQ1NDZDNjUuOTgxMiA0My4yMDU2IDY3LjA3MTkgNDMuMDIwOSA2OC4xNTg1IDQyLjg4ODZaTTc1Ljg0MTcgNDIuODg4NkM4Mi44MTU5IDQzLjc1MDQgODkuMjY1NyA0Ni45MjMyIDk0LjIwODEgNTEuNzg2TDgxLjEwOCA2MS4xMTc2TDgxLjA2MjEgNjEuMDk3OUM3OS44OTk0IDYxLjk1MTIgNzguMjYxMSA2MS43Mzk0IDc3LjM1NDggNjAuNTk3OEM3Ni45ODM1IDYwLjEzMDEgNzYuNzg4NyA1OS41ODAxIDc2Ljc2NTMgNTkuMDI0OUw3Ni43NTIyIDU5LjAxODRMNzUuODQxNyA0Mi44ODg2Wk00NC44OTkxIDU3LjgxNEw1Ni45MzgyIDY4LjYzM0w1Ni45MjUxIDY4LjY5ODhDNTguMDExNyA2OS42NDc5IDU4LjE3MiA3MS4yOTQ5IDU3LjI2NTcgNzIuNDM2OEM1Ni44OTQ0IDcyLjkwNDUgNTYuMzk3NSA3My4yMTgyIDU1Ljg2MzkgNzMuMzY0N0w1NS44NTA4IDczLjQxNzNMNDAuNDE4OCA3Ny44OTIzQzM5LjYzMzQgNzAuNjc2NSA0MS4zMjYxIDYzLjY2MjEgNDQuODk5MSA1Ny44MTRaTTk5LjAwOTQgNTcuODIwNkMxMDAuNzk4IDYwLjczMzYgMTAyLjE1MyA2My45ODcxIDEwMi45NTkgNjcuNTE0M0MxMDMuNzU2IDcwLjk5OTEgMTAzLjk1NiA3NC40Nzc4IDEwMy42MjcgNzcuODM5N0w4OC4xMTY2IDczLjM1MTVMODguMTAzNSA3My4yODU3Qzg2LjcxNDUgNzIuOTA0MyA4NS44NjA5IDcxLjQ4NDggODYuMTg0MyA3MC4wNjExQzg2LjMxNjggNjkuNDc3OCA4Ni42MjQ5IDY4Ljk4NDQgODcuMDQyMyA2OC42MTk4TDg3LjAzNTggNjguNTg2OUw5OS4wMDk0IDU3LjgyMDZaTTY5LjUyNzQgNjkuNDY4OEg3NC40NTk2TDc3LjUyNTEgNzMuMzE4Nkw3Ni40MjQ3IDc4LjEyMjZMNzEuOTk2OCA4MC4yNjE0TDY3LjU1NTggNzguMTE2MUw2Ni40NTU0IDczLjMxMkw2OS41Mjc0IDY5LjQ2ODhaTTg1LjMzOTMgODIuNjQzN0M4NS41NDg5IDgyLjYzMzEgODUuNzU3NiA4Mi42NTIgODUuOTYxNiA4Mi42ODk4TDg1Ljk4NzggODIuNjU2OUwxMDEuOTUgODUuMzY4MkM5OS42MTQyIDkxLjk2MjQgOTUuMTQ0IDk3LjY3NSA4OS4xNzExIDEwMS40OThMODIuOTc0NyA4Ni40NjA2TDgyLjk5NDQgODYuNDM0M0M4Mi40MjUyIDg1LjEwNTUgODIuOTk0OCA4My41NDcyIDg0LjMwNDQgODIuOTEzNUM4NC42Mzk3IDgyLjc1MTMgODQuOTkgODIuNjYxNCA4NS4zMzkzIDgyLjY0MzdaTTU4LjUyOTggODIuNzA5NUM1OS43NDggODIuNzI2NyA2MC44NDA2IDgzLjU3NjEgNjEuMTIzNyA4NC44MjJDNjEuMjU2MiA4NS40MDUyIDYxLjE5MTcgODUuOTgzMSA2MC45NzMgODYuNDkzNUw2MS4wMTg5IDg2LjU1MjdMNTQuODg4IDEwMS40MzlDNDkuMTU1OSA5Ny43NDMyIDQ0LjU5MDQgOTIuMjA5OSA0Mi4xNDgxIDg1LjQyMDhMNTcuOTczMSA4Mi43MjI3TDU3Ljk5OTMgODIuNzU1NkM1OC4xNzYzIDgyLjcyMjkgNTguMzU1OCA4Mi43MDcxIDU4LjUyOTggODIuNzA5NVpNNzEuODk4NiA4OS4yMzEyQzcyLjMyMjkgODkuMjE1NSA3Mi43NTM0IDg5LjMwMyA3My4xNjI3IDg5LjUwMUM3My42OTkyIDg5Ljc2MDYgNzQuMTEzNiA5MC4xNjkyIDc0LjM3NDUgOTAuNjU5Mkg3NC40MzM0TDgyLjIzNDYgMTA0LjgyMUM4MS4yMjIxIDEwNS4xNjIgODAuMTgxMyAxMDUuNDU0IDc5LjExNjcgMTA1LjY5N0M3My4xNTA1IDEwNy4wNTggNjcuMjAzMiAxMDYuNjQ1IDYxLjgxOCAxMDQuODAyTDY5LjU5OTUgOTAuNjY1OEg2OS42MTI2QzcwLjA3OTUgODkuNzg4OCA3MC45NjUgODkuMjY1NiA3MS44OTg2IDg5LjIzMTJaIiBmaWxsPSJ3aGl0ZSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjI1Ii8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfNjgxXzI4NDUiIHgxPSIxMCIgeTE9IjE1LjUiIHgyPSIxNDQiIHkyPSIxMzEuNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNEQ4N0ZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzA1NDdEMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "nodeGroups" + ], + [ + "spec", + "version" + ], + [ + "spec", + "host" + ], + [ + "spec", + "addons" + ], + [ + "spec", + "addons", + "certManager" + ], + [ + "spec", + "addons", + "certManager", + "enabled" + ], + [ + "spec", + "addons", + "certManager", + "valuesOverride" + ], + [ + "spec", + "addons", + "cilium" + ], + [ + "spec", + "addons", + "cilium", + "valuesOverride" + ], + [ + "spec", + "addons", + "gatewayAPI" + ], + [ + "spec", + "addons", + "gatewayAPI", + "enabled" + ], + [ + "spec", + "addons", + "ingressNginx" + ], + [ + "spec", + "addons", + "ingressNginx", + "enabled" + ], + [ + "spec", + "addons", + "ingressNginx", + "exposeMethod" + ], + [ + "spec", + "addons", + "ingressNginx", + "hosts" + ], + [ + "spec", + "addons", + "ingressNginx", + "valuesOverride" + ], + [ + "spec", + "addons", + "gpuOperator" + ], + [ + "spec", + "addons", + "gpuOperator", + "enabled" + ], + [ + "spec", + "addons", + "gpuOperator", + "valuesOverride" + ], + [ + "spec", + "addons", + "hami" + ], + [ + "spec", + "addons", + "hami", + "enabled" + ], + [ + "spec", + "addons", + "hami", + "valuesOverride" + ], + [ + "spec", + "addons", + "fluxcd" + ], + [ + "spec", + "addons", + "fluxcd", + "enabled" + ], + [ + "spec", + "addons", + "fluxcd", + "valuesOverride" + ], + [ + "spec", + "addons", + "monitoringAgents" + ], + [ + "spec", + "addons", + "monitoringAgents", + "enabled" + ], + [ + "spec", + "addons", + "monitoringAgents", + "valuesOverride" + ], + [ + "spec", + "addons", + "verticalPodAutoscaler" + ], + [ + "spec", + "addons", + "verticalPodAutoscaler", + "valuesOverride" + ], + [ + "spec", + "addons", + "velero" + ], + [ + "spec", + "addons", + "velero", + "enabled" + ], + [ + "spec", + "addons", + "velero", + "valuesOverride" + ], + [ + "spec", + "addons", + "coredns" + ], + [ + "spec", + "addons", + "coredns", + "valuesOverride" + ], + [ + "spec", + "addons", + "ouroboros" + ], + [ + "spec", + "addons", + "ouroboros", + "enabled" + ], + [ + "spec", + "addons", + "ouroboros", + "valuesOverride" + ], + [ + "spec", + "controlPlane" + ], + [ + "spec", + "controlPlane", + "replicas" + ], + [ + "spec", + "controlPlane", + "apiServer" + ], + [ + "spec", + "controlPlane", + "apiServer", + "resources" + ], + [ + "spec", + "controlPlane", + "apiServer", + "resourcesPreset" + ], + [ + "spec", + "controlPlane", + "apiServer", + "extraArgs" + ], + [ + "spec", + "controlPlane", + "apiServer", + "extraVolumes" + ], + [ + "spec", + "controlPlane", + "apiServer", + "extraVolumeMounts" + ], + [ + "spec", + "controlPlane", + "controllerManager" + ], + [ + "spec", + "controlPlane", + "controllerManager", + "resources" + ], + [ + "spec", + "controlPlane", + "controllerManager", + "resourcesPreset" + ], + [ + "spec", + "controlPlane", + "scheduler" + ], + [ + "spec", + "controlPlane", + "scheduler", + "resources" + ], + [ + "spec", + "controlPlane", + "scheduler", + "resourcesPreset" + ], + [ + "spec", + "controlPlane", + "konnectivity" + ], + [ + "spec", + "controlPlane", + "konnectivity", + "server" + ], + [ + "spec", + "controlPlane", + "konnectivity", + "server", + "resources" + ], + [ + "spec", + "controlPlane", + "konnectivity", + "server", + "resourcesPreset" + ], + [ + "spec", + "images" + ], + [ + "spec", + "images", + "waitForKubeconfig" + ], + [ + "spec", + "images", + "kubectl" + ], + [ + "spec", + "images", + "talosCsrSigner" + ], + [ + "spec", + "talos" + ], + [ + "spec", + "talos", + "version" + ], + [ + "spec", + "talos", + "schematicID" + ], + [ + "spec", + "talos", + "imageFactoryURL" + ], + [ + "spec", + "talos", + "installerRepository" + ], + [ + "spec", + "nodeHealthCheck" + ], + [ + "spec", + "nodeHealthCheck", + "maxUnhealthy" + ], + [ + "spec", + "nodeHealthCheck", + "nodeStartupTimeout" + ], + [ + "spec", + "oidc" + ], + [ + "spec", + "oidc", + "mode" + ], + [ + "spec", + "oidc", + "customConfig" + ], + [ + "spec", + "oidc", + "customConfig", + "config" + ], + [ + "spec", + "oidc", + "customConfig", + "secretRef" + ], + [ + "spec", + "oidc", + "customConfig", + "secretRef", + "name" + ], + [ + "spec", + "oidc", + "users" + ] + ], + "plural": "Kubernetes", + "singular": "Kubernetes", + "tags": [ + "compute" + ], + "weight": 40 + }, + "ingresses": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "kubernetes-{{ .name }}", + "kubernetes-{{ .name }}-ingress-nginx" + ] + } + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-kubernetes-application-kubevirt-kubernetes", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "kubernetes-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "kubernetes-{{ .name }}-admin-kubeconfig", + "kubernetes-{{ .name }}-oidc-kubeconfig" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "kubernetes-{{ .name }}", + "kubernetes-{{ .name }}-ingress-nginx" + ] + }, + { + "matchLabels": { + "cluster.x-k8s.io/cluster-name": "kubernetes-{{ .name }}" + } + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "mariadb-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:26Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "mariadb-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "mariadb", + "resourceVersion": "36001", + "uid": "6c085b58-bf0d-4004-8cef-9e1d11840ae8" + }, + "spec": { + "application": { + "kind": "MariaDB", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of MariaDB replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each MariaDB replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"version\":{\"description\":\"MariaDB major.minor version to deploy\",\"type\":\"string\",\"default\":\"v11.8\",\"enum\":[\"v11.8\",\"v11.4\",\"v10.11\",\"v10.6\"]},\"users\":{\"description\":\"Users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"required\":[\"maxUserConnections\",\"password\"],\"properties\":{\"maxUserConnections\":{\"description\":\"Maximum number of connections.\",\"type\":\"integer\"},\"password\":{\"description\":\"Password for the user.\",\"type\":\"string\"}}}},\"databases\":{\"description\":\"Databases configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"roles\":{\"description\":\"Roles assigned to users.\",\"type\":\"object\",\"properties\":{\"admin\":{\"description\":\"List of users with admin privileges.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"readonly\":{\"description\":\"List of users with read-only privileges.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}}}},\"backup\":{\"description\":\"DEPRECATED: Backup configuration. Prefer the BackupClass / Plan flow under examples/backups/mariadb/.\",\"type\":\"object\",\"default\":{},\"required\":[\"cleanupStrategy\",\"enabled\",\"resticPassword\",\"s3AccessKey\",\"s3Bucket\",\"s3Region\",\"s3SecretKey\",\"schedule\"],\"properties\":{\"cleanupStrategy\":{\"description\":\"DEPRECATED: Retention strategy for cleaning up old backups.\",\"type\":\"string\",\"default\":\"--keep-last=3 --keep-daily=3 --keep-within-weekly=1m\"},\"enabled\":{\"description\":\"DEPRECATED: Enable regular backups (default: false).\",\"type\":\"boolean\",\"default\":false},\"resticPassword\":{\"description\":\"DEPRECATED: Password for Restic backup encryption.\",\"type\":\"string\",\"default\":\"\u003cpassword\u003e\"},\"s3AccessKey\":{\"description\":\"DEPRECATED: Access key for S3 authentication.\",\"type\":\"string\",\"default\":\"\u003cyour-access-key\u003e\"},\"s3Bucket\":{\"description\":\"DEPRECATED: S3 bucket used for storing backups.\",\"type\":\"string\",\"default\":\"s3.example.org/mariadb-backups\"},\"s3Region\":{\"description\":\"DEPRECATED: AWS S3 region where backups are stored.\",\"type\":\"string\",\"default\":\"us-east-1\"},\"s3SecretKey\":{\"description\":\"DEPRECATED: Secret key for S3 authentication.\",\"type\":\"string\",\"default\":\"\u003cyour-secret-key\u003e\"},\"schedule\":{\"description\":\"DEPRECATED: Cron schedule for automated backups.\",\"type\":\"string\",\"default\":\"0 2 * * *\"}}}}}", + "plural": "mariadbs", + "singular": "mariadb" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed MariaDB service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9Ii0wLjAwMTk1MzEyIiB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgcng9IjI0IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfNjgzXzI5MzApIi8+CjxwYXRoIGQ9Ik0xMzMuMTkxIDI5LjAwMjJDMTMxLjIxMyAyOS4wNjU0IDEzMS44MzkgMjkuNjM1NCAxMjcuNTY0IDMwLjY4NzNDMTIzLjI0OCAzMS43NDk2IDExNy45NzUgMzEuNDIzOSAxMTMuMzI3IDMzLjM3MzNDOTkuNDUxNiAzOS4xOTI0IDk2LjY2NzYgNTkuMDgxMyA4NC4wNTM1IDY2LjIwNTlDNzQuNjI0NyA3MS41MzE4IDY1LjExMiA3MS45NTY1IDU2LjU1OTQgNzQuNjM2NUM1MC45Mzg5IDc2LjM5OSA0NC43OTA2IDgwLjAxMzUgMzkuNjk4MiA4NC40MDE4QzM1Ljc0NTUgODcuODA5MyAzNS42NDIzIDkwLjgwNTQgMzEuNTEyMyA5NS4wNzkxQzI3LjA5NDcgOTkuNjUwNCAxMy45NTUxIDk1LjE1NjQgOCAxMDIuMTUzQzkuOTE4MzUgMTA0LjA5MyAxMC43NTk0IDEwNC42MzYgMTQuNTM5OCAxMDQuMTMzQzEzLjc1NzEgMTA1LjYxNiA5LjE0MzMyIDEwNi44NjYgMTAuMDQ2NSAxMDkuMDQ5QzEwLjk5NjggMTExLjM0NSAyMi4xNTExIDExMi45MDEgMzIuMjkwOCAxMDYuNzhDMzcuMDEzMSAxMDMuOTI5IDQwLjc3NDMgOTkuODE5MyA0OC4xMjg4IDk4LjgzODRDNTcuNjQ1OSA5Ny41Njk5IDY4LjYwOTMgOTkuNjUyIDc5LjYyNjggMTAxLjI0MUM3Ny45OTMyIDEwNi4xMTIgNzQuNzEzMyAxMDkuMzUxIDcyLjA4NiAxMTMuMjMxQzcxLjI3MjQgMTE0LjEwNyA3My43MjAyIDExNC4yMDUgNzYuNTEyNiAxMTMuNjc1QzgxLjUzNTkgMTEyLjQzMyA4NS4xNTYxIDExMS40MzMgODguOTQ3MiAxMDkuMjI3QzkzLjYwNDcgMTA2LjUxNSA5NC4zMTA0IDk5LjU2MzkgMTAwLjAyNSA5OC4wNTk5QzEwMy4yMDkgMTAyLjk1NCAxMTEuODY5IDEwNC4xMSAxMTcuMjQyIDEwMC4xOTVDMTEyLjUyNyA5OC44NjA3IDExMS4yMjQgODguODI0NCAxMTIuODE1IDg0LjQwMThDMTE0LjMyMyA4MC4yMTU2IDExNS44MTMgNzMuNTE5MiAxMTcuMzMxIDY3Ljk4NTVDMTE4Ljk2MSA2Mi4wNDI1IDExOS41NjIgNTQuNTUxOSAxMjEuNTM1IDUxLjUyNDdDMTI0LjUwMyA0Ni45NzAxIDEyNy43ODMgNDUuNDA2IDEzMC42MyA0Mi44Mzc3QzEzMy40NzcgNDAuMjY5NSAxMzYuMDgzIDM3Ljc2OTQgMTM1Ljk5OCAzMS44OTI3QzEzNS45NyAyOS45OTk4IDEzNC45OTIgMjguOTQ0NyAxMzMuMTkxIDI5LjAwMjJaIiBmaWxsPSIjMDQyNDRFIi8+CjxwYXRoIGQ9Ik0xMjguOTUzIDMyLjQ4NDRDMTI5LjQyNyAzNC4xMDA0IDEzMC4xNjggMzQuODQyMSAxMzMuMzc1IDM1LjEzODdDMTMyLjkwNiAzOS4yMDQxIDEzMC4xOTUgNDEuNDI3NiAxMjcuMTU0IDQzLjU2MTFDMTI0LjQ3OSA0NS40Mzc2IDEyMS41NDcgNDcuMjQ0NSAxMTkuNjY0IDUwLjE3NTdDMTE3LjczNCA1My4xNzg1IDExNi41MDkgNjMuNDU1NCAxMTMuNTE3IDczLjYwNDRDMTEwLjkzMSA4Mi4zNzM4IDEwNy4wMjUgOTEuMDQ0NSAxMDAuMjA0IDk0Ljg0MzdDOTkuNDkxOSA5My4wNTAyIDEwMC4yOTUgODkuNzQgOTguODc4IDg4LjY1MkM5Ny45NjExIDkxLjI2NzQgOTYuOTI0MiA5My43NjI3IDk1LjcwOTggOTYuMDgyMUM5MS43MDc3IDEwMy43MzIgODUuNzgyMiAxMDkuNDU5IDc1Ljg4MDEgMTExLjIwOEM4MC41Nzg1IDEwNC44NSA4NS4wNzEgOTguMjg0NCA4NS4xNjgzIDg3LjMyNjJDODEuODYxNyA4OC4wNDE3IDgxLjkzMTkgOTUuODUyMiA3OC41MzQ1IDk3Ljk0MDJDNzYuMzU2MyA5OC4xNzcyIDc0LjE0OTggOTguMTc1OCA3MS45MjkxIDk4LjA0MjRDNjIuODA5MSA5Ny40OTU5IDUzLjQ1MzUgOTQuNzU0OSA0NC45MjE5IDk3LjQ5MjNDMzkuMTEyOCA5OS4zNTY4IDM0LjM2MTkgMTAzLjc1NSAyOS40NDI4IDEwNS44ODhDMjMuNjYxNCAxMDguMzk2IDE5LjI4MzEgMTA5LjQyNyAxMi4wODM2IDEwOC4zOTZDMTEuMTY5NSAxMDcuMTY0IDE3LjM1MjYgMTA1LjU3NSAxNi45ODI5IDEwMi45MDJDMTQuMTY1MyAxMDIuNTkgMTIuNTI5MyAxMDMuMjczIDEwLjA4MDEgMTAyLjE2QzEwLjM1MDUgMTAxLjY2MiAxMC43NDc5IDEwMS4yNDcgMTEuMjQ4MyAxMDAuOTAxQzE1LjczNzMgOTcuNzk0IDI4LjQ4ODIgMTAwLjE2NyAzMS45MDA2IDk2LjgxNjdDMzQuMDA3IDk0Ljc1IDM1LjM4ODkgOTIuNTg2NyAzNi44MTk3IDkwLjQ4MzhDMzguMjA3MiA4OC40NDM0IDM5LjY0MTUgODYuNDU5NyA0MS44MjY4IDg0LjY3MTlDNDIuNjMzNyA4NC4wMTE4IDQzLjUxMSA4My4zNTk2IDQ0LjQ0MjEgODIuNzIzQzQ4LjE2NiA4MC4xNzQzIDUyLjc3MjkgNzcuODYyOCA1Ny4zMDY2IDc2LjI2OTRDNjMuNDgyNiA3NC4wOTg0IDY5Ljc0MSA3My45MTk1IDc2LjMyMzcgNzEuNDA0M0M4MC4zOTA0IDY5Ljg1IDg0LjgxMjcgNjcuOTMwMiA4OC40MTc0IDY1LjI0MzlDODkuMjczMyA2NC42MDUxIDkwLjA4MzEgNjMuOTI0NSA5MC44MzE5IDYzLjE5NDlDMTAxLjEyNSA1My4xNjA4IDEwMy4xNjUgMzUuNDYxIDExOS4yMjQgMzMuODExNkMxMjEuMTY2IDMzLjYxMjEgMTIyLjc1NiAzMy42NzY3IDEyNC4yMDMgMzMuNjMyN0MxMjUuODcxIDMzLjU4MyAxMjcuMzQ3IDMzLjM4OTMgMTI4Ljk1MyAzMi40ODQ0Wk0xMDkuMzc1IDg5LjEzMzlDMTA5LjU2NyA5Mi4yMDEzIDExMS4zNDggOTguMjg3MiAxMTIuOTIgOTkuNzY2M0MxMDkuODQxIDEwMC41MTUgMTA0LjUzNyA5OS4yNzggMTAzLjE3NyA5Ny4xMDYyQzEwMy44NzYgOTMuOTcwNyAxMDcuNTE0IDkxLjEwNDEgMTA5LjM3NSA4OS4xMzM5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTEzMC4xMDkgMzUuOTE4N0MxMjkuNDkgMzcuMjE2OSAxMjguMzA1IDM4Ljg5MDggMTI4LjMwNSA0Mi4xOTU2QzEyOC4zIDQyLjc2MyAxMjcuODc1IDQzLjE1MTcgMTI3Ljg2NyA0Mi4yNzdDMTI3Ljg5OSAzOS4wNDcgMTI4Ljc1NCAzNy42NTA3IDEyOS42NjIgMzUuODE1NUMxMzAuMDg1IDM1LjA2MzYgMTMwLjMzOSAzNS4zNzM4IDEzMC4xMDkgMzUuOTE4N1pNMTI5LjQ4NiAzNS40Mjk3QzEyOC43NTYgMzYuNjY4NCAxMjYuOTk4IDM4LjkyNzggMTI2LjcwNyA0Mi4yMjAzQzEyNi42NTMgNDIuNzg0OCAxMjYuMTk0IDQzLjEzNDMgMTI2LjI2NCA0Mi4yNjE4QzEyNi41ODEgMzkuMDQ3NyAxMjcuOTg2IDM3LjAzNiAxMjkuMDUyIDM1LjI4NzNDMTI5LjUzNiAzNC41NzYxIDEyOS43NjMgMzQuOTA3NCAxMjkuNDg2IDM1LjQyOTdaTTEyOC45MTggMzQuNzgxN0MxMjguMDg2IDM1Ljk1NDMgMTI1LjM4IDM4LjY2NzggMTI0LjgxNCA0MS45MjQ3QzEyNC43MTIgNDIuNDgxOSAxMjQuMjI1IDQyLjc5MjggMTI0LjM2OCA0MS45MjlDMTI0Ljk1NCAzOC43NTIgMTI3LjI4NyAzNi4yNTUgMTI4LjQ5NiAzNC42MDM3QzEyOS4wMzggMzMuOTM0NiAxMjkuMjM3IDM0LjI4NCAxMjguOTE4IDM0Ljc4MTdaTTEyOC40MTEgMzQuMDU4OEwxMjguMTM3IDM0LjM0OTlDMTI2LjkyNyAzNS42NDcyIDEyNC4xMTYgMzguODExNCAxMjMuMTc5IDQxLjcwNzRDMTIyLjk5OSA0Mi4yNDUgMTIyLjQ3NCA0Mi40ODQ4IDEyMi43MzcgNDEuNjQ5M0MxMjMuNzYzIDM4LjU4NjQgMTI2LjU4OSAzNS4yODczIDEyOC4wMTggMzMuODIyN0MxMjguNjUgMzMuMjM2NCAxMjguNzk2IDMzLjYxMDYgMTI4LjQxMSAzNC4wNTg4Wk0xMTMuODg2IDQwLjYxNjJDMTE0LjUxMyAzNy45MjMxIDExNi42MDcgMzYuNjk2IDEyMC4yMjMgMzYuOTk1M0MxMjEuMDk2IDQxLjAxNTEgMTE2LjIxMyA0Mi42MzY2IDExMy44ODYgNDAuNjE2MloiIGZpbGw9IiMwNDI0NEUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl82ODNfMjkzMCIgeDE9IjE0MC41IiB5MT0iMTQxIiB4Mj0iNS45OTk5OSIgeTI9Ii01LjUwMjI4ZS0wNiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjQzQ5QTZDIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0U3QkY5MyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "version" + ], + [ + "spec", + "users" + ], + [ + "spec", + "databases" + ], + [ + "spec", + "backup" + ], + [ + "spec", + "backup", + "enabled" + ], + [ + "spec", + "backup", + "s3Region" + ], + [ + "spec", + "backup", + "s3Bucket" + ], + [ + "spec", + "backup", + "schedule" + ], + [ + "spec", + "backup", + "cleanupStrategy" + ], + [ + "spec", + "backup", + "s3AccessKey" + ], + [ + "spec", + "backup", + "s3SecretKey" + ], + [ + "spec", + "backup", + "resticPassword" + ] + ], + "plural": "MariaDB", + "singular": "MariaDB", + "tags": [ + "database" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-mariadb-application-default-mariadb", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "mariadb-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "mariadb-{{ .name }}-credentials" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "mariadb-{{ .name }}", + "mariadb-{{ .name }}-primary", + "mariadb-{{ .name }}-secondary" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "mongodb-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:27Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "mongodb-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "mongodb", + "resourceVersion": "36065", + "uid": "6f01defe-409d-4d39-a4a1-748f13d186cb" + }, + "spec": { + "application": { + "kind": "MongoDB", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of MongoDB replicas in replica set.\",\"type\":\"integer\",\"default\":3},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each MongoDB replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"version\":{\"description\":\"MongoDB major version to deploy.\",\"type\":\"string\",\"default\":\"v8\",\"enum\":[\"v8\",\"v7\",\"v6\"]},\"sharding\":{\"description\":\"Enable sharded cluster mode. When disabled, deploys a replica set.\",\"type\":\"boolean\",\"default\":false},\"shardingConfig\":{\"description\":\"Configuration for sharded cluster mode.\",\"type\":\"object\",\"default\":{},\"required\":[\"configServerSize\",\"configServers\",\"mongos\"],\"properties\":{\"configServerSize\":{\"description\":\"PVC size for config servers.\",\"default\":\"3Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"configServers\":{\"description\":\"Number of config server replicas.\",\"type\":\"integer\",\"default\":3},\"mongos\":{\"description\":\"Number of mongos router replicas.\",\"type\":\"integer\",\"default\":2},\"shards\":{\"description\":\"List of shard configurations.\",\"type\":\"array\",\"default\":[{\"name\":\"rs0\",\"replicas\":3,\"size\":\"10Gi\"}],\"items\":{\"type\":\"object\",\"required\":[\"name\",\"replicas\",\"size\"],\"properties\":{\"name\":{\"description\":\"Shard name.\",\"type\":\"string\"},\"replicas\":{\"description\":\"Number of replicas in this shard.\",\"type\":\"integer\"},\"size\":{\"description\":\"PVC size for this shard.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}}},\"users\":{\"description\":\"Users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"password\":{\"description\":\"Password for the user (auto-generated if omitted).\",\"type\":\"string\"}}}},\"databases\":{\"description\":\"Databases configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"roles\":{\"description\":\"Roles assigned to users.\",\"type\":\"object\",\"properties\":{\"admin\":{\"description\":\"List of users with admin privileges (readWrite + dbAdmin).\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"readonly\":{\"description\":\"List of users with read-only privileges.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}}}},\"backup\":{\"description\":\"Backup configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\"],\"properties\":{\"destinationPath\":{\"description\":\"Destination path for backups (e.g. s3://bucket/path/).\",\"type\":\"string\",\"default\":\"s3://bucket/path/to/folder/\"},\"enabled\":{\"description\":\"Enable regular backups.\",\"type\":\"boolean\",\"default\":false},\"endpointURL\":{\"description\":\"S3 endpoint URL for uploads.\",\"type\":\"string\",\"default\":\"http://minio-gateway-service:9000\"},\"retentionPolicy\":{\"description\":\"Retention policy (e.g. \\\"30d\\\").\",\"type\":\"string\",\"default\":\"30d\"},\"s3AccessKey\":{\"description\":\"Access key for S3 authentication.\",\"type\":\"string\",\"default\":\"\"},\"s3SecretKey\":{\"description\":\"Secret key for S3 authentication.\",\"type\":\"string\",\"default\":\"\"},\"schedule\":{\"description\":\"Cron schedule for automated backups.\",\"type\":\"string\",\"default\":\"0 2 * * *\"}}},\"bootstrap\":{\"description\":\"Bootstrap configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"backupName\",\"enabled\"],\"properties\":{\"backupName\":{\"description\":\"Name of backup to restore from.\",\"type\":\"string\",\"default\":\"\"},\"enabled\":{\"description\":\"Whether to restore from a backup.\",\"type\":\"boolean\",\"default\":false},\"recoveryTime\":{\"description\":\"Timestamp for point-in-time recovery; empty means latest.\",\"type\":\"string\",\"default\":\"\"}}}}}", + "plural": "mongodbs", + "singular": "mongodb" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed MongoDB service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF8zMzBfNDg5ODEpIi8+CjxwYXRoIGQ9Ik05NS4xMzg3IDYxLjQwMjhDODkuNjI3NiAzNy4yMjc1IDc2LjYwMzIgMjkuMjc4NSA3NS4yMDA3IDI2LjI0MTZDNzMuNjY3IDI0LjA5OSA3Mi4xMTI5IDIwLjI4NzkgNzIuMTEyOSAyMC4yODc5QzcyLjA4NzMgMjAuMjIzNiA3Mi4wNDY0IDIwLjExMDEgNzEuOTk4NyAyMEM3MS44NDAyIDIyLjE0MjYgNzEuNzU4NCAyMi45NjkyIDY5LjcyMDMgMjUuMTMwNUM2Ni41NjQzIDI3LjU4MzEgNTAuMzcyIDQxLjA4NzYgNDkuMDU0NyA2OC41NTRDNDcuODI2MSA5NC4xNzA4IDY3LjY3MiAxMDkuNDM1IDcwLjM1NiAxMTEuMzgxTDcwLjY2MSAxMTEuNTk2VjExMS41NzhDNzAuNjc4IDExMS43MDcgNzEuNTEzIDExNy42NzUgNzIuMDk5MyAxMjRINzQuMjAyMUM3NC42OTU1IDExOS41MjkgNzUuNDM1MSAxMTUuMDg5IDc2LjQxNzUgMTEwLjY5OUw3Ni41ODc5IDExMC41ODlDNzcuNzg4NCAxMDkuNzMzIDc4LjkzMzEgMTA4LjgwMiA4MC4wMTQ4IDEwNy44MDJMODAuMTM3NSAxMDcuNjkyQzg1Ljg0MjggMTAyLjQ1MyA5Ni4wOTk4IDkwLjMzNjEgOTUuOTk5MyA3MS4wMTY4Qzk1Ljk3OCA2Ny43OTQxIDk1LjY5MDIgNjQuNTc4NiA5NS4xMzg3IDYxLjQwMjhaTTcxLjg3NiA5Ni45MTgxQzcxLjg3NiA5Ni45MTgxIDcxLjg3NiA2MC45ODk2IDczLjA2ODkgNjAuOTk2M0M3My45OTkzIDYwLjk5NjMgNzUuMjA0MSAxMDcuMzQgNzUuMjA0MSAxMDcuMzRDNzMuNTQ3NyAxMDcuMTQyIDcxLjg3NiA5OS43MTI4IDcxLjg3NiA5Ni45MTgxWiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQwX3JhZGlhbF8zMzBfNDg5ODEiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS4zMjI5OGUtMDUgLTcuNTAwMDEpIHJvdGF0ZSg0NC43MTc4KSBzY2FsZSgyMTUuMzE3IDMxMi40NTUpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzI1RkY4MCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMxM0FBNTIiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "version" + ], + [ + "spec", + "sharding" + ], + [ + "spec", + "shardingConfig" + ], + [ + "spec", + "shardingConfig", + "configServers" + ], + [ + "spec", + "shardingConfig", + "configServerSize" + ], + [ + "spec", + "shardingConfig", + "mongos" + ], + [ + "spec", + "shardingConfig", + "shards" + ], + [ + "spec", + "users" + ], + [ + "spec", + "databases" + ], + [ + "spec", + "backup" + ], + [ + "spec", + "backup", + "enabled" + ], + [ + "spec", + "backup", + "schedule" + ], + [ + "spec", + "backup", + "retentionPolicy" + ], + [ + "spec", + "backup", + "destinationPath" + ], + [ + "spec", + "backup", + "endpointURL" + ], + [ + "spec", + "backup", + "s3AccessKey" + ], + [ + "spec", + "backup", + "s3SecretKey" + ], + [ + "spec", + "bootstrap" + ], + [ + "spec", + "bootstrap", + "enabled" + ], + [ + "spec", + "bootstrap", + "recoveryTime" + ], + [ + "spec", + "bootstrap", + "backupName" + ] + ], + "plural": "MongoDB Instances", + "singular": "MongoDB", + "tags": [ + "database" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-mongodb-application-default-mongodb", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "mongodb-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "mongodb-{{ .name }}-credentials" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "mongodb-{{ .name }}-rs0", + "mongodb-{{ .name }}-mongos", + "mongodb-{{ .name }}-external" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "monitoring-rd", + "meta.helm.sh/release-namespace": "cozy-system", + "release.cozystack.io/helm-install-timeout": "15m" + }, + "creationTimestamp": "2026-08-12T10:13:25Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "monitoring-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "monitoring", + "resourceVersion": "35923", + "uid": "0abe2ed7-534f-4d5b-9799-4a344b025c3d" + }, + "spec": { + "application": { + "kind": "Monitoring", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"host\":{\"description\":\"The hostname used to access Grafana externally (defaults to 'grafana' subdomain for the tenant host).\",\"type\":\"string\",\"default\":\"\"},\"metricsStorages\":{\"description\":\"Configuration of metrics storage instances.\",\"type\":\"array\",\"default\":[{\"deduplicationInterval\":\"15s\",\"name\":\"shortterm\",\"retentionPeriod\":\"3d\",\"storage\":\"10Gi\",\"storageClassName\":\"\"},{\"deduplicationInterval\":\"5m\",\"name\":\"longterm\",\"retentionPeriod\":\"14d\",\"storage\":\"10Gi\",\"storageClassName\":\"\"}],\"items\":{\"type\":\"object\",\"required\":[\"deduplicationInterval\",\"name\",\"retentionPeriod\",\"storage\"],\"properties\":{\"deduplicationInterval\":{\"description\":\"Deduplication interval for metrics.\",\"type\":\"string\"},\"name\":{\"description\":\"Name of the storage instance.\",\"type\":\"string\"},\"retentionPeriod\":{\"description\":\"Retention period for metrics.\",\"type\":\"string\"},\"storage\":{\"description\":\"Persistent volume size.\",\"type\":\"string\",\"default\":\"10Gi\"},\"storageClassName\":{\"description\":\"StorageClass used for the data.\",\"type\":\"string\"},\"vminsert\":{\"description\":\"Configuration for vminsert.\",\"type\":\"object\",\"properties\":{\"maxAllowed\":{\"description\":\"Maximum allowed resources.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"CPU limit.\",\"default\":1,\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory limit.\",\"default\":\"1Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"minAllowed\":{\"description\":\"Minimum guaranteed resources.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"CPU request.\",\"default\":\"100m\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory request.\",\"default\":\"256Mi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}},\"vmselect\":{\"description\":\"Configuration for vmselect.\",\"type\":\"object\",\"properties\":{\"maxAllowed\":{\"description\":\"Maximum allowed resources.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"CPU limit.\",\"default\":1,\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory limit.\",\"default\":\"1Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"minAllowed\":{\"description\":\"Minimum guaranteed resources.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"CPU request.\",\"default\":\"100m\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory request.\",\"default\":\"256Mi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}},\"vmstorage\":{\"description\":\"Configuration for vmstorage.\",\"type\":\"object\",\"properties\":{\"maxAllowed\":{\"description\":\"Maximum allowed resources.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"CPU limit.\",\"default\":1,\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory limit.\",\"default\":\"1Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"minAllowed\":{\"description\":\"Minimum guaranteed resources.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"CPU request.\",\"default\":\"100m\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory request.\",\"default\":\"256Mi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}}}}},\"logsStorages\":{\"description\":\"Configuration of logs storage instances.\",\"type\":\"array\",\"default\":[{\"name\":\"generic\",\"retentionPeriod\":\"1\",\"storage\":\"10Gi\",\"storageClassName\":\"replicated\"}],\"items\":{\"type\":\"object\",\"required\":[\"name\",\"retentionPeriod\",\"storage\",\"storageClassName\"],\"properties\":{\"name\":{\"description\":\"Name of the storage instance.\",\"type\":\"string\"},\"retentionPeriod\":{\"description\":\"Retention period for logs.\",\"type\":\"string\",\"default\":\"1\"},\"storage\":{\"description\":\"Persistent volume size.\",\"type\":\"string\",\"default\":\"10Gi\"},\"storageClassName\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"replicated\"}}}},\"alerta\":{\"description\":\"Configuration for the Alerta service.\",\"type\":\"object\",\"default\":{},\"properties\":{\"alerts\":{\"description\":\"Alert routing configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"slack\":{\"description\":\"Configuration for Slack alerts.\",\"type\":\"object\",\"default\":{},\"required\":[\"url\"],\"properties\":{\"disabledSeverity\":{\"description\":\"List of severities without alerts (e.g. [\\\"informational\\\",\\\"warning\\\"]).\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"url\":{\"description\":\"Configuration uri for Slack alerts.\",\"type\":\"string\",\"default\":\"\"}}},\"telegram\":{\"description\":\"Configuration for Telegram alerts.\",\"type\":\"object\",\"default\":{},\"required\":[\"chatID\",\"token\"],\"properties\":{\"chatID\":{\"description\":\"Telegram chat ID(s), separated by commas.\",\"type\":\"string\",\"default\":\"\"},\"disabledSeverity\":{\"description\":\"List of severities without alerts (e.g. [\\\"informational\\\",\\\"warning\\\"]).\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"token\":{\"description\":\"Telegram bot token.\",\"type\":\"string\",\"default\":\"\"}}}}},\"resources\":{\"description\":\"Resource configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"limits\":{\"description\":\"Resource limits.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU limit.\",\"default\":1,\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory limit.\",\"default\":\"1Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"requests\":{\"description\":\"Resource requests.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU request.\",\"default\":\"100m\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory request.\",\"default\":\"256Mi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}},\"storage\":{\"description\":\"Persistent volume size for the database.\",\"type\":\"string\",\"default\":\"10Gi\"},\"storageClassName\":{\"description\":\"StorageClass used for the database.\",\"type\":\"string\",\"default\":\"\"}}},\"grafana\":{\"description\":\"Configuration for Grafana.\",\"type\":\"object\",\"default\":{},\"properties\":{\"db\":{\"description\":\"Database configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"size\":{\"description\":\"Persistent volume size for the database.\",\"type\":\"string\",\"default\":\"10Gi\"}}},\"resources\":{\"description\":\"Resource configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"limits\":{\"description\":\"Resource limits.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU limit.\",\"default\":1,\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory limit.\",\"default\":\"1Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"requests\":{\"description\":\"Resource requests.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU request.\",\"default\":\"100m\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory request.\",\"default\":\"256Mi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}}}},\"vmagent\":{\"description\":\"Configuration for VictoriaMetrics Agent.\",\"type\":\"object\",\"default\":{},\"properties\":{\"externalLabels\":{\"description\":\"External labels applied to all metrics.\",\"type\":\"object\",\"default\":{\"cluster\":\"cozystack\"}},\"remoteWrite\":{\"description\":\"Remote write configuration.\",\"type\":\"object\",\"default\":{\"urls\":[\"http://vminsert-shortterm:8480/insert/0/prometheus\",\"http://vminsert-longterm:8480/insert/0/prometheus\"]}}}},\"oidc\":{\"description\":\"OIDC authentication for the Grafana instance. See docs/oidc-grafana.md for the operator guide.\",\"type\":\"object\",\"default\":{},\"required\":[\"mode\"],\"properties\":{\"customConfig\":{\"description\":\"Tenant-supplied `[auth.generic_oauth]` payload; consumed only when `mode: CustomConfig`.\",\"type\":\"object\",\"default\":{},\"properties\":{\"config\":{\"description\":\"Inline map of `[auth.generic_oauth]` keys. Written verbatim into the Grafana CR `spec.config`. Mutually exclusive with `secretRef.name`.\",\"type\":\"object\",\"default\":{}},\"secretRef\":{\"description\":\"Reference to a Secret holding an `auth.ini` fragment; mounted under `/etc/grafana/oidc` and loaded via `GF_PATHS_CUSTOM_INI`.\",\"type\":\"object\",\"default\":{},\"properties\":{\"name\":{\"description\":\"Name of an existing Secret in the release namespace whose `auth.ini` key holds a ready-made `[auth.generic_oauth]` block. Mutually exclusive with `customConfig.config`.\",\"type\":\"string\",\"default\":\"\"}}}}},\"mode\":{\"description\":\"Identity mode. `None`: no OIDC, only the `grafana-admin-password` Secret works. `System`: trust the platform `cozy` realm via a per-instance confidential client and audience binding; zero-config default. `CustomConfig`: trust a tenant-supplied issuer directly (BYO); `cozy` is not in the path.\",\"type\":\"string\",\"default\":\"None\",\"enum\":[\"None\",\"System\",\"CustomConfig\"]},\"users\":{\"description\":\"Users granted access to this Grafana instance's org. Each entry is reconciled into Grafana org membership + role by a chart-owned post-install/post-upgrade Job. Works for both `System` and `CustomConfig` modes; ignored when `mode: None`. Users not listed here get nothing (no default org role from group mapping).\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"email\",\"role\"],\"properties\":{\"email\":{\"description\":\"Email address matched against the `email` claim from the issuer. The chart pre-provisions a Grafana account with this email so the users-Job can set the org role before the operator's first login (`oauth_allow_insecure_email_lookup = true` glues the two together). Must match a conservative pattern: local part is `[A-Za-z0-9._%+-]+`, domain is `[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}`. Whitespace, quoted literals, and unusual URL-reserved characters are rejected on schema level so the reconcile-Job's shell handling never has to defend against malformed input.\",\"type\":\"string\"},\"role\":{\"description\":\"Grafana org role to bind: `Admin`, `Editor`, or `Viewer`. Applied to the release's Grafana org (`Main Org.`); server-level `GrafanaAdmin` promotion is out of scope for Phase 1. Required — the users-Job POSTs `{loginOrEmail, role}` to `/api/orgs/1/users` and PATCHes `{role}` to converge across re-runs; omitting the field would render `role: \\\"null\\\"` into the body and fail with HTTP 400.\",\"type\":\"string\",\"enum\":[\"Admin\",\"Editor\",\"Viewer\"]}}}}}}}}", + "plural": "monitorings", + "singular": "monitoring" + }, + "dashboard": { + "category": "Administration", + "description": "Monitoring and observability stack", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODdfMzI2OCkiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzY4N18zMjY4KSI+CjxwYXRoIGQ9Ik04OS41MDM5IDExMS43MDdINTQuNDk3QzU0LjE3MjcgMTExLjcwNyA1NC4wMTA4IDExMS4yMjEgNTQuMzM0OSAxMTEuMDU5TDU3LjI1MjIgMTA4Ljk1MkM2MC4zMzE0IDEwNi42ODMgNjEuOTUyMiAxMDIuNjMxIDYwLjk3OTcgOTguNzQxMkg4My4wMjFDODIuMDQ4NSAxMDIuNjMxIDgzLjY2OTMgMTA2LjY4MyA4Ni43NDg1IDEwOC45NTJMODkuNjY1OCAxMTEuMDU5Qzg5Ljk5IDExMS4yMjEgODkuODI3OSAxMTEuNzA3IDg5LjUwMzkgMTExLjcwN1oiIGZpbGw9IiNCMEI2QkIiLz4KPHBhdGggZD0iTTExMy4zMjggOTguNzQxSDMwLjY3MjVDMjcuNTkzMSA5OC43NDEgMjUgOTYuMTQ4IDI1IDkzLjA2ODdWMzMuMTAzMkMyNSAzMC4wMjM5IDI3LjU5MzEgMjcuNDMwNyAzMC42NzI1IDI3LjQzMDdIMTEzLjMyOEMxMTYuNDA3IDI3LjQzMDcgMTE5IDMwLjAyMzcgMTE5IDMzLjEwMzJWOTMuMDY4N0MxMTkgOTYuMTQ4IDExNi40MDcgOTguNzQxIDExMy4zMjggOTguNzQxWiIgZmlsbD0iI0U4RURFRSIvPgo8cGF0aCBkPSJNMTE5IDg0LjE1NDlIMjVWMzMuMTAzMkMyNSAzMC4wMjM5IDI3LjU5MzEgMjcuNDMwNyAzMC42NzI1IDI3LjQzMDdIMTEzLjMyOEMxMTYuNDA3IDI3LjQzMDcgMTE5IDMwLjAyMzcgMTE5IDMzLjEwMzJMMTE5IDg0LjE1NDlaIiBmaWxsPSIjMzg0NTRGIi8+CjxwYXRoIGQ9Ik05MC42Mzc0IDExNi41NjlINTMuMzYxNkM1Mi4wNjUxIDExNi41NjkgNTAuOTMwNyAxMTUuNDM1IDUwLjkzMDcgMTE0LjEzOEM1MC45MzA3IDExMi44NDEgNTIuMDY1MSAxMTEuNzA3IDUzLjM2MTYgMTExLjcwN0g5MC42Mzc0QzkxLjkzMzkgMTExLjcwNyA5My4wNjg0IDExMi44NDEgOTMuMDY4NCAxMTQuMTM4QzkzLjA2ODQgMTE1LjQzNSA5MS45MzM5IDExNi41NjkgOTAuNjM3NCAxMTYuNTY5WiIgZmlsbD0iI0U4RURFRSIvPgo8cGF0aCBkPSJNNTQuMTcyMiAzOC43NzU3SDMzLjEwMzJDMzIuMTMwNyAzOC43NzU3IDMxLjQ4MjQgMzguMTI3NCAzMS40ODI0IDM3LjE1NDlDMzEuNDgyNCAzNi4xODI0IDMyLjEzMDcgMzUuNTM0MiAzMy4xMDMyIDM1LjUzNDJINTQuMTcyMkM1NS4xNDQ3IDM1LjUzNDIgNTUuNzkzIDM2LjE4MjQgNTUuNzkzIDM3LjE1NDlDNTUuNzkyOCAzOC4xMjc0IDU1LjE0NDUgMzguNzc1NyA1NC4xNzIyIDM4Ljc3NTdaIiBmaWxsPSIjREQzNDJFIi8+CjxwYXRoIGQ9Ik02My44OTYzIDQ1LjI1OTFINDEuMjA2N0M0MC4yMzQyIDQ1LjI1OTEgMzkuNTg1OSA0NC42MTA4IDM5LjU4NTkgNDMuNjM4M0MzOS41ODU5IDQyLjY2NTggNDAuMjM0MiA0Mi4wMTc2IDQxLjIwNjcgNDIuMDE3Nkg2My44OTYzQzY0Ljg2ODggNDIuMDE3NiA2NS41MTcxIDQyLjY2NTggNjUuNTE3MSA0My42MzgzQzY1LjUxNzEgNDQuNjEwOCA2NC44Njg4IDQ1LjI1OTEgNjMuODk2MyA0NS4yNTkxWiIgZmlsbD0iIzczODNCRiIvPgo8cGF0aCBkPSJNMzQuNzI0IDQ1LjI1OTFIMzMuMTAzMkMzMi4xMzA3IDQ1LjI1OTEgMzEuNDgyNCA0NC42MTA4IDMxLjQ4MjQgNDMuNjM4M0MzMS40ODI0IDQyLjY2NTggMzIuMTMwNyA0Mi4wMTc2IDMzLjEwMzIgNDIuMDE3NkgzNC43MjRDMzUuNjk2NCA0Mi4wMTc2IDM2LjM0NDcgNDIuNjY1OCAzNi4zNDQ3IDQzLjYzODNDMzYuMzQ0NyA0NC42MTA4IDM1LjY5NjMgNDUuMjU5MSAzNC43MjQgNDUuMjU5MVoiIGZpbGw9IiM0MkIwNUMiLz4KPHBhdGggZD0iTTYzLjg5NjMgMzguNzc1N0g2MC42NTQ5QzU5LjY4MjQgMzguNzc1NyA1OS4wMzQyIDM4LjEyNzQgNTkuMDM0MiAzNy4xNTQ5QzU5LjAzNDIgMzYuMTgyNCA1OS42ODI0IDM1LjUzNDIgNjAuNjU0OSAzNS41MzQySDYzLjg5NjNDNjQuODY4OCAzNS41MzQyIDY1LjUxNzEgMzYuMTgyNCA2NS41MTcxIDM3LjE1NDlDNjUuNTE3MSAzOC4xMjc0IDY0Ljg2ODggMzguNzc1NyA2My44OTYzIDM4Ljc3NTdaIiBmaWxsPSIjRUNCQTE2Ii8+CjxwYXRoIGQ9Ik00Ny42ODkzIDUxLjc0MTNIMzMuMTAzMkMzMi4xMzA3IDUxLjc0MTMgMzEuNDgyNCA1MS4wOTMxIDMxLjQ4MjQgNTAuMTIwNkMzMS40ODI0IDQ5LjE0ODEgMzIuMTMwNyA0OC41IDMzLjEwMzIgNDguNUg0Ny42ODkzQzQ4LjY2MTggNDguNSA0OS4zMTAxIDQ5LjE0ODMgNDkuMzEwMSA1MC4xMjA4QzQ5LjMxMDEgNTEuMDkzMyA0OC42NjE4IDUxLjc0MTMgNDcuNjg5MyA1MS43NDEzWiIgZmlsbD0iI0REMzQyRSIvPgo8cGF0aCBkPSJNNjMuODk2OCA1MS43NDEzSDU0LjE3MjVDNTMuMiA1MS43NDEzIDUyLjU1MTggNTEuMDkzMSA1Mi41NTE4IDUwLjEyMDZDNTIuNTUxOCA0OS4xNDgxIDUzLjIwMDIgNDguNSA1NC4xNzI3IDQ4LjVINjMuODk2OUM2NC44Njk0IDQ4LjUgNjUuNTE3NyA0OS4xNDgzIDY1LjUxNzcgNTAuMTIwOEM2NS41MTc3IDUxLjA5MzMgNjQuODY5MiA1MS43NDEzIDYzLjg5NjggNTEuNzQxM1oiIGZpbGw9IiNFQ0JBMTYiLz4KPHBhdGggZD0iTTU0LjE3MjIgNTguMjI0SDMzLjEwMzJDMzIuMTMwNyA1OC4yMjQgMzEuNDgyNCA1Ny41NzU3IDMxLjQ4MjQgNTYuNjAzMkMzMS40ODI0IDU1LjYzMDcgMzIuMTMwNyA1NC45ODI0IDMzLjEwMzIgNTQuOTgyNEg1NC4xNzIyQzU1LjE0NDcgNTQuOTgyNCA1NS43OTMgNTUuNjMwNyA1NS43OTMgNTYuNjAzMkM1NS43OTMgNTcuNTc1NyA1NS4xNDQ1IDU4LjIyNCA1NC4xNzIyIDU4LjIyNFoiIGZpbGw9IiM0MkIwNUMiLz4KPHBhdGggZD0iTTYzLjg5NjMgNjQuNzA3NEg0MS4yMDY3QzQwLjIzNDIgNjQuNzA3NCAzOS41ODU5IDY0LjA1OTEgMzkuNTg1OSA2My4wODY2QzM5LjU4NTkgNjIuMTE0MSA0MC4yMzQyIDYxLjQ2NTggNDEuMjA2NyA2MS40NjU4SDYzLjg5NjNDNjQuODY4OCA2MS40NjU4IDY1LjUxNzEgNjIuMTE0MSA2NS41MTcxIDYzLjA4NjZDNjUuNTE3MSA2NC4wNTkxIDY0Ljg2ODggNjQuNzA3NCA2My44OTYzIDY0LjcwNzRaIiBmaWxsPSIjRUNCQTE2Ii8+CjxwYXRoIGQ9Ik0zNC43MjQgNjQuNzA3NEgzMy4xMDMyQzMyLjEzMDcgNjQuNzA3NCAzMS40ODI0IDY0LjA1OTEgMzEuNDgyNCA2My4wODY2QzMxLjQ4MjQgNjIuMTE0MSAzMi4xMzA3IDYxLjQ2NTggMzMuMTAzMiA2MS40NjU4SDM0LjcyNEMzNS42OTY0IDYxLjQ2NTggMzYuMzQ0NyA2Mi4xMTQxIDM2LjM0NDcgNjMuMDg2NkMzNi4zNDQ3IDY0LjA1OTEgMzUuNjk2MyA2NC43MDc0IDM0LjcyNCA2NC43MDc0WiIgZmlsbD0iI0REMzQyRSIvPgo8cGF0aCBkPSJNNDcuNjg5MyA3MS4xODk4SDMzLjEwMzJDMzIuMTMwNyA3MS4xODk4IDMxLjQ4MjQgNzAuNTQxNSAzMS40ODI0IDY5LjU2OUMzMS40ODI0IDY4LjU5NjUgMzIuMTMwNyA2Ny45NDgyIDMzLjEwMzIgNjcuOTQ4Mkg0Ny42ODkzQzQ4LjY2MTggNjcuOTQ4MiA0OS4zMTAxIDY4LjU5NjUgNDkuMzEwMSA2OS41NjlDNDkuMzEwMSA3MC41NDE1IDQ4LjY2MTggNzEuMTg5OCA0Ny42ODkzIDcxLjE4OThaIiBmaWxsPSIjNDJCMDVDIi8+CjxwYXRoIGQ9Ik02My44OTY4IDcxLjE4OThINTQuMTcyNUM1My4yIDcxLjE4OTggNTIuNTUxOCA3MC41NDE1IDUyLjU1MTggNjkuNTY5QzUyLjU1MTggNjguNTk2NSA1My4yIDY3Ljk0ODIgNTQuMTcyNSA2Ny45NDgySDYzLjg5NjhDNjQuODY5MiA2Ny45NDgyIDY1LjUxNzUgNjguNTk2NSA2NS41MTc1IDY5LjU2OUM2NS41MTc1IDcwLjU0MTUgNjQuODY5MiA3MS4xODk4IDYzLjg5NjggNzEuMTg5OFoiIGZpbGw9IiM3MzgzQkYiLz4KPHBhdGggZD0iTTU0LjE3MjIgNzcuNjcyMkgzMy4xMDMyQzMyLjEzMDcgNzcuNjcyMiAzMS40ODI0IDc3LjAyMzkgMzEuNDgyNCA3Ni4wNTE0QzMxLjQ4MjQgNzUuMDc4OSAzMi4xMzA3IDc0LjQzMDcgMzMuMTAzMiA3NC40MzA3SDU0LjE3MjJDNTUuMTQ0NyA3NC40MzA3IDU1Ljc5MyA3NS4wNzg5IDU1Ljc5MyA3Ni4wNTE0QzU1Ljc5MjggNzcuMDIzOSA1NS4xNDQ1IDc3LjY3MjIgNTQuMTcyMiA3Ny42NzIyWiIgZmlsbD0iI0VDQkExNiIvPgo8cGF0aCBkPSJNNjMuODk2MyA3Ny42NzIySDYwLjY1NDlDNTkuNjgyNCA3Ny42NzIyIDU5LjAzNDIgNzcuMDIzOSA1OS4wMzQyIDc2LjA1MTRDNTkuMDM0MiA3NS4wNzg5IDU5LjY4MjQgNzQuNDMwNyA2MC42NTQ5IDc0LjQzMDdINjMuODk2M0M2NC44Njg4IDc0LjQzMDcgNjUuNTE3MSA3NS4wNzg5IDY1LjUxNzEgNzYuMDUxNEM2NS41MTcxIDc3LjAyMzkgNjQuODY4OCA3Ny42NzIyIDYzLjg5NjMgNzcuNjcyMloiIGZpbGw9IiM0MkIwNUMiLz4KPHBhdGggZD0iTTEwMS4xNzIgNzcuNjcyMkg4MC4xMDMyQzc5LjEzMDcgNzcuNjcyMiA3OC40ODI0IDc3LjAyMzkgNzguNDgyNCA3Ni4wNTE0Qzc4LjQ4MjQgNzUuMDc4OSA3OS4xMzA3IDc0LjQzMDcgODAuMTAzMiA3NC40MzA3SDEwMS4xNzJDMTAyLjE0NSA3NC40MzA3IDEwMi43OTMgNzUuMDc4OSAxMDIuNzkzIDc2LjA1MTRDMTAyLjc5MyA3Ny4wMjM5IDEwMi4xNDUgNzcuNjcyMiAxMDEuMTcyIDc3LjY3MjJaIiBmaWxsPSIjREQzNDJFIi8+CjxwYXRoIGQ9Ik0xMTAuODk2IDc3LjY3MjJIMTA3LjY1NUMxMDYuNjgyIDc3LjY3MjIgMTA2LjAzNCA3Ny4wMjM5IDEwNi4wMzQgNzYuMDUxNEMxMDYuMDM0IDc1LjA3ODkgMTA2LjY4MiA3NC40MzA3IDEwNy42NTUgNzQuNDMwN0gxMTAuODk2QzExMS44NjkgNzQuNDMwNyAxMTIuNTE3IDc1LjA3ODkgMTEyLjUxNyA3Ni4wNTE0QzExMi41MTcgNzcuMDIzOSAxMTEuODY5IDc3LjY3MjIgMTEwLjg5NiA3Ny42NzIyWiIgZmlsbD0iIzQyQjA1QyIvPgo8cGF0aCBkPSJNNjMuODk2MyA1OC4yMjRINjAuNjU0OUM1OS42ODI0IDU4LjIyNCA1OS4wMzQyIDU3LjU3NTcgNTkuMDM0MiA1Ni42MDMyQzU5LjAzNDIgNTUuNjMwNyA1OS42ODI0IDU0Ljk4MjQgNjAuNjU0OSA1NC45ODI0SDYzLjg5NjNDNjQuODY4OCA1NC45ODI0IDY1LjUxNzEgNTUuNjMwNyA2NS41MTcxIDU2LjYwMzJDNjUuNTE3MSA1Ny41NzU3IDY0Ljg2ODggNTguMjI0IDYzLjg5NjMgNTguMjI0WiIgZmlsbD0iIzczODNCRiIvPgo8cGF0aCBkPSJNMTEyLjUxNyA1MS43NDExQzExMi41MTcgNjAuNjU0OSAxMDUuMjI0IDY3Ljk0OCA5Ni4zMTA0IDY3Ljk0OEM4Ny4zOTY2IDY3Ljk0OCA4MC4xMDM1IDYwLjY1NDkgODAuMTAzNSA1MS43NDExQzgwLjEwMzUgNDIuODI3MyA4Ny4zOTY2IDM1LjUzNDIgOTYuMzEwNCAzNS41MzQyQzEwNS4yMjQgMzUuNTM0MiAxMTIuNTE3IDQyLjgyNzMgMTEyLjUxNyA1MS43NDExWiIgZmlsbD0iI0VDQkExNiIvPgo8cGF0aCBkPSJNODAuMTAzNSA1MS43NDExQzgwLjEwMzUgNTIuMjI3MyA4MC4xMDM1IDUyLjg3NTUgODAuMTAzNSA1My4zNjE5SDk2LjMxMDRWMzUuNTM0MkM4Ny4zOTY2IDM1LjUzNDIgODAuMTAzNSA0Mi44MjczIDgwLjEwMzUgNTEuNzQxMVoiIGZpbGw9IiM0MkIwNUMiLz4KPC9nPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4N18zMjY4IiB4MT0iMS4yMzIzOWUtMDYiIHkxPSItOS41MDAwMSIgeDI9IjE2OCIgeTI9IjE2MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjOEZEREZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNzVGRiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzY4N18zMjY4Ij4KPHJlY3Qgd2lkdGg9Ijk0IiBoZWlnaHQ9Ijk0IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgMjUpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "host" + ], + [ + "spec", + "metricsStorages" + ], + [ + "spec", + "logsStorages" + ], + [ + "spec", + "alerta" + ], + [ + "spec", + "alerta", + "storage" + ], + [ + "spec", + "alerta", + "storageClassName" + ], + [ + "spec", + "alerta", + "resources" + ], + [ + "spec", + "alerta", + "resources", + "limits" + ], + [ + "spec", + "alerta", + "resources", + "limits", + "cpu" + ], + [ + "spec", + "alerta", + "resources", + "limits", + "memory" + ], + [ + "spec", + "alerta", + "resources", + "requests" + ], + [ + "spec", + "alerta", + "resources", + "requests", + "cpu" + ], + [ + "spec", + "alerta", + "resources", + "requests", + "memory" + ], + [ + "spec", + "alerta", + "alerts" + ], + [ + "spec", + "alerta", + "alerts", + "telegram" + ], + [ + "spec", + "alerta", + "alerts", + "telegram", + "token" + ], + [ + "spec", + "alerta", + "alerts", + "telegram", + "chatID" + ], + [ + "spec", + "alerta", + "alerts", + "telegram", + "disabledSeverity" + ], + [ + "spec", + "alerta", + "alerts", + "slack" + ], + [ + "spec", + "alerta", + "alerts", + "slack", + "url" + ], + [ + "spec", + "alerta", + "alerts", + "slack", + "disabledSeverity" + ], + [ + "spec", + "grafana" + ], + [ + "spec", + "grafana", + "db" + ], + [ + "spec", + "grafana", + "db", + "size" + ], + [ + "spec", + "grafana", + "resources" + ], + [ + "spec", + "grafana", + "resources", + "limits" + ], + [ + "spec", + "grafana", + "resources", + "limits", + "cpu" + ], + [ + "spec", + "grafana", + "resources", + "limits", + "memory" + ], + [ + "spec", + "grafana", + "resources", + "requests" + ], + [ + "spec", + "grafana", + "resources", + "requests", + "cpu" + ], + [ + "spec", + "grafana", + "resources", + "requests", + "memory" + ], + [ + "spec", + "vmagent" + ], + [ + "spec", + "vmagent", + "externalLabels" + ], + [ + "spec", + "vmagent", + "externalLabels", + "cluster" + ], + [ + "spec", + "vmagent", + "remoteWrite" + ], + [ + "spec", + "vmagent", + "remoteWrite", + "urls" + ], + [ + "spec", + "oidc" + ], + [ + "spec", + "oidc", + "mode" + ], + [ + "spec", + "oidc", + "customConfig" + ], + [ + "spec", + "oidc", + "customConfig", + "config" + ], + [ + "spec", + "oidc", + "customConfig", + "secretRef" + ], + [ + "spec", + "oidc", + "customConfig", + "secretRef", + "name" + ], + [ + "spec", + "oidc", + "users" + ] + ], + "module": true, + "name": "monitoring", + "plural": "Monitoring", + "singular": "Monitoring" + }, + "ingresses": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "grafana-ingress", + "alerta" + ] + } + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-monitoring-application-default-monitoring", + "namespace": "cozy-system" + }, + "labels": { + "internal.cozystack.io/tenantmodule": "true", + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "grafana-admin-password" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "grafana-service", + "alerta" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "nats-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:28Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "nats-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "nats", + "resourceVersion": "36286", + "uid": "85f5837e-27cb-444f-b4bb-b98ef558e5f7" + }, + "spec": { + "application": { + "kind": "NATS", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each NATS replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"tls\":{\"description\":\"TLS configuration. When omitted, TLS follows the `external` flag.\",\"type\":\"object\",\"default\":{},\"properties\":{\"enabled\":{\"description\":\"Enable TLS. When omitted, TLS is enabled automatically when `external` is true.\",\"type\":\"boolean\"}}},\"users\":{\"description\":\"Users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"password\":{\"description\":\"Password for the user.\",\"type\":\"string\"}}}},\"jetstream\":{\"description\":\"Jetstream configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"size\"],\"properties\":{\"enabled\":{\"description\":\"Enable or disable Jetstream for persistent messaging in NATS.\",\"type\":\"boolean\",\"default\":true},\"size\":{\"description\":\"Jetstream persistent storage size.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"config\":{\"description\":\"NATS configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"merge\":{\"description\":\"Additional configuration to merge into NATS config.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true},\"resolver\":{\"description\":\"Additional resolver configuration to merge into NATS config.\",\"type\":\"object\",\"default\":{},\"x-kubernetes-preserve-unknown-fields\":true}}}}}", + "plural": "natses", + "singular": "nats" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed NATS service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODFfMjgyMSkiLz4KPHJlY3Qgd2lkdGg9IjE0NCIgaGVpZ2h0PSIxNDQiIHJ4PSIyNCIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4zIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTE3LjQ4IDI1SDI3Vjk4Ljk2OTNINjYuMDY4OUw4Ny43MDc1IDExOVY5OC45NjkzSDExNy40OFYyNVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik05Mi4xMzUyIDcyLjQ1NTJWNDIuNjI1SDEwMi43NzNWODEuMTk5OUg4Ni42NTE5TDU0LjExNCA1MC44NDE0VjgxLjIzMjJINDMuNDQ0M1Y0Mi42MjVINjAuMTI2Mkw5Mi4xMzUyIDcyLjQ1NTJaIiBmaWxsPSJibGFjayIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4MV8yODIxIiB4MT0iMTAiIHkxPSIxNS41IiB4Mj0iMTQ0IiB5Mj0iMTMxLjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzM4NUM5MyIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMkE1NzQiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "tls" + ], + [ + "spec", + "users" + ], + [ + "spec", + "jetstream" + ], + [ + "spec", + "jetstream", + "enabled" + ], + [ + "spec", + "jetstream", + "size" + ], + [ + "spec", + "config" + ], + [ + "spec", + "config", + "merge" + ], + [ + "spec", + "config", + "resolver" + ] + ], + "plural": "NATS", + "singular": "NATS", + "tags": [ + "messaging" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-nats-application-default-nats", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "nats-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "nats-{{ .name }}-credentials" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "nats-{{ .name }}" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "openbao-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:27Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "openbao-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "openbao", + "resourceVersion": "36151", + "uid": "8aa4a43d-fe57-4087-b963-da5934f78e42" + }, + "spec": { + "application": { + "kind": "OpenBAO", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of OpenBAO replicas. HA with Raft is automatically enabled when replicas \u003e 1. Switching between standalone (file storage) and HA (Raft storage) modes requires data migration.\",\"type\":\"integer\",\"default\":1},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each OpenBAO replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size for data storage.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"ui\":{\"description\":\"Enable the OpenBAO web UI.\",\"type\":\"boolean\",\"default\":true}}}", + "plural": "openbaos", + "singular": "openbao" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed OpenBAO secrets management service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcikiLz4KPHJlY3Qgd2lkdGg9IjE0NCIgaGVpZ2h0PSIxNDQiIHJ4PSIyNCIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4zIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzIgMzBDNTMuMjIyIDMwIDM4IDQ1LjIyMiAzOCA2NHY4Yy0zLjMxNCAwLTYgMi42ODYtNiA2djMwYzAgMy4zMTQgMi42ODYgNiA2IDZoNjhjMy4zMTQgMCA2LTIuNjg2IDYtNlY3OGMwLTMuMzE0LTIuNjg2LTYtNi02di04QzEwNiA0NS4yMjIgOTAuNzc4IDMwIDcyIDMwem0tOCA0MnYtOGMwLTQuNDE4IDMuNTgyLTggOC04czggMy41ODIgOCA4djhINjR6bTI2IDB2LThjMC04LjgzNy03LjE2My0xNi0xNi0xNnMtMTYgNy4xNjMtMTYgMTZ2OGgtMnYyOGg2MFY3Mkg5MHptLTIyIDE0YTQgNCAwIDExOCAwIDQgNCAwIDAxLTggMHptNC04YTggOCAwIDEwMCAxNiA4IDggMCAwMDAtMTZ6IiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyIiB4MT0iMTAiIHkxPSIxNS41IiB4Mj0iMTQ0IiB5Mj0iMTMxLjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzg3ZDZiZSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3OWMwYWIiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "ui" + ] + ], + "plural": "OpenBAO", + "singular": "OpenBAO", + "tags": [ + "secrets" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-openbao-application-default-openbao", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "openbao-" + }, + "secrets": { + "exclude": [], + "include": [] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "openbao-{{ .name }}", + "openbao-{{ .name }}-internal" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "opensearch-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:28Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "opensearch-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "opensearch", + "resourceVersion": "36188", + "uid": "233b81f0-65ca-4afd-9579-cce1f10a8a74" + }, + "spec": { + "application": { + "kind": "OpenSearch", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of OpenSearch nodes in the cluster.\",\"type\":\"integer\",\"default\":3},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each OpenSearch node. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each node.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each node.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted. OpenSearch requires minimum 2Gi memory.\",\"type\":\"string\",\"default\":\"c1.medium\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"topologySpreadPolicy\":{\"description\":\"How strictly to enforce pod distribution across nodes and zones.\",\"type\":\"string\",\"default\":\"soft\",\"enum\":[\"soft\",\"hard\"]},\"version\":{\"description\":\"OpenSearch major version to deploy.\",\"type\":\"string\",\"default\":\"v2\",\"enum\":[\"v3\",\"v2\",\"v1\"]},\"images\":{\"description\":\"Container images used by the operator.\",\"type\":\"object\",\"default\":{},\"required\":[\"opensearch\"],\"properties\":{\"opensearch\":{\"description\":\"OpenSearch image.\",\"type\":\"string\",\"default\":\"\"}}},\"nodeRoles\":{\"description\":\"Node roles configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"data\",\"ingest\",\"master\",\"ml\"],\"properties\":{\"data\":{\"description\":\"Enable data role.\",\"type\":\"boolean\",\"default\":true},\"ingest\":{\"description\":\"Enable ingest role.\",\"type\":\"boolean\",\"default\":true},\"master\":{\"description\":\"Enable cluster_manager role.\",\"type\":\"boolean\",\"default\":true},\"ml\":{\"description\":\"Enable machine learning role.\",\"type\":\"boolean\",\"default\":false}}},\"users\":{\"description\":\"Custom OpenSearch users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"password\":{\"description\":\"Password for the user (auto-generated if omitted).\",\"type\":\"string\"},\"roles\":{\"description\":\"List of OpenSearch roles.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}},\"dashboards\":{\"description\":\"OpenSearch Dashboards configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"replicas\",\"resourcesPreset\"],\"properties\":{\"enabled\":{\"description\":\"Enable OpenSearch Dashboards deployment.\",\"type\":\"boolean\",\"default\":false},\"replicas\":{\"description\":\"Number of Dashboards replicas.\",\"type\":\"integer\",\"default\":1},\"resources\":{\"description\":\"Explicit CPU and memory configuration for Dashboards.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each node.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each node.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset for Dashboards.\",\"type\":\"string\",\"default\":\"c1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}}}}", + "plural": "opensearches", + "singular": "opensearch" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed OpenSearch service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl9vcGVuc2VhcmNoKSIvPgo8cGF0aCBkPSJNNzIgMzZDNDQgMzYgMjggNTIgMjggNzJDMjggOTIgNDQgMTA4IDcyIDEwOEMxMDAgMTA4IDExNiA5MiAxMTYgNzIiIHN0cm9rZT0iIzAwNUVCOCIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGZpbGw9Im5vbmUiLz4KPGNpcmNsZSBjeD0iMTE2IiBjeT0iNzIiIHI9IjgiIGZpbGw9IiMwMDVFQjgiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl9vcGVuc2VhcmNoIiB4MT0iMTQwIiB5MT0iMTMwLjUiIHgyPSI0IiB5Mj0iOS40OTk5OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMDAzQjVDIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNUVCOCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "topologySpreadPolicy" + ], + [ + "spec", + "version" + ], + [ + "spec", + "images" + ], + [ + "spec", + "images", + "opensearch" + ], + [ + "spec", + "nodeRoles" + ], + [ + "spec", + "nodeRoles", + "master" + ], + [ + "spec", + "nodeRoles", + "data" + ], + [ + "spec", + "nodeRoles", + "ingest" + ], + [ + "spec", + "nodeRoles", + "ml" + ], + [ + "spec", + "users" + ], + [ + "spec", + "dashboards" + ], + [ + "spec", + "dashboards", + "enabled" + ], + [ + "spec", + "dashboards", + "replicas" + ], + [ + "spec", + "dashboards", + "resources" + ], + [ + "spec", + "dashboards", + "resourcesPreset" + ] + ], + "plural": "OpenSearch Clusters", + "singular": "OpenSearch", + "tags": [ + "database", + "search" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-opensearch-application-default-opensearch", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "opensearch-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "opensearch-{{ .name }}-credentials" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "opensearch-{{ .name }}", + "opensearch-{{ .name }}-external", + "opensearch-{{ .name }}-dashboards", + "opensearch-{{ .name }}-dashboards-external" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "postgres-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:29Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "postgres-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "postgres", + "resourceVersion": "36322", + "uid": "1c02020f-3386-459f-ab74-61bb14bd6029" + }, + "spec": { + "application": { + "kind": "Postgres", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of Postgres replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each PostgreSQL replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.micro\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"version\":{\"description\":\"PostgreSQL major version to deploy\",\"type\":\"string\",\"default\":\"v18\",\"enum\":[\"v18\",\"v17\",\"v16\",\"v15\",\"v14\",\"v13\"]},\"tls\":{\"description\":\"TLS configuration for server connections.\",\"type\":\"object\",\"default\":{},\"properties\":{\"enabled\":{\"description\":\"Tri-state switch controlling whether the chart injects the external hostname into the operator-managed CNPG cert via spec.certificates.serverAltDNSNames. When omitted, the chart injects the SAN if `external: true` and skips it otherwise. Set explicitly to `true` to inject regardless of `external` (no-op when `external: false` since there is no external hostname to add). Set to `false` to skip injection. Note that CNPG keeps its built-in TLS on the wire regardless of this flag — this toggle only controls the chart-side SAN injection; to disable PostgreSQL TLS entirely set `postgresql.parameters.ssl = \\\"off\\\"` at the CNPG layer.\",\"type\":\"boolean\"}}},\"postgresql\":{\"description\":\"PostgreSQL server configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"parameters\":{\"description\":\"PostgreSQL server parameters. Values may be strings or integers; integers are coerced to strings by the template (e.g. both `max_connections: 100` and `max_connections: \\\"100\\\"` are accepted). BLOCKED (enable arbitrary code execution): archive_command, restore_command, ssl_passphrase_command, archive_cleanup_command, recovery_end_command, dynamic_library_path, local_preload_libraries, session_preload_libraries, shared_preload_libraries. Do NOT override CloudNativePG-managed parameters: archive_mode, primary_conninfo, wal_level, max_replication_slots.\",\"type\":\"object\",\"default\":{\"max_connections\":\"100\"},\"additionalProperties\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}},\"quorum\":{\"description\":\"Quorum configuration for synchronous replication.\",\"type\":\"object\",\"default\":{},\"required\":[\"maxSyncReplicas\",\"minSyncReplicas\"],\"properties\":{\"maxSyncReplicas\":{\"description\":\"Maximum number of synchronous replicas allowed (must be less than total replicas).\",\"type\":\"integer\",\"default\":0},\"minSyncReplicas\":{\"description\":\"Minimum number of synchronous replicas required for commit.\",\"type\":\"integer\",\"default\":0}}},\"users\":{\"description\":\"Users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"password\":{\"description\":\"Password for the user.\",\"type\":\"string\"},\"replication\":{\"description\":\"Whether the user has replication privileges.\",\"type\":\"boolean\"}}}},\"databases\":{\"description\":\"Databases configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"extensions\":{\"description\":\"List of enabled PostgreSQL extensions.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"roles\":{\"description\":\"Roles assigned to users.\",\"type\":\"object\",\"properties\":{\"admin\":{\"description\":\"List of users with admin privileges.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"readonly\":{\"description\":\"List of users with read-only privileges.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}}}},\"backup\":{\"description\":\"Backup configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\"],\"properties\":{\"destinationPath\":{\"description\":\"DEPRECATED. Per-tenant S3 configuration is superseded by the platform-managed `cozy-default` BackupClass and the `cozy-backups` system bucket. Leave empty for new installations; the BackupClass driver picks up the system-managed coordinates. Kept for in-place upgrade compatibility.\",\"type\":\"string\",\"default\":\"s3://bucket/path/to/folder/\"},\"enabled\":{\"description\":\"Enable regular backups.\",\"type\":\"boolean\",\"default\":false},\"endpointCA\":{\"description\":\"DEPRECATED. Pre-existing Secret with the CA bundle the barman-cloud plugin should trust when reaching a self-signed S3 endpoint. Used for both backup and bootstrap recovery in the legacy chart-managed flow.\",\"type\":\"object\",\"default\":{},\"properties\":{\"key\":{\"description\":\"Key within the Secret containing the CA bundle. Defaults to `ca.crt`.\",\"type\":\"string\",\"default\":\"\"},\"name\":{\"description\":\"Name of the Secret in the application namespace. Empty means no endpointCA is emitted (the plugin uses the system trust store).\",\"type\":\"string\",\"default\":\"\"}}},\"endpointURL\":{\"description\":\"DEPRECATED. See `destinationPath`.\",\"type\":\"string\",\"default\":\"http://minio-gateway-service:9000\"},\"retentionPolicy\":{\"description\":\"Retention policy (e.g. \\\"30d\\\").\",\"type\":\"string\",\"default\":\"30d\"},\"s3AccessKey\":{\"description\":\"DEPRECATED. Tenants no longer supply S3 keys; the system Bucket Secret is projected into the tenant namespace by the backup controller. Ignored when `s3CredentialsSecret.name` is set or `useSystemBucket` is true. The chart skips materialising `\u003crelease\u003e-s3-creds` whenever this field is empty so a default install does not leak placeholder credentials into the tenant namespace.\",\"type\":\"string\",\"default\":\"\"},\"s3CredentialsSecret\":{\"description\":\"DEPRECATED. Pre-existing Secret with S3 credentials. Use the platform-managed `cozy-default` BackupClass instead. When set, the chart references this Secret directly (legacy chart-managed flow). The CNPG backup driver writes this field on restore so credentials never land in the CR `.spec`.\",\"type\":\"object\",\"default\":{},\"properties\":{\"accessKeyIDKey\":{\"description\":\"Key in the Secret holding the access key ID. Defaults to `AWS_ACCESS_KEY_ID`.\",\"type\":\"string\",\"default\":\"\"},\"name\":{\"description\":\"Name of the Secret in the application namespace. Empty means the chart materialises `\u003crelease\u003e-s3-creds` from `s3AccessKey`/`s3SecretKey`.\",\"type\":\"string\",\"default\":\"\"},\"secretAccessKeyKey\":{\"description\":\"Key in the Secret holding the secret access key. Defaults to `AWS_SECRET_ACCESS_KEY`.\",\"type\":\"string\",\"default\":\"\"}}},\"s3SecretKey\":{\"description\":\"DEPRECATED. See `s3AccessKey`.\",\"type\":\"string\",\"default\":\"\"},\"schedule\":{\"description\":\"Legacy. Cron schedule (CNPG 6-field format) for the chart-emitted ScheduledBackup. Empty means no chart-managed schedule, which is the recommended setup when a `BackupClass` from `backups.cozystack.io` already drives backup orchestration. In the legacy chart-managed flow `spec.plugins` plus the barman-cloud ObjectStore is rendered when `backup.enabled=true` AND `useSystemBucket=false` AND `destinationPath` is non-empty AND inline-or-external creds are supplied; in the platform `useSystemBucket=true` flow the chart skips emitting `spec.plugins` and the CNPG driver SSA-applies the ObjectStore and patches `spec.plugins` onto the live Cluster at first BackupJob time.\",\"type\":\"string\",\"default\":\"\"},\"useSystemBucket\":{\"description\":\"Opt-in: when true, the chart-emitted `\u003crelease\u003e-s3-creds` Secret is skipped AND `spec.plugins` (plus the barman-cloud ObjectStore) is left UNSET in the chart-rendered Cluster — the cozy-default BackupClass driver SSA-applies an ObjectStore (carrying destinationPath/endpointURL/credentials) and patches `spec.plugins` on the live Cluster when the first BackupJob runs. Consequence: plugin WAL archiving is NOT active until that first BackupJob fires; WAL accumulates on the PVC in the meantime, so fire an ad-hoc BackupJob immediately after enabling the flag on existing releases. Use together with the platform `cozy-default` BackupClass — tenants do not need to fill `s3AccessKey`/`s3SecretKey` or `destinationPath`/`endpointURL`. The destination path automatically scopes to `s3://cozy-backups/\u003cnamespace\u003e/\u003crelease\u003e/`.\",\"type\":\"boolean\",\"default\":false}}},\"bootstrap\":{\"description\":\"Bootstrap configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"enabled\",\"oldName\"],\"properties\":{\"enabled\":{\"description\":\"Whether to restore from a backup.\",\"type\":\"boolean\",\"default\":false},\"oldName\":{\"description\":\"Previous cluster name before deletion.\",\"type\":\"string\",\"default\":\"\"},\"recoveryTime\":{\"description\":\"Timestamp (RFC3339) for point-in-time recovery; empty means latest.\",\"type\":\"string\",\"default\":\"\"},\"serverName\":{\"description\":\"Server name (S3 path prefix) used by the original cluster when writing backups; passed to the barman-cloud plugin via `externalClusters[].plugin.parameters.serverName`. Defaults to `bootstrap.oldName`. Set this only when the original cluster wrote backups under an explicit server name that differed from its Kubernetes resource name.\",\"type\":\"string\",\"default\":\"\"}}}}}", + "plural": "postgreses", + "singular": "postgres" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed PostgreSQL service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODNfMjg0OSkiLz4KPHBhdGggZD0iTTk0LjQ4MSA5My4zMDQ5Qzk1LjA3MTggODguMzQ3NyA5NC44OTQ4IDg3LjYyMDggOTguNTYxMiA4OC40MjM4TDk5LjQ5MiA4OC41MDYxQzEwMi4zMTEgODguNjM1MyAxMDUuOTk5IDg4LjA0OTUgMTA4LjE2NiA4Ny4wMzU4QzExMi44MyA4NC44NTY0IDExNS41OTUgODEuMjE3NiAxMTAuOTk2IDgyLjE3MzhDMTAwLjUwNiA4NC4zNTMyIDk5Ljc4NDkgODAuNzc1OSA5OS43ODQ5IDgwLjc3NTlDMTEwLjg2MiA2NC4yMjQgMTE1LjQ5MyA0My4yMTI4IDExMS40OTYgMzguMDY5N0MxMDAuNTk0IDI0LjA0MTIgODEuNzIzMSAzMC42NzUgODEuNDA3MyAzMC44NDcyTDgxLjMwNjggMzAuODY1OUM3OS4yMzQgMzAuNDMyOCA3Ni45MTQzIDMwLjE3NCA3NC4zMDg1IDMwLjEzMTZDNjkuNTYxMyAzMC4wNTMgNjUuOTU5MSAzMS4zODQ5IDYzLjIyNjYgMzMuNDcyMUM2My4yMjY2IDMzLjQ3MjEgMjkuNTYyMSAxOS41MDQ3IDMxLjEyODIgNTEuMDM3NUMzMS40NjEzIDU3Ljc0NTQgNDAuNjc1OCAxMDEuNzk1IDUxLjY2NTkgODguNDkwMUM1NS42ODI3IDgzLjYyNDkgNTkuNTY0NiA3OS41MTEzIDU5LjU2NDYgNzkuNTExM0M2MS40OTIyIDgwLjgwMDkgNjMuOCA4MS40NTg4IDY2LjIyMDQgODEuMjIyNUw2Ni40MDc1IDgxLjA2MThDNjYuMzQ4OSA4MS42NjU5IDY2LjM3NDcgODIuMjU2NyA2Ni40ODI0IDgyLjk1NjJDNjMuNjUxNyA4Ni4xNDE5IDY0LjQ4MzUgODYuNzAxMiA1OC44MjMxIDg3Ljg3NDVDNTMuMDk2NSA4OS4wNjMxIDU2LjQ2MDkgOTEuMTc5MyA1OC42NTY5IDkxLjczMjRDNjEuMzE5OSA5Mi40MDMgNjcuNDgwNCA5My4zNTMgNzEuNjQ0IDg3LjQ4NDVMNzEuNDc4MiA4OC4xNTQxQzcyLjU4ODggODkuMDQ4OSA3Mi41MTM3IDk0LjU4NTQgNzIuNjcxMiA5OC41NDExQzcyLjgyODkgMTAyLjQ5NyA3My4wOTE5IDEwNi4xODkgNzMuODkyNiAxMDguMzY1Qzc0LjY5MzMgMTEwLjU0MSA3NS42MzgxIDExNi4xNDcgODMuMDc3MSAxMTQuNTQxQzg5LjI5NDMgMTEzLjIgOTQuMDQ3OCAxMTEuMjY5IDk0LjQ4MSA5My4zMDQ5WiIgZmlsbD0iYmxhY2siIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iNiIvPgo8cGF0aCBkPSJNMTEwLjk5OCA4Mi4xNzI3QzEwMC41MDYgODQuMzUyMSA5OS43ODQ5IDgwLjc3NDggOTkuNzg0OSA4MC43NzQ4QzExMC44NjIgNjQuMjIxOCAxMTUuNDkzIDQzLjIxMDIgMTExLjQ5NyAzOC4wNjc4QzEwMC41OTUgMjQuMDQwMSA4MS43MjMxIDMwLjY3NDMgODEuNDA4MiAzMC44NDY1TDgxLjMwNjggMzAuODY0OEM3OS4yMzQxIDMwLjQzMTUgNzYuOTE0NCAzMC4xNzMzIDc0LjMwNzMgMzAuMTMwNUM2OS41NiAzMC4wNTIxIDY1Ljk1OTEgMzEuMzgzOCA2My4yMjY3IDMzLjQ3MDZDNjMuMjI2NyAzMy40NzA2IDI5LjU2MTUgMTkuNTAzOCAzMS4xMjcyIDUxLjAzNjRDMzEuNDYwMyA1Ny43NDQ3IDQwLjY3NDYgMTAxLjc5NSA1MS42NjUxIDg4LjQ4OTVDNTUuNjgyMSA4My42MjQzIDU5LjU2MzQgNzkuNTEwNiA1OS41NjM0IDc5LjUxMDZDNjEuNDkxMiA4MC44MDAyIDYzLjc5OSA4MS40NTgxIDY2LjIxODQgODEuMjIxOEw2Ni40MDYzIDgxLjA2MTFDNjYuMzQ3OSA4MS42NjUyIDY2LjM3NDYgODIuMjU2IDY2LjQ4MTYgODIuOTU1NUM2My42NTAzIDg2LjE0MTIgNjQuNDgyMiA4Ni43MDA1IDU4LjgyMjMgODcuODczOEM1My4wOTUzIDg5LjA2MjUgNTYuNDU5NyA5MS4xNzg2IDU4LjY1NjMgOTEuNzMxN0M2MS4zMTkzIDkyLjQwMjMgNjcuNDgwMiA5My4zNTI0IDcxLjY0MyA4Ny40ODM4TDcxLjQ3NyA4OC4xNTM0QzcyLjU4NjQgODkuMDQ4MiA3My4zNjU0IDkzLjk3MzkgNzMuMjM0OCA5OC40MzlDNzMuMTA0MiAxMDIuOTA0IDczLjAxNzEgMTA1Ljk3IDczLjg5MTIgMTA4LjM2NEM3NC43NjUzIDExMC43NTkgNzUuNjM2NSAxMTYuMTQ2IDgzLjA3NjkgMTE0LjU0MUM4OS4yOTQxIDExMy4xOTkgOTIuNTE1OSAxMDkuNzIyIDkyLjk2NDEgMTAzLjkyMkM5My4yODIyIDk5Ljc5ODggOTQuMDAxOSAxMDAuNDA4IDk0LjA0NzQgOTYuNzIxOUw5NC42MjQ3IDk0Ljk3NjZDOTUuMjkwNSA4OS4zODcyIDk0LjczMDUgODcuNTg0IDk4LjU2MDggODguNDIyN0w5OS40OTE3IDg4LjUwNUMxMDIuMzExIDg4LjYzNDIgMTA2LjAwMSA4OC4wNDg0IDEwOC4xNjYgODcuMDM0N0MxMTIuODI5IDg0Ljg1NTMgMTE1LjU5NSA4MS4yMTY2IDExMC45OTcgODIuMTcyN0gxMTAuOTk4WiIgZmlsbD0iIzMzNjc5MSIvPgo8cGF0aCBkPSJNNzIuMDkzMyA4NS4zNzdDNzEuODA0NSA5NS43Nzc0IDcyLjE2NTkgMTA2LjI1IDczLjE3NjQgMTA4Ljc5NkM3NC4xODc2IDExMS4zNDEgNzYuMzUxNCAxMTYuMjkyIDgzLjc5MjUgMTE0LjY4NkM5MC4wMDkxIDExMy4zNDQgOTIuMjcxIDExMC43NDcgOTMuMjUyNiAxMDUuMDE0QzkzLjk3NTUgMTAwLjc5NiA5NS4zNjkxIDg5LjA4MSA5NS41NDc5IDg2LjY4MDkiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik02My4xNzUgMzMuMjM5M0M2My4xNzUgMzMuMjM5MyAyOS40ODY4IDE5LjM3MzIgMzEuMDUzIDUwLjkwNThDMzEuMzg2IDU3LjYxNDEgNDAuNjAxIDEwMS42NjUgNTEuNTkxMyA4OC4zNTk3QzU1LjYwNzUgODMuNDkzOCA1OS4yMzk3IDc5LjY3NzYgNTkuMjM5NyA3OS42Nzc2IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNODEuMzcxMyAzMC43MDc4QzgwLjIwNTIgMzEuMDc2IDEwMC4xMTEgMjMuMzc5NiAxMTEuNDIzIDM3LjkzNjhDMTE1LjQxOSA0My4wNzk1IDExMC43ODkgNjQuMDkxMSA5OS43MTE1IDgwLjY0NDUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik05OS43MTEgODAuNjQ0OEM5OS43MTEgODAuNjQ0OCAxMDAuNDMzIDg0LjIyMyAxMTAuOTI0IDgyLjA0MjJDMTE1LjUyMSA4MS4wODYxIDExMi43NTUgODQuNzI1MiAxMDguMDkzIDg2LjkwNTdDMTA0LjI2NyA4OC42OTQgOTUuNjg4MyA4OS4xNTIzIDk1LjU0ODIgODYuNjgxMkM5NS4xODc2IDgwLjMwNTMgMTAwLjA2MyA4Mi4yNDIzIDk5LjcxMSA4MC42NDQ4Wk05OS43MTEgODAuNjQ0OEM5OS4zOTI5IDc5LjIwNiA5Ny4yMTI4IDc3Ljc5MzkgOTUuNzcwNSA3NC4yNzI1Qzk0LjUxMTQgNzEuMTk5IDc4LjUwMTkgNDcuNjI4OSAxMDAuMjEgNTEuMTI5NEMxMDEuMDA2IDUwLjk2MzcgOTQuNTQ4NSAzMC4zMzQ4IDc0LjIzMjUgMjkuOTk5NEM1My45MjExIDI5LjY2MzkgNTQuNTg3NSA1NS4xNTQ1IDU0LjU4NzUgNTUuMTU0NSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0iYmV2ZWwiLz4KPHBhdGggZD0iTTY2LjQwNzcgODIuODI1M0M2My41NzYgODYuMDEwOCA2NC40MDg4IDg2LjU3MDIgNTguNzQ4NSA4Ny43NDM5QzUzLjAyMTQgODguOTMyNyA1Ni4zODYyIDkxLjA0ODUgNTguNTgyMiA5MS42MDEzQzYxLjI0NTIgOTIuMjcyNCA2Ny40MDYxIDkzLjIyMjQgNzEuNTY4OSA4Ny4zNTI0QzcyLjgzNjYgODUuNTY1MSA3MS41NjE0IDgyLjcxMzQgNjkuODIwMSA4MS45ODY0QzY4Ljk3ODcgODEuNjM1NCA2Ny44NTM3IDgxLjE5NTYgNjYuNDA3NyA4Mi44MjUzWiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTY2LjIyMjUgODIuNzY5MUM2NS45MzcyIDgwLjg5NjEgNjYuODMzNiA3OC42Njc0IDY3Ljc5NDMgNzYuMDU5OUM2OS4yMzggNzIuMTQ3NyA3Mi41NjkgNjguMjM0OCA2OS45MDQ0IDU1LjgyNDZDNjcuOTE4MiA0Ni41NzY3IDU0LjU5NjMgNTMuOSA1NC41ODggNTUuMTU0QzU0LjU3OTggNTYuNDA3NSA1NS4xOTA1IDYxLjUwOTkgNTQuMzY1NCA2Ny40NTE1QzUzLjI4ODggNzUuMjA0OCA1OS4yNjQzIDgxLjc2MjEgNjYuMTQ1MSA4MS4wOTEzIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNNjMuMDUyOCA1NC45NjY1QzYyLjk5MjggNTUuMzk0OCA2My44MzE0IDU2LjUzNzcgNjQuOTI0OSA1Ni42OTA0QzY2LjAxNjYgNTYuODQzNyA2Ni45NTEgNTUuOTUwNiA2Ny4wMTAyIDU1LjUyMjdDNjcuMDY5NCA1NS4wOTQ1IDY2LjIzMTggNTQuNjIyNyA2NS4xMzc5IDU0LjQ2OTRDNjQuMDQ1NiA1NC4zMTU4IDYzLjExMDggNTQuNTM5MyA2My4wNTMxIDU0Ljk2NjVINjMuMDUyOFoiIGZpbGw9IndoaXRlIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiLz4KPHBhdGggZD0iTTk2LjMwMzQgNTQuMDkyNEM5Ni4zNjI3IDU0LjUyMDcgOTUuNTI1MSA1NS42NjM1IDk0LjQzMTMgNTUuODE2MkM5My4zMzg5IDU1Ljk2OTYgOTIuNDA0NSA1NS4wNzY1IDkyLjM0NDYgNTQuNjQ4NkM5Mi4yODY4IDU0LjIyMDMgOTMuMTI0NyA1My43NDg2IDk0LjIxNzMgNTMuNTk1M0M5NS4zMSA1My40NDE5IDk2LjI0NDIgNTMuNjY1MiA5Ni4zMDM0IDU0LjA5MjZWNTQuMDkyNFoiIGZpbGw9IndoaXRlIiBzdHJva2U9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMDAuMjEgNTEuMTI4OUMxMDAuMzkgNTQuNDg4MyA5OS40OTIgNTYuNzc2NSA5OS4zNzg3IDYwLjM1MjdDOTkuMjExIDY1LjU1MDggMTAxLjg0IDcxLjUwMDUgOTcuODc4OSA3Ny40NTc1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4M18yODQ5IiB4MT0iMTQwIiB5MT0iMTMwLjUiIHgyPSI0IiB5Mj0iOS40OTk5OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMDAyQzRDIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNDc3QiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "version" + ], + [ + "spec", + "tls" + ], + [ + "spec", + "postgresql" + ], + [ + "spec", + "postgresql", + "parameters" + ], + [ + "spec", + "postgresql", + "parameters", + "max_connections" + ], + [ + "spec", + "quorum" + ], + [ + "spec", + "quorum", + "minSyncReplicas" + ], + [ + "spec", + "quorum", + "maxSyncReplicas" + ], + [ + "spec", + "users" + ], + [ + "spec", + "databases" + ], + [ + "spec", + "backup" + ], + [ + "spec", + "backup", + "enabled" + ], + [ + "spec", + "backup", + "useSystemBucket" + ], + [ + "spec", + "backup", + "retentionPolicy" + ], + [ + "spec", + "backup", + "destinationPath" + ], + [ + "spec", + "backup", + "endpointURL" + ], + [ + "spec", + "backup", + "schedule" + ], + [ + "spec", + "backup", + "s3AccessKey" + ], + [ + "spec", + "backup", + "s3SecretKey" + ], + [ + "spec", + "backup", + "s3CredentialsSecret" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "name" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "accessKeyIDKey" + ], + [ + "spec", + "backup", + "s3CredentialsSecret", + "secretAccessKeyKey" + ], + [ + "spec", + "backup", + "endpointCA" + ], + [ + "spec", + "backup", + "endpointCA", + "name" + ], + [ + "spec", + "backup", + "endpointCA", + "key" + ], + [ + "spec", + "bootstrap" + ], + [ + "spec", + "bootstrap", + "enabled" + ], + [ + "spec", + "bootstrap", + "recoveryTime" + ], + [ + "spec", + "bootstrap", + "oldName" + ], + [ + "spec", + "bootstrap", + "serverName" + ] + ], + "plural": "PostgreSQL", + "singular": "PostgreSQL", + "tags": [ + "database" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-postgres-application-default-postgres", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "postgres-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "postgres-{{ .name }}-credentials" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "postgres-{{ .name }}-r", + "postgres-{{ .name }}-ro", + "postgres-{{ .name }}-rw", + "postgres-{{ .name }}-external-write" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "qdrant-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:28Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "qdrant-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "qdrant", + "resourceVersion": "36228", + "uid": "f0d32dc0-f13d-4b94-9566-74f026362255" + }, + "spec": { + "application": { + "kind": "Qdrant", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of Qdrant replicas. Cluster mode is automatically enabled when replicas \u003e 1.\",\"type\":\"integer\",\"default\":1},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each Qdrant replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for vector data storage.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"tls\":{\"description\":\"TLS configuration. When omitted, the effective TLS state follows the value of `external`.\",\"type\":\"object\",\"default\":{},\"properties\":{\"enabled\":{\"description\":\"Enable TLS. When unset, inherits the value of `external` (TLS is on when external access is enabled). Set explicitly to `true` or `false` to override.\",\"type\":\"boolean\"}}}}}", + "plural": "qdrants", + "singular": "qdrant" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed Qdrant vector database service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcikiLz4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjIsIDIyKSBzY2FsZSgwLjU4KSI+CiAgPHBvbHlnb24gZmlsbD0iI2RjMjQ0YyIgcG9pbnRzPSI4Ni42IDAgMCA1MCAwIDE1MCA4Ni42IDIwMCAxMTkuMDggMTgxLjI1IDExOS4wOCAxNDMuNzUgODYuNiAxNjIuNSAzMi40OCAxMzEuMjUgMzIuNDggNjguNzUgODYuNiAzNy41IDE0MC43MyA2OC43NSAxNDAuNzMgMTkzLjc1IDE3My4yMSAxNzUgMTczLjIxIDUwIDg2LjYgMCIvPgogIDxwb2x5Z29uIGZpbGw9IiNkYzI0NGMiIHBvaW50cz0iNTQuMTMgODEuMjUgNTQuMTMgMTE4Ljc1IDg2LjYgMTM3LjUgMTE5LjA4IDExOC43NSAxMTkuMDggODEuMjUgODYuNiA2Mi41IDU0LjEzIDgxLjI1Ii8+CiAgPHBvbHlnb24gZmlsbD0iIzllMGQzOCIgcG9pbnRzPSIxMTkuMDggMTQzLjc1IDExOS4wOCAxODEuMjUgODYuNiAyMDAgODYuNiAxNjIuNSAxMTkuMDggMTQzLjc1Ii8+CiAgPHBvbHlnb24gZmlsbD0iIzllMGQzOCIgcG9pbnRzPSIxNzMuMjEgNTAgMTczLjIxIDE3NSAxNDAuNzMgMTkzLjc1IDE0MC43MyA2OC43NSAxNzMuMjEgNTAiLz4KICA8cG9seWdvbiBmaWxsPSIjZmY1MTZiIiBwb2ludHM9IjE3My4yMSA1MCAxNDAuNzMgNjguNzUgODYuNiAzNy41IDMyLjQ4IDY4Ljc1IDAgNTAgODYuNiAwIDE3My4yMSA1MCIvPgogIDxwb2x5Z29uIGZpbGw9IiNkYzI0NGMiIHBvaW50cz0iODYuNiAxNjIuNSA4Ni42IDIwMCAwIDE1MCAwIDUwIDMyLjQ4IDY4Ljc1IDMyLjQ4IDEzMS4yNSA4Ni42IDE2Mi41Ii8+CiAgPHBvbHlnb24gZmlsbD0iI2ZmNTE2YiIgcG9pbnRzPSIxMTkuMDggODEuMjUgODYuNiAxMDAgNTQuMTMgODEuMjUgODYuNiA2Mi41IDExOS4wOCA4MS4yNSIvPgogIDxwb2x5Z29uIGZpbGw9IiNkYzI0NGMiIHBvaW50cz0iODYuNiAxMDAgODYuNiAxMzcuNSA1NC4xMyAxMTguNzUgNTQuMTMgODEuMjUgODYuNiAxMDAiLz4KICA8cG9seWdvbiBmaWxsPSIjOWUwZDM4IiBwb2ludHM9IjExOS4wOCA4MS4yNSAxMTkuMDggMTE4Ljc1IDg2LjYgMTM3LjUgODYuNiAxMDAgMTE5LjA4IDgxLjI1Ii8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9IjE4OSIgeTE9IjIxMC41IiB4Mj0iMCIgeTI9IjAiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzVjMDUyMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmQwZDgiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "tls" + ] + ], + "plural": "Qdrant", + "singular": "Qdrant", + "tags": [ + "vector-database", + "ai", + "ml" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-qdrant-application-default-qdrant", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "qdrant-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "qdrant-{{ .name }}-apikey" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "qdrant-{{ .name }}", + "qdrant-{{ .name }}-headless" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "rabbitmq-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:24Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "rabbitmq-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "rabbitmq", + "resourceVersion": "35863", + "uid": "41257b06-55bc-43dd-9dfe-a97def8bcf9c" + }, + "spec": { + "application": { + "kind": "RabbitMQ", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of RabbitMQ replicas.\",\"type\":\"integer\",\"default\":3},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each RabbitMQ replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"version\":{\"description\":\"RabbitMQ major.minor version to deploy\",\"type\":\"string\",\"default\":\"v4.2\",\"enum\":[\"v4.2\",\"v4.1\",\"v4.0\",\"v3.13\"]},\"users\":{\"description\":\"Users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"password\":{\"description\":\"Password for the user.\",\"type\":\"string\"}}}},\"vhosts\":{\"description\":\"Virtual hosts configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"required\":[\"roles\"],\"properties\":{\"roles\":{\"description\":\"Virtual host roles list.\",\"type\":\"object\",\"properties\":{\"admin\":{\"description\":\"List of admin users.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"readonly\":{\"description\":\"List of readonly users.\",\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}}}}}}", + "plural": "rabbitmqs", + "singular": "rabbitmq" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed RabbitMQ service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9Ii0wLjAwMTk1MzEyIiB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgcng9IjI0IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfNjgzXzI5NzIpIi8+CjxwYXRoIGQ9Ik0xMTEuNDExIDYyLjhIODIuNDkzOUM4MS43OTY5IDYyLjc5OTcgODEuMTI4NSA2Mi41MjI4IDgwLjYzNTYgNjIuMDMwMUM4MC4xNDI3IDYxLjUzNzMgNzkuODY1NiA2MC44NjkxIDc5Ljg2NTMgNjAuMTcyMlYzMC4wNDEyQzc5Ljg2NTMgMjcuODEgNzguMDU1NiAyNiA3NS44MjQ5IDI2SDY1LjUwMjFDNjMuMjcgMjYgNjEuNDYxNCAyNy44MSA2MS40NjE0IDMwLjA0MTJWNTkuOTg5OEM2MS40NjE0IDYxLjU0MzUgNjAuMjA1IDYyLjgwNjUgNTguNjUwOCA2Mi44MTMzTDQ5LjE3NDMgNjIuODU4NEM0Ny42MDY5IDYyLjg2NjkgNDYuMzMzNiA2MS41OTU1IDQ2LjMzNjYgNjAuMDI5OEw0Ni4zOTU0IDMwLjA0OEM0Ni40MDA1IDI3LjgxMzQgNDQuNTkwMiAyNiA0Mi4zNTUgMjZIMzIuMDQwN0MyOS44MDgzIDI2IDI4IDI3LjgxIDI4IDMwLjA0MTJWMTE0LjQxMkMyOCAxMTYuMzk0IDI5LjYwNjEgMTE4IDMxLjU4NzEgMTE4SDExMS40MTFDMTEzLjM5NCAxMTggMTE1IDExNi4zOTQgMTE1IDExNC40MTJWNjYuMzg4QzExNSA2NC40MDU4IDExMy4zOTQgNjIuOCAxMTEuNDExIDYyLjhaTTk3Ljg1MDggOTQuNDc3OUM5Ny44NTA4IDk3LjA3NTUgOTUuNzQ0NSA5OS4xODE3IDkzLjE0NjQgOTkuMTgxN0g4NC45ODg0QzgyLjM5IDk5LjE4MTcgODAuMjgzNiA5Ny4wNzU1IDgwLjI4MzYgOTQuNDc3OVY4Ni4zMjE3QzgwLjI4MzYgODMuNzIzOCA4Mi4zOSA4MS42MTc5IDg0Ljk4ODQgODEuNjE3OUg5My4xNDY0Qzk1Ljc0NDUgODEuNjE3OSA5Ny44NTA4IDgzLjcyMzggOTcuODUwOCA4Ni4zMjE3Vjk0LjQ3NzlaIiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4M18yOTcyIiB4MT0iNSIgeTE9Ii03LjUiIHgyPSIxNDEiIHkyPSIxMjQuNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRkY4MjJGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGNjYwMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "version" + ], + [ + "spec", + "users" + ], + [ + "spec", + "vhosts" + ] + ], + "plural": "RabbitMQ", + "singular": "RabbitMQ", + "tags": [ + "messaging" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-rabbitmq-application-default-rabbitmq", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "rabbitmq-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "rabbitmq-{{ .name }}-default-user" + ] + }, + { + "matchLabels": { + "apps.cozystack.io/user-secret": "true" + } + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "rabbitmq-{{ .name }}" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "redis-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:28Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "redis-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "redis", + "resourceVersion": "36276", + "uid": "b12676fa-7b43-4a23-96f7-1de59c8983aa" + }, + "spec": { + "application": { + "kind": "Redis", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of Redis replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each Redis replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume Claim size available for application data.\",\"default\":\"1Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"version\":{\"description\":\"Redis major version to deploy\",\"type\":\"string\",\"default\":\"v8\",\"enum\":[\"v8\",\"v7\"]},\"authEnabled\":{\"description\":\"Enable password generation.\",\"type\":\"boolean\",\"default\":true}}}", + "plural": "redises", + "singular": "redis" + }, + "dashboard": { + "category": "PaaS", + "description": "Managed Redis service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODNfMzIxMykiLz4KPHBhdGggZD0iTTEyMC4xNDkgOTUuNTQ5MUMxMTQuNTg2IDk4LjQ0ODUgODUuNzcwOSAxMTAuMjk2IDc5LjYzNjMgMTEzLjQ5NUM3My41MDE2IDExNi42OTMgNzAuMDkzNyAxMTYuNjYyIDY1LjI0NzIgMTE0LjM0NkM2MC40MDEyIDExMi4wMjkgMjkuNzM2NCA5OS42NDIzIDI0LjIxMjUgOTcuMDAxOUMyMS40NTE5IDk1LjY4MjcgMjAgOTQuNTY4NyAyMCA5My41MTY2VjgyLjk4MDlDMjAgODIuOTgwOSA1OS45MjIgNzQuMjkwMSA2Ni4zNjY5IDcxLjk3NzhDNzIuODExNSA2OS42NjU2IDc1LjA0NzYgNjkuNTgyMSA4MC41MzIgNzEuNTkxQzg2LjAxNzMgNzMuNjAwOCAxMTguODEyIDc5LjUxNzYgMTI0LjIzMyA4MS41MDI5TDEyNC4yMyA5MS44ODk2QzEyNC4yMzEgOTIuOTMxMSAxMjIuOTggOTQuMDczNiAxMjAuMTQ5IDk1LjU0OTFaIiBmaWxsPSIjOTEyNjI2Ii8+CjxwYXRoIGQ9Ik0xMjAuMTQ3IDg1LjA3NTJDMTE0LjU4NSA4Ny45NzM0IDg1Ljc3IDk5LjgyMTggNzkuNjM1NCAxMDMuMDJDNzMuNTAxMSAxMDYuMjE5IDcwLjA5MzIgMTA2LjE4NyA2NS4yNDcyIDEwMy44NzFDNjAuNDAwNyAxMDEuNTU1IDI5LjczNzEgODkuMTY2OCAyNC4yMTM2IDg2LjUyOEMxOC42OTAxIDgzLjg4NzYgMTguNTc0NCA4Mi4wNzA0IDI0LjAwMDMgNzkuOTQ1OEMyOS40MjYxIDc3LjgyMDUgNTkuOTIxNSA2NS44NTYxIDY2LjM2NzIgNjMuNTQzOEM3Mi44MTE4IDYxLjIzMjQgNzUuMDQ3NSA2MS4xNDgxIDgwLjUzMTkgNjMuMTU3OEM4Ni4wMTY4IDY1LjE2NjggMTE0LjY2IDc2LjU2NzYgMTIwLjA3OSA3OC41NTI1QzEyNS41MDEgODAuNTM5OSAxMjUuNzA5IDgyLjE3NjMgMTIwLjE0NyA4NS4wNzUyWiIgZmlsbD0iI0M2MzAyQiIvPgo8cGF0aCBkPSJNMTIwLjE0OSA3OC41MDJDMTE0LjU4NiA4MS40MDE4IDg1Ljc3MDkgOTMuMjQ5MyA3OS42MzYzIDk2LjQ0ODhDNzMuNTAxNiA5OS42NDYyIDcwLjA5MzcgOTkuNjE1MiA2NS4yNDcyIDk3LjI5ODVDNjAuNDAwOCA5NC45ODMgMjkuNzM2NCA4Mi41OTUyIDI0LjIxMjUgNzkuOTU0N0MyMS40NTE5IDc4LjYzNTUgMjAgNzcuNTIzMiAyMCA3Ni40NzA3VjY1LjkzMzhDMjAgNjUuOTMzOCA1OS45MjIgNTcuMjQzNCA2Ni4zNjY5IDU0LjkzMTFDNzIuODExNSA1Mi42MTg5IDc1LjA0NzYgNTIuNTM1IDgwLjUzMiA1NC41NDQzQzg2LjAxNzcgNTYuNTUzNiAxMTguODEzIDYyLjQ2OTMgMTI0LjIzMyA2NC40NTVMMTI0LjIzIDc0Ljg0MjhDMTI0LjIzMSA3NS44ODQgMTIyLjk4IDc3LjAyNjQgMTIwLjE0OSA3OC41MDJaIiBmaWxsPSIjOTEyNjI2Ii8+CjxwYXRoIGQ9Ik0xMjAuMTQ3IDY4LjAyODJDMTE0LjU4NSA3MC45MjcxIDg1Ljc3IDgyLjc3NDcgNzkuNjM1NCA4NS45NzM3QzczLjUwMTEgODkuMTcxNiA3MC4wOTMyIDg5LjE0MDIgNjUuMjQ3MiA4Ni44MjM1QzYwLjQwMDcgODQuNTA4NCAyOS43MzcxIDcyLjEyMDEgMjQuMjEzNiA2OS40ODA5QzE4LjY5MDEgNjYuODQxMyAxOC41NzQ0IDY1LjAyMzcgMjQuMDAwMyA2Mi44OTg0QzI5LjQyNjEgNjAuNzc0MiA1OS45MjE5IDQ4LjgwOSA2Ni4zNjcyIDQ2LjQ5NzJDNzIuODExOCA0NC4xODUzIDc1LjA0NzUgNDQuMTAxNCA4MC41MzE5IDQ2LjExMDhDODYuMDE2OCA0OC4xMTk3IDExNC42NiA1OS41MTk3IDEyMC4wNzkgNjEuNTA1NUMxMjUuNTAxIDYzLjQ5MjQgMTI1LjcwOSA2NS4xMjkyIDEyMC4xNDcgNjguMDI4MloiIGZpbGw9IiNDNjMwMkIiLz4KPHBhdGggZD0iTTEyMC4xNDkgNjAuODIyNEMxMTQuNTg2IDYzLjcyMTQgODUuNzcwOSA3NS41Njk4IDc5LjYzNjMgNzguNzY5MkM3My41MDE2IDgxLjk2NzEgNzAuMDkzNyA4MS45MzU3IDY1LjI0NzIgNzkuNjE5QzYwLjQwMDggNzcuMzAzNSAyOS43MzY0IDY0LjkxNTIgMjQuMjEyNSA2Mi4yNzZDMjEuNDUxOSA2MC45NTU2IDIwIDU5Ljg0MjggMjAgNTguNzkxNVY0OC4yNTQyQzIwIDQ4LjI1NDIgNTkuOTIyIDM5LjU2NDIgNjYuMzY2OSAzNy4yNTI0QzcyLjgxMTUgMzQuOTM5NyA3NS4wNDc2IDM0Ljg1NjcgODAuNTMyIDM2Ljg2NTZDODYuMDE3NyAzOC44NzQ5IDExOC44MTMgNDQuNzkwNSAxMjQuMjMzIDQ2Ljc3NjNMMTI0LjIzIDU3LjE2MzdDMTI0LjIzMSA1OC4yMDQgMTIyLjk4IDU5LjM0NjUgMTIwLjE0OSA2MC44MjI0WiIgZmlsbD0iIzkxMjYyNiIvPgo8cGF0aCBkPSJNMTIwLjE0NyA1MC4zNDlDMTE0LjU4NSA1My4yNDc5IDg1Ljc2OTggNjUuMDk2MyA3OS42MzUyIDY4LjI5NDFDNzMuNTAwOSA3MS40OTIgNzAuMDkzIDcxLjQ2MDYgNjUuMjQ2OSA2OS4xNDUxQzYwLjQwMDkgNjYuODI4MyAyOS43MzY5IDU0LjQ0MDkgMjQuMjEzOCA1MS44MDEzQzE4LjY4OTkgNDkuMTYyMSAxOC41NzQ2IDQ3LjM0NDEgMjQgNDUuMjE5MkMyOS40MjU5IDQzLjA5NDYgNTkuOTIxNyAzMS4xMzEgNjYuMzY3IDI4LjgxODRDNzIuODExNiAyNi41MDYxIDc1LjA0NzMgMjYuNDIzIDgwLjUzMTcgMjguNDMyNEM4Ni4wMTY2IDMwLjQ0MTcgMTE0LjY1OSA0MS44NDE4IDEyMC4wNzkgNDMuODI3NUMxMjUuNTAxIDQ1LjgxMjggMTI1LjcwOSA0Ny40NSAxMjAuMTQ3IDUwLjM0OVoiIGZpbGw9IiNDNjMwMkIiLz4KPHBhdGggZD0iTTg0Ljg1NDEgNDAuMDk5NEw3NS44OTI2IDQxLjAyOThMNzMuODg2NSA0NS44NTdMNzAuNjQ2MyA0MC40NzAzTDYwLjI5ODMgMzkuNTQwNEw2OC4wMTk3IDM2Ljc1NThMNjUuNzAzIDMyLjQ4MTRMNzIuOTMyMSAzNS4zMDg4TDc5Ljc0NzEgMzMuMDc3NUw3Ny45MDUyIDM3LjQ5NzJMODQuODU0MSA0MC4wOTk0Wk03My4zNTE1IDYzLjUxODRMNTYuNjI2NiA1Ni41ODE2TDgwLjU5MiA1Mi45MDI5TDczLjM1MTUgNjMuNTE4NFpNNTAuMTYzNyA0Mi43ODI2QzU3LjIzODEgNDIuNzgyNiA2Mi45NzMgNDUuMDA1NyA2Mi45NzMgNDcuNzQ3NUM2Mi45NzMgNTAuNDkwMSA1Ny4yMzgxIDUyLjcxMjggNTAuMTYzNyA1Mi43MTI4QzQzLjA4OTMgNTIuNzEyOCAzNy4zNTQ1IDUwLjQ4OTcgMzcuMzU0NSA0Ny43NDc1QzM3LjM1NDUgNDUuMDA1NyA0My4wODkzIDQyLjc4MjYgNTAuMTYzNyA0Mi43ODI2WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTk1LjQ0MzQgNDEuNDE3NEwxMDkuNjI3IDQ3LjAyMjRMOTUuNDU1NiA1Mi42MjJMOTUuNDQzNCA0MS40MTc0WiIgZmlsbD0iIzYyMUIxQyIvPgo8cGF0aCBkPSJNNzkuNzUyOSA0Ny42MjYxTDk1LjQ0NDkgNDEuNDE4OUw5NS40NTcxIDUyLjYyMzZMOTMuOTE4NCA1My4yMjU0TDc5Ljc1MjkgNDcuNjI2MVoiIGZpbGw9IiM5QTI5MjgiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl82ODNfMzIxMyIgeDE9IjE4OSIgeTE9IjIxMC41IiB4Mj0iMCIgeTI9IjAiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0E4MDAwMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRkNGQ0YiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "size" + ], + [ + "spec", + "storageClass" + ], + [ + "spec", + "external" + ], + [ + "spec", + "version" + ], + [ + "spec", + "authEnabled" + ] + ], + "plural": "Redis", + "singular": "Redis", + "tags": [ + "cache" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-redis-application-default-redis", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "redis-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "redis-{{ .name }}-auth" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "rfs-redis-{{ .name }}", + "rfrm-redis-{{ .name }}", + "rfrs-redis-{{ .name }}", + "redis-{{ .name }}-external-lb" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "seaweedfs-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:24Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "seaweedfs-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "seaweedfs", + "resourceVersion": "35884", + "uid": "5776b834-c47b-49d3-ad42-2b8b02cafbd7" + }, + "spec": { + "application": { + "kind": "SeaweedFS", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"host\":{\"description\":\"The hostname used to access SeaweedFS externally (defaults to 's3' subdomain for the tenant host).\",\"type\":\"string\",\"default\":\"\"},\"topology\":{\"description\":\"The topology of the SeaweedFS cluster.\",\"type\":\"string\",\"default\":\"Simple\",\"enum\":[\"Simple\",\"MultiZone\",\"Client\"]},\"replicationFactor\":{\"description\":\"Replication factor: number of replicas for each volume in the SeaweedFS cluster.\",\"type\":\"integer\",\"default\":2},\"db\":{\"description\":\"Database configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"replicas\":{\"description\":\"Number of database replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume size.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\"}}},\"master\":{\"description\":\"Master service configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"replicas\":{\"description\":\"Number of master replicas.\",\"type\":\"integer\",\"default\":3},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}},\"filer\":{\"description\":\"Filer service configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"grpcHost\":{\"description\":\"The hostname used to expose or access the filer service externally.\",\"type\":\"string\",\"default\":\"\"},\"grpcPort\":{\"description\":\"The port used to access the filer service externally.\",\"type\":\"integer\",\"default\":443},\"replicas\":{\"description\":\"Number of filer replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"whitelist\":{\"description\":\"A list of IP addresses or CIDR ranges that are allowed to access the filer service.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}}}},\"volume\":{\"description\":\"Volume service configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"diskType\":{\"description\":\"SeaweedFS disk type tag for the default volume servers (e.g., \\\"hdd\\\", \\\"ssd\\\").\",\"type\":\"string\",\"default\":\"\"},\"pools\":{\"description\":\"A map of storage pools. Each pool creates a separate Volume StatefulSet with its own disk type.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"required\":[\"diskType\"],\"properties\":{\"diskType\":{\"description\":\"SeaweedFS disk type tag (e.g., \\\"ssd\\\", \\\"hdd\\\", \\\"nvme\\\").\",\"type\":\"string\"},\"replicas\":{\"description\":\"Number of volume replicas. Defaults to volume.replicas (Simple) or zone.replicas/volume.replicas (MultiZone).\",\"type\":\"integer\"},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted. Defaults to volume.resourcesPreset.\",\"type\":\"string\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume size. Defaults to volume.size (Simple) or zone.size/volume.size (MultiZone).\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"Kubernetes StorageClass for the pool. Defaults to volume.storageClass.\",\"type\":\"string\"}}}},\"replicas\":{\"description\":\"Number of volume replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume size.\",\"default\":\"10Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"\"},\"zones\":{\"description\":\"A map of zones for MultiZone topology. Each zone can have its own number of replicas and size.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"dataCenter\":{\"description\":\"SeaweedFS data center name for this zone. Defaults to the zone name.\",\"type\":\"string\"},\"nodeSelector\":{\"description\":\"YAML nodeSelector for this zone (default: topology.kubernetes.io/zone: \u003czoneName\u003e).\",\"type\":\"string\"},\"pools\":{\"description\":\"A map of storage pools for this zone. Each pool creates a separate Volume StatefulSet per zone.\",\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\",\"required\":[\"diskType\"],\"properties\":{\"diskType\":{\"description\":\"SeaweedFS disk type tag (e.g., \\\"ssd\\\", \\\"hdd\\\", \\\"nvme\\\").\",\"type\":\"string\"},\"replicas\":{\"description\":\"Number of volume replicas. Defaults to volume.replicas (Simple) or zone.replicas/volume.replicas (MultiZone).\",\"type\":\"integer\"},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted. Defaults to volume.resourcesPreset.\",\"type\":\"string\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"size\":{\"description\":\"Persistent Volume size. Defaults to volume.size (Simple) or zone.size/volume.size (MultiZone).\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"Kubernetes StorageClass for the pool. Defaults to volume.storageClass.\",\"type\":\"string\"}}}},\"replicas\":{\"description\":\"Number of replicas in the zone.\",\"type\":\"integer\"},\"size\":{\"description\":\"Zone storage size.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store zone data. Defaults to volume.storageClass.\",\"type\":\"string\"}}}}}},\"s3\":{\"description\":\"S3 service configuration.\",\"type\":\"object\",\"default\":{},\"properties\":{\"replicas\":{\"description\":\"Number of S3 replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.small\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]}}}}}", + "plural": "seaweedfses", + "singular": "seaweedfs" + }, + "dashboard": { + "category": "Administration", + "description": "Seaweedfs", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82NzlfMTkxMCkiLz4KPHBhdGggZD0iTTEzOC42ODUgMTIxLjA1N0MxMzguNjg1IDEyNi42NTIgMTM2LjQ2MiAxMzIuMDE3IDEzMi41MDQgMTM1Ljk3M0MxMjguNTQ3IDEzOS45MjkgMTIzLjE3OSAxNDIuMTUxIDExNy41ODIgMTQyLjE1MUMxMTEuOTg1IDE0Mi4xNTEgMTA2LjYxOCAxMzkuOTI5IDEwMi42NiAxMzUuOTczQzk4LjcwMjggMTMyLjAxNyA5Ni40Nzk1IDEyNi42NTIgOTYuNDc5NSAxMjEuMDU3Qzk2LjQ3OTUgMTE4LjI4NyA5Ny4wMjUzIDExNS41NDQgOTguMDg1OCAxMTIuOTg1Qzk5LjE0NjMgMTEwLjQyNSAxMDAuNzAxIDEwOC4xIDEwMi42NiAxMDYuMTQxQzEwNC42MiAxMDQuMTgyIDEwNi45NDYgMTAyLjYyOSAxMDkuNTA3IDEwMS41NjlDMTEyLjA2NyAxMDAuNTA5IDExNC44MTEgOTkuOTYyOSAxMTcuNTgyIDk5Ljk2MjlDMTIwLjM1MyA5OS45NjI5IDEyMy4wOTggMTAwLjUwOSAxMjUuNjU4IDEwMS41NjlDMTI4LjIxOCAxMDIuNjI5IDEzMC41NDQgMTA0LjE4MiAxMzIuNTA0IDEwNi4xNDFDMTM0LjQ2NCAxMDguMSAxMzYuMDE4IDExMC40MjUgMTM3LjA3OSAxMTIuOTg1QzEzOC4xMzkgMTE1LjU0NCAxMzguNjg1IDExOC4yODcgMTM4LjY4NSAxMjEuMDU3WiIgZmlsbD0idXJsKCNwYWludDFfcmFkaWFsXzY3OV8xOTEwKSIvPgo8cGF0aCBkPSJNMTEwLjMzNiAxMjYuMTQ3SDEyMy42OFYxMzYuODIzSDExMC4zMzZWMTI2LjE0N1oiIGZpbGw9IiMwRjVFOUMiLz4KPHBhdGggZD0iTTExOS4yNyAxMTIuMjk0QzExOS4yNyAxMTIuNzE0IDExOS4xNzggMTEzLjEzMSAxMTkgMTEzLjUxOUMxMTguODIxIDExMy45MDggMTE4LjU2IDExNC4yNjEgMTE4LjIzIDExNC41NThDMTE3LjkwMSAxMTQuODU1IDExNy41MDkgMTE1LjA5MSAxMTcuMDc5IDExNS4yNTJDMTE2LjY0OCAxMTUuNDEzIDExNi4xODYgMTE1LjQ5NiAxMTUuNzIgMTE1LjQ5NkMxMTQuNzc4IDExNS40OTYgMTEzLjg3NSAxMTUuMTU4IDExMy4yMSAxMTQuNTU4QzExMi41NDQgMTEzLjk1NyAxMTIuMTcgMTEzLjE0MyAxMTIuMTcgMTEyLjI5NEMxMTIuMTcgMTExLjQ0NSAxMTIuNTQ0IDExMC42MyAxMTMuMjEgMTEwLjAzQzExMy44NzUgMTA5LjQyOSAxMTQuNzc4IDEwOS4wOTIgMTE1LjcyIDEwOS4wOTJDMTE2LjE4NiAxMDkuMDkyIDExNi42NDggMTA5LjE3NSAxMTcuMDc5IDEwOS4zMzZDMTE3LjUwOSAxMDkuNDk2IDExNy45MDEgMTA5LjczMiAxMTguMjMgMTEwLjAzQzExOC41NiAxMTAuMzI3IDExOC44MjEgMTEwLjY4IDExOSAxMTEuMDY4QzExOS4xNzggMTExLjQ1NyAxMTkuMjcgMTExLjg3MyAxMTkuMjcgMTEyLjI5NFoiIGZpbGw9IiM1OTY4NkYiLz4KPHBhdGggZD0iTTEyOC4xMSAxMTQuMTAzQzEyOC4xMSAxMTQuOTUzIDEyNy43MzYgMTE1Ljc2NyAxMjcuMDcgMTE2LjM2OEMxMjYuNDA0IDExNi45NjggMTI1LjUwMSAxMTcuMzA1IDEyNC41NiAxMTcuMzA1QzEyNC4wOTQgMTE3LjMwNSAxMjMuNjMyIDExNy4yMjMgMTIzLjIwMSAxMTcuMDYyQzEyMi43NzEgMTE2LjkwMSAxMjIuMzc5IDExNi42NjUgMTIyLjA1IDExNi4zNjhDMTIxLjcyIDExNi4wNyAxMjEuNDU4IDExNS43MTcgMTIxLjI4IDExNS4zMjlDMTIxLjEwMiAxMTQuOTQgMTIxLjAxIDExNC41MjQgMTIxLjAxIDExNC4xMDNDMTIxLjAxIDExMy42ODMgMTIxLjEwMiAxMTMuMjY2IDEyMS4yOCAxMTIuODc4QzEyMS40NTggMTEyLjQ5IDEyMS43MiAxMTIuMTM3IDEyMi4wNSAxMTEuODM5QzEyMi4zNzkgMTExLjU0MiAxMjIuNzcxIDExMS4zMDYgMTIzLjIwMSAxMTEuMTQ1QzEyMy42MzIgMTEwLjk4NCAxMjQuMDk0IDExMC45MDEgMTI0LjU2IDExMC45MDFDMTI1LjUwMSAxMTAuOTAxIDEyNi40MDQgMTExLjIzOSAxMjcuMDcgMTExLjgzOUMxMjcuNzM2IDExMi40NCAxMjguMTEgMTEzLjI1NCAxMjguMTEgMTE0LjEwM1oiIGZpbGw9IiM1OTY4NkYiLz4KPHBhdGggZD0iTTEyMi4zMzMgMTE4Ljk3NkMxMjIuMzMzIDExOS44MjYgMTIxLjk1OCAxMjAuNjQgMTIxLjI5MyAxMjEuMjQxQzEyMC42MjcgMTIxLjg0MSAxMTkuNzI0IDEyMi4xNzggMTE4Ljc4MiAxMjIuMTc4QzExOC4zMTYgMTIyLjE3OCAxMTcuODU1IDEyMi4wOTYgMTE3LjQyNCAxMjEuOTM1QzExNi45OTMgMTIxLjc3NCAxMTYuNjAyIDEyMS41MzggMTE2LjI3MiAxMjEuMjQxQzExNS45NDMgMTIwLjk0MyAxMTUuNjgxIDEyMC41OSAxMTUuNTAzIDEyMC4yMDJDMTE1LjMyNCAxMTkuODEzIDExNS4yMzIgMTE5LjM5NyAxMTUuMjMyIDExOC45NzZDMTE1LjIzMiAxMTguNTU2IDExNS4zMjQgMTE4LjE0IDExNS41MDMgMTE3Ljc1MUMxMTUuNjgxIDExNy4zNjMgMTE1Ljk0MyAxMTcuMDEgMTE2LjI3MiAxMTYuNzEyQzExNi42MDIgMTE2LjQxNSAxMTYuOTkzIDExNi4xNzkgMTE3LjQyNCAxMTYuMDE4QzExNy44NTUgMTE1Ljg1NyAxMTguMzE2IDExNS43NzQgMTE4Ljc4MiAxMTUuNzc0QzExOS43MjQgMTE1Ljc3NCAxMjAuNjI3IDExNi4xMTIgMTIxLjI5MyAxMTYuNzEyQzEyMS45NTggMTE3LjMxMyAxMjIuMzMzIDExOC4xMjcgMTIyLjMzMyAxMTguOTc2WiIgZmlsbD0iIzU5Njg2RiIvPgo8cGF0aCBkPSJNMTE1LjMwOCAxMjEuOTA1QzExMy43MzUgMTIxLjQyNiAxMTUuNzA3IDEyMC42OCAxMTUuNDI5IDEyMC41NzNDMTE0LjY1MyAxMjAuMjc2IDExNS43MyAxMTkuMzMzIDExNi43NCAxMTguNTM5QzExNy42MjggMTE3Ljg0MSAxMTcuNjU5IDExNy44MzkgMTE3Ljg5MiAxMTguNDY4QzExOC4wMjQgMTE4LjgyMyAxMTguMzcxIDExOS4yMDYgMTE4LjY2NSAxMTkuMzE5QzExOS4yODkgMTE5LjU1OCAxMjAuOTUxIDExOS4yNjkgMTIwLjk1MSAxMTguODM1QzEyMC45NTEgMTE4LjIyMyAxMjEuNDE1IDExOC42OTkgMTIxLjc5NCAxMTkuNTMxQzEyMi40NTcgMTIwLjk4NyAxMjIuNDM3IDEyMi40NzIgMTIxLjQ1IDEyMi40NzJDMTIwLjg1OSAxMjIuNDcyIDEyMC4zMSAxMjIuNjkxIDEyMC4xOSAxMjMuMTQ3QzExNS4wNDYgMTI0LjYgMTE2LjQ3MSAxMjMuMjg0IDExNS4zMDggMTIxLjkwNVpNMTIzLjA5NCAxMTguMDU0QzEyMS42MDkgMTE3LjQ2NiAxMjAuNTQ3IDExNC44MzggMTIwLjU0NyAxMTMuMzA5QzEyMC41NDcgMTExLjMyMyAxMjIuNTQxIDEwOS4wOTUgMTI0LjMxNyAxMDkuMDk1QzEyOC4zMTUgMTA5LjA5NSAxMzAuNjg0IDExMi4yNjEgMTI4LjgzOCAxMTguNDA5QzEyOC4zODUgMTE5LjkxOSAxMjMuOTMzIDExOC4zODcgMTIzLjA5NCAxMTguMDU0Wk0xMjUuODY2IDExNS42NDlDMTI3LjU0NCAxMTQuNDc0IDEyNS44NTcgMTExLjc1NSAxMjMuOTgxIDExMi42MUMxMjIuNDc5IDExMy4yOTQgMTIzLjExOSAxMTYuMTE1IDEyNC43NyAxMTYuMTY0QzEyNC45NjEgMTE2LjE2OSAxMjUuNDU0IDExNS45MzggMTI1Ljg2NiAxMTUuNjQ5Wk0xMjQuMzM5IDExNC41NzlDMTIzLjc3MSAxMTQuMzgxIDEyMy44MDMgMTEzLjI1NiAxMjQuMzgzIDExMy4wMzRDMTI0LjkwMiAxMTIuODM1IDEyNS42MDQgMTEzLjM5OCAxMjUuNjA0IDExNC4wMTRDMTI1LjYwNCAxMTQuNDg5IDEyNC45MzYgMTE0Ljc4NyAxMjQuMzM5IDExNC41NzlaTTExMi4zMTkgMTE2Ljk4QzEwOS45NiAxMTUuNjcgMTEwLjI4NiAxMTEuMDA2IDExMi40MTcgMTA4Ljk2NUMxMTQuMzk2IDEwNy4wNjkgMTE4Ljc3OCAxMDcuMTAzIDExOS43NjQgMTA5LjQ2MkMxMjAuNDE1IDExMS4wMjEgMTIwLjIyOCAxMTIuNiAxMTkuMzk4IDExNC4wNzdDMTE4LjE5NCAxMTYuMjE5IDExNC4yNDIgMTE4LjA0OSAxMTIuMzE5IDExNi45OFpNMTE2LjU2IDExMy41OTNDMTE3LjMyNSAxMTIuOTAxIDExNy4yOTcgMTEyLjA2IDExNi41NzIgMTExLjI1OUMxMTUuNzc3IDExMC4zNzkgMTE0LjY5MiAxMTAuMzQ1IDExNC4wMzUgMTExLjM0N0MxMTMuNTI0IDExMi4xMjcgMTEzLjQzMSAxMTIuNTI4IDExMy45NDMgMTEzLjMwOUMxMTQuNTggMTE0LjI4IDExNS42NyAxMTQuMzk5IDExNi41NiAxMTMuNTkzWk0xMTQuMzc0IDExMi4zNEMxMTQuMTI4IDExMS42OTggMTE0Ljk4NSAxMTAuOTgxIDExNS42OCAxMTEuMjQ3QzExNS45NzQgMTExLjM2IDExNi4xNjQgMTExLjcxOCAxMTYuMTAyIDExMi4wNDRDMTE1Ljk2MSAxMTIuNzg1IDExNC42MzIgMTEzLjAxMiAxMTQuMzc0IDExMi4zNFoiIGZpbGw9IiNEM0Q2REEiLz4KPHBhdGggZD0iTTExOC40NjMgMTIxLjAwOEwxMTcuOTQ1IDEyMC43OEMxMTcuNTEgMTIwLjY4NSAxMTcuMjMxIDEyMS4xMDcgMTE3LjEzNiAxMjEuNTQzTDExNi44ODEgMTIyLjcwOUMxMTYuNzg2IDEyMy4xNDUgMTE3LjA2MSAxMjMuNTcxIDExNy40OTYgMTIzLjY2NkwxMTguNDQ3IDEyMy44NzRDMTE4Ljg4MiAxMjMuOTY5IDExOS4zMTEgMTIzLjY5NCAxMTkuNDA2IDEyMy4yNTlMMTE5LjY4NSAxMjEuNTU2QzExOS43OCAxMjEuMTIgMTE5LjQ3OSAxMjEuMjI4IDExOS4wNDMgMTIxLjEzM0wxMTguNjI4IDEyMS4wNDNDMTE4LjU3MyAxMjEuMzIxIDExOC41MTYgMTIxLjYxMyAxMTguNDcxIDEyMS44MzNDMTE4LjQzOCAxMjEuOTk4IDExOC40MDcgMTIyLjE0OCAxMTguMzc5IDEyMi4yODJDMTE4LjM1MSAxMjIuNDE1IDExOC4zMjcgMTIyLjUzMyAxMTguMzA1IDEyMi42MzVDMTE4LjI4MiAxMjIuNzM4IDExOC4yNjIgMTIyLjgyNSAxMTguMjQ1IDEyMi44OTdDMTE4LjIyOCAxMjIuOTY5IDExOC4yMTQgMTIzLjAyNSAxMTguMjAyIDEyMy4wNjhDMTE4LjE5NiAxMjMuMDg5IDExOC4xOTMgMTIzLjEwNyAxMTguMTg4IDEyMy4xMjFDMTE4LjE4MyAxMjMuMTM1IDExOC4xNzggMTIzLjE0NSAxMTguMTc1IDEyMy4xNTJDMTE4LjE3MyAxMjMuMTU1IDExOC4xNzIgMTIzLjE1NiAxMTguMTcxIDEyMy4xNThDMTE4LjE3IDEyMy4xNTkgMTE4LjE2OCAxMjMuMTYgMTE4LjE2NyAxMjMuMTZMMTE4LjE2NSAxMjMuMTU4QzExOC4xNjQgMTIzLjE1NiAxMTguMTYzIDEyMy4xNTIgMTE4LjE2MyAxMjMuMTQ4QzExOC4xNjIgMTIzLjE0IDExOC4xNjIgMTIzLjEyOSAxMTguMTYzIDEyMy4xMTVDMTE4LjE2MyAxMjMuMSAxMTguMTYzIDEyMy4wODMgMTE4LjE2NSAxMjMuMDYxQzExOC4xNjggMTIzLjAxOCAxMTguMTc1IDEyMi45NjEgMTE4LjE4MyAxMjIuODkxQzExOC4xOTIgMTIyLjgyIDExOC4yMDMgMTIyLjczNiAxMTguMjE2IDEyMi42NEMxMTguMjI5IDEyMi41NDMgMTE4LjI0NiAxMjIuNDMxIDExOC4yNjQgMTIyLjMwOEMxMTguMjgxIDEyMi4xODUgMTE4LjMwMSAxMjIuMDUxIDExOC4zMjMgMTIxLjkwM0MxMTguMzQ2IDEyMS43NTUgMTE4LjM3IDEyMS41OTIgMTE4LjM5NyAxMjEuNDE5QzExOC40MTYgMTIxLjI5OSAxMTguNDQyIDEyMS4xNCAxMTguNDYzIDEyMS4wMDhaIiBmaWxsPSIjOThDNkQ4Ii8+CjxwYXRoIGQ9Ik0xMDMuNTgxIDExNi4zNjdDMTAzLjQ3OSAxMTYuMTAzIDEwMy42MjIgMTE1LjY5OSAxMDMuODk4IDExNS40NjlDMTA0LjMwMyAxMTUuMTMzIDEwNC41MDQgMTE1LjE1NSAxMDQuOTMgMTE1LjU4MUMxMDUuMjIgMTE1Ljg3MSAxMDUuMzU1IDExNi4yNzYgMTA1LjIzIDExNi40NzlDMTA0LjkwMiAxMTcuMDA5IDEwMy43OTggMTE2LjkzNCAxMDMuNTgxIDExNi4zNjdaIiBmaWxsPSIjOThDNkQ4Ii8+CjxwYXRoIGQ9Ik0xMDYuMDM4IDExMi4yODFDMTA1LjY4IDExMS44NDkgMTA1LjcwMiAxMTEuNjYgMTA2LjE2NSAxMTEuMTk3QzEwNi42ODkgMTEwLjY3NCAxMDYuNzY0IDExMC42NzQgMTA3LjI4NyAxMTEuMTk3QzEwNy43NTEgMTExLjY2IDEwNy43NzMgMTExLjg0OSAxMDcuNDE1IDExMi4yODFDMTA3LjE3NiAxMTIuNTY4IDEwNi44NjYgMTEyLjgwMyAxMDYuNzI2IDExMi44MDNDMTA2LjU4NiAxMTIuODAzIDEwNi4yNzcgMTEyLjU2OCAxMDYuMDM4IDExMi4yODFaIiBmaWxsPSIjOThDNkQ4Ii8+CjxwYXRoIGQ9Ik0xMDYuMDM4IDEwNy4yMjRDMTA1LjY4MiAxMDYuNzk1IDEwNS42OTQgMTA2LjYxMiAxMDYuMTA2IDEwNi4yMDFDMTA2LjY1IDEwNS42NTcgMTA3LjczOCAxMDUuODggMTA3LjczOCAxMDYuNTM2QzEwNy43MzggMTA2Ljk3IDEwNy4wNzIgMTA3Ljc0NyAxMDYuNyAxMDcuNzQ3QzEwNi41NzUgMTA3Ljc0NyAxMDYuMjc3IDEwNy41MTIgMTA2LjAzOCAxMDcuMjI0WiIgZmlsbD0iIzk4QzZEOCIvPgo8cGF0aCBkPSJNMTE3Ljk1NSAxMzYuNTQxQzExNC41NzggMTM2LjExMSAxMTAuMDg3IDEzNC44ODEgMTA5LjQxIDEzNC4yNzRDMTA4LjEyMyAxMzMuMTE5IDEwOC45NDIgMTI3Ljg3OSAxMTAuNDY2IDEyNi41NEMxMTEuMzg3IDEyNS43MzEgMTE1LjAzOSAxMjQuNjYzIDExNy4xODIgMTI1LjE2OUMxMTkuNjQyIDEyNS43NDkgMTIzLjkzMiAxMjguNjQ4IDEyNC4yNSAxMjkuNTA4QzEyNC42MjUgMTMwLjUyMiAxMjQuMDQ4IDEzNC41NDEgMTIzLjMyMyAxMzUuNTM2QzEyMi42OTQgMTM2LjM5OSAxMjAuMzI1IDEzNi44NDMgMTE3Ljk1NSAxMzYuNTQxWk0xMjAuNTQgMTM0LjA4NEMxMjEuMjk3IDEzMy4zOTkgMTIxLjM0MiAxMzEuODQyIDEyMC42MjcgMTMxLjEyNkMxMTkuNDkgMTI5Ljk4OSAxMTcuMTEyIDEzMC44NjkgMTE3LjExMiAxMzIuNDI4QzExNy4xMTIgMTM0LjMwNCAxMTkuMTg5IDEzNS4zMDcgMTIwLjU0IDEzNC4wODRaTTExOC41ODIgMTMzLjEyNUMxMTguMzExIDEzMi40MTkgMTE4LjY4IDEzMS42MDggMTE5LjI3MiAxMzEuNjA4QzEyMCAxMzEuNjA4IDEyMC4yMjggMTMyLjE3MyAxMTkuODEyIDEzMi45NDlDMTE5LjM4MSAxMzMuNzU1IDExOC44NTMgMTMzLjgzIDExOC41ODIgMTMzLjEyNVpNMTE2LjQyMiAxMzMuMTQzQzExNy4wOTQgMTMyLjMzMyAxMTYuNzExIDEzMS4xNzYgMTE1LjY4MSAxMzAuOTAyQzExNC41ODEgMTMwLjYxIDExNC4wNTIgMTMxLjE4MyAxMTQuODY5IDEzMS43OEMxMTUuNjgzIDEzMi4zNzUgMTE1LjU1MSAxMzIuNjc5IDExNC41MzMgMTMyLjU1N0MxMTMuMzI3IDEzMi40MTMgMTEyLjgzMyAxMzEuNTY2IDExMy4yNTQgMTMwLjM2MkMxMTMuNjgxIDEyOS4xNDIgMTE1LjE5NyAxMjguODYzIDExNS43NTMgMTI5LjkwMkMxMTYuMTkzIDEzMC43MjUgMTE2LjYyNyAxMzAuNzkzIDExNi45IDEzMC4wODNDMTE3LjIyOSAxMjkuMjI0IDExNS45MTQgMTI4LjIzNyAxMTQuNDQgMTI4LjIzN0MxMTEuOTkzIDEyOC4yMzcgMTEwLjgxNiAxMzEuMDc0IDExMi41NDYgMTMyLjgwM0MxMTMuNSAxMzMuNzU4IDExNS43NDkgMTMzLjk1NSAxMTYuNDIyIDEzMy4xNDNaIiBmaWxsPSIjN0JBOUI5Ii8+CjxwYXRoIGQ9Ik0xMjAuMTE4IDEzOC41OTJDMTE4Ljc1MSAxMzcuMjk3IDEyMS45MTYgMTM2LjA5NiAxMjMuNjA2IDEzOC4yODNDMTI0LjQ2OSAxMzkuMzIyIDEyMi44NTMgMTM5Ljk3NiAxMjAuMTE4IDEzOC41OTJaTTEwNi4xMiAxMzUuNjU4QzEwNC43NTEgMTM0LjI4OSAxMDYuOTYzIDEzMy45MDQgMTA4LjU4MSAxMzUuMjNMMTA5Ljk0MSAxMzUuOTJMMTA4LjA1OSAxMzYuMDYxQzEwNy4yMTUgMTM2LjA2MiAxMDYuMzQzIDEzNS44ODEgMTA2LjEyIDEzNS42NThWMTM1LjY1OFpNMTI1LjM2MyAxMjcuODY2QzEyNS4wODIgMTI3LjQxIDEyOC4zMzMgMTI2LjI2NyAxMjguNjg4IDEyNi40ODZDMTI4Ljg0NiAxMjYuNTg0IDEyOC45NzUgMTI3LjMzNyAxMjguOTc1IDEyOC4xNjFDMTI4Ljk3NSAxMjkuMjM5IDEyOC44NCAxMjkuNjU4IDEyOC40OSAxMjkuNjU4QzEyOC4yMjIgMTI5LjY1OCAxMjUuNDc2IDEyOC4wNDcgMTI1LjM2MyAxMjcuODY2Wk0xMTguNjQxIDEyMS4wOTVDMTE0Ljg3MSAxMjAuNzUzIDExNS4zNzggMTE5LjMyNyAxMTYuMzYxIDExOC40OTlDMTE2LjkyOCAxMTguMDIxIDExNy4zNCAxMTcuNzc5IDExNy45MTMgMTE3LjY2N0MxMTcuOTEzIDExNy42NjcgMTE3Ljg3MiAxMTkuMDQ2IDExOC42NjYgMTE5LjMxOUMxMTkuMjk3IDExOS41MzYgMTIwLjI3OCAxMTkuMDY0IDEyMC40NzEgMTE4LjY3NUMxMjIuMTg4IDExNS4yMDEgMTIxLjQxNSAxMTguNjk5IDEyMS43OTQgMTE5LjUzMkMxMjMuMjM4IDEyNC4wMDcgMTIwLjE4OCAxMjEuNzMgMTE4LjY0MSAxMjEuMDk1Wk0xMDQuOTEyIDEyMS4yM0MxMDQuMjQyIDEyMC40ODcgMTAzLjY5MyAxMTkuNzI5IDEwMy42OTMgMTE5LjU0NEMxMDMuNjkzIDExOS4xMTYgMTA0Ljc0NiAxMTkuMTEyIDEwNS44NjMgMTE5LjUzN0MxMDYuNTkzIDExOS44MTQgMTEwLjM0NyAxMjAuMDA2IDExMC4zNDcgMTIxLjE1M0MxMTAuMzQ3IDEyMS44OTkgMTA4Ljg5IDEyMy43NjIgMTA4LjcyNiAxMjMuNzYyQzEwOC41NjMgMTIzLjc2MiAxMDUuNTgzIDEyMS45NzIgMTA0LjkxMiAxMjEuMjNaIiBmaWxsPSIjQTZCM0MyIi8+CjxwYXRoIGQ9Ik0xMTguNDYzIDEyMS4wMDhDMTE4LjQ0MiAxMjEuMTQgMTE4LjQxNiAxMjEuMjk5IDExOC4zOTcgMTIxLjQxOUMxMTguMzcgMTIxLjU5MiAxMTguMzQ1IDEyMS43NTUgMTE4LjMyMyAxMjEuOTAzQzExOC4zIDEyMi4wNTEgMTE4LjI4MSAxMjIuMTg1IDExOC4yNjMgMTIyLjMwOEMxMTguMjQ1IDEyMi40MzEgMTE4LjIyOSAxMjIuNTQyIDExOC4yMTYgMTIyLjYzOUMxMTguMjAzIDEyMi43MzYgMTE4LjE5MSAxMjIuODIgMTE4LjE4MyAxMjIuODlDMTE4LjE3NSAxMjIuOTYxIDExOC4xNjggMTIzLjAxOCAxMTguMTY1IDEyMy4wNjFDMTE4LjE2MyAxMjMuMDgzIDExOC4xNjQgMTIzLjEgMTE4LjE2MyAxMjMuMTE1QzExOC4xNjIgMTIzLjEyOSAxMTguMTYyIDEyMy4xNCAxMTguMTYzIDEyMy4xNDhDMTE4LjE2MyAxMjMuMTUyIDExOC4xNjQgMTIzLjE1NiAxMTguMTY1IDEyMy4xNThMMTE4LjE2NyAxMjMuMTZDMTE4LjE2OCAxMjMuMTYgMTE4LjE3IDEyMy4xNTkgMTE4LjE3MSAxMjMuMTU4QzExOC4xNzIgMTIzLjE1NyAxMTguMTczIDEyMy4xNTUgMTE4LjE3NSAxMjMuMTUyQzExOC4xNzggMTIzLjE0NSAxMTguMTgyIDEyMy4xMzUgMTE4LjE4NyAxMjMuMTIxQzExOC4xOTIgMTIzLjEwNyAxMTguMTk2IDEyMy4wODkgMTE4LjIwMiAxMjMuMDY3QzExOC4yMTMgMTIzLjAyNSAxMTguMjI4IDEyMi45NjkgMTE4LjI0NSAxMjIuODk3QzExOC4yNjIgMTIyLjgyNSAxMTguMjgyIDEyMi43MzggMTE4LjMwNSAxMjIuNjM1QzExOC4zMjcgMTIyLjUzMyAxMTguMzUxIDEyMi40MTUgMTE4LjM3OSAxMjIuMjgxQzExOC40MDYgMTIyLjE0OCAxMTguNDM4IDEyMS45OTggMTE4LjQ3MSAxMjEuODMzQzExOC41MTYgMTIxLjYxMyAxMTguNTczIDEyMS4zMjEgMTE4LjYyOCAxMjEuMDQzTDExOC40NjMgMTIxLjAwOFoiIGZpbGw9IiM0QzlDQkIiLz4KPHBhdGggZD0iTTMwLjk5ODYgMTQyLjY3M0MyNi40NDg5IDE0MC45MTYgMjEuNDY2NCAxMzYuODA1IDE4Ljc5MjEgMTMyLjYwM0MxNS40MDUzIDEyNy4yODEgMTQuNDA1MiAxMjMuNDE5IDE1LjA2MzYgMTE4LjIwM0MxNS42ODA2IDExMy4zMTUgMTcuMzU1OCAxMTAuNTU3IDIyLjIyMzIgMTA2LjQxM0MyOS4wNDE3IDEwMC42MDggMzQuNDg0NiA5Ny45Nzk5IDQwLjU5NDcgOTcuNTQxNUM0OS44MjEyIDk2Ljg3OTQgNTUuMDk3OCA5OS44MTA5IDU3LjY0NjUgMTA3LjAxNUM1OC41MDQzIDEwOS40MzkgNTguNjg1NiAxMTUuNTcgNTguMDU0NCAxMjAuODA5QzU3LjgzMTEgMTIyLjY2MyA1Ny40Nzg5IDEyNi4wNTUgNTcuMjcxOCAxMjguMzQ4QzU2LjU0NjcgMTM2LjM3NSA1NC40MTQ3IDE0MC40MTcgNDkuNjI1MyAxNDIuODQzQzQ4LjI5NzkgMTQzLjUxNiA0Ny43MTk5IDE0My41NjEgNDAuNjkyNCAxNDMuNTM5QzMzLjUxNTEgMTQzLjUxNiAzMy4wODEgMTQzLjQ3OCAzMC45OTg2IDE0Mi42NzNaTTAuMDc5NTc2NSAxMDQuOTY1QzAuMDgxNTcyMyAxMDMuODUzIDAuMTQ0NDAzIDEwMy40MzggMC4yMTk0MjcgMTA0LjA0NEMwLjI5NDQ1MSAxMDQuNjUgMC4yOTI4OTkgMTA1LjU2IDAuMjE1OTk2IDEwNi4wNjdDMC4xMzkwNzkgMTA2LjU3MyAwLjA3NzY4MzggMTA2LjA3OCAwLjA3OTU3NjUgMTA0Ljk2NVpNMC4wMDE3MzM1MSAxMDIuMjRDMC4wMTc4OTkyIDEwMS44NDggMC4wOTc3ODk3IDEwMS43NjggMC4yMDUzOTggMTAyLjAzN0MwLjMwMjc3MiAxMDIuMjggMC4yOTA3OTcgMTAyLjU3MSAwLjE3ODc4NyAxMDIuNjgzQzAuMDY2Nzc0OCAxMDIuNzk1IC0wLjAxMjkwMjEgMTAyLjU5NiAwLjAwMTczMzUxIDEwMi4yNFpNMC4wMjgzNDQ0IDc1LjEzMjZDMC4wMjgzNDQ0IDc0LjY2OTEgMC4xMDQ4NTcgNzQuNDc5NSAwLjE5ODM2OSA3NC43MTEyQzAuMjkxODg0IDc0Ljk0MyAwLjI5MTg4NCA3NS4zMjIyIDAuMTk4MzY5IDc1LjU1MzlDMC4xMDQ4NTcgNzUuNzg1NyAwLjAyODM0NDQgNzUuNTk2MSAwLjAyODM0NDQgNzUuMTMyNloiIGZpbGw9InVybCgjcGFpbnQyX3JhZGlhbF82NzlfMTkxMCkiLz4KPHBhdGggZD0iTTM1LjMxMzMgMTEyLjU0NEwzNy45IDExMS4wOTFMMzkuMzUxNyAxMjEuNDZMMzkuMjQ4IDEyOC45MjZMMzUuMzcwMyAxMzAuODUxTDMyLjkyMjkgMTI2LjQzN0wzNS4zMTMzIDExMi41NDRaIiBmaWxsPSIjMzA2MEFEIi8+CjxwYXRoIGQ9Ik0zOC43Mjk1IDExNi42OUwzOS4zNTE2IDEyNC41NzFMNDMuMjkxOSAxMjUuOTE5TDQzLjM5NTYgMTA5LjIyNUw0MC4xODEyIDExMC4wNTRMMzguNzI5NSAxMTYuNjlaIiBmaWxsPSIjNjA2MzY4Ii8+CjxwYXRoIGQ9Ik0zNS4zNjk5IDEzMC44NTFDMzMuMDMyNCAxMjkuNzMgMjkuNzMwMSAxMjYuNDA4IDI4LjY2MjEgMTI0LjEwM0MyOC4wMzMyIDEyMi43NDUgMjcuNjM5NyAxMjIuMzEgMjYuODkyMyAxMjIuMTQ2QzI1Ljc4NzkgMTIxLjkwMyAyNS44MDg0IDEyMS45NzEgMjYuMzIxOCAxMjAuMjU4QzI2LjU5MzYgMTE5LjM1IDI2LjkwMzIgMTE4Ljk1NCAyNy4zNDA2IDExOC45NTRDMjcuNjg2MiAxMTguOTU0IDI5LjE1OTcgMTE3Ljg0MSAzMC42MTQ5IDExNi40OEMzMi4wNzAyIDExNS4xMTkgMzMuNzIyNiAxMTMuNjc3IDM0LjI4NjkgMTEzLjI3NUwzNS4zMTI5IDExMi41NDRMMzUuNjc2NyAxMTQuMjQxQzM3LjA0NDMgMTIwLjYxOCAzNy4wMjcgMTI0LjI2NiAzNS42MTk4IDEyNi4yNDNDMzQuNTUyMSAxMjcuNzQ0IDM0Ljg0MTcgMTI4LjM5MyAzNi41NzkxIDEyOC4zOTNDMzcuMzk3IDEyOC4zOTMgMzcuODIyMiAxMjguMTg1IDM4LjEzMDUgMTI3LjYzNEMzOC42NzQ4IDEyNi42NjMgMzguNjMxNSAxMjAuOTY4IDM4LjA0NTQgMTE2LjQyNkMzNy4zNDQ2IDExMC45OTUgMzcuMzEyNyAxMTEuMTY3IDM5LjE1NzggMTEwLjM5OEM0MC4wMzYgMTEwLjAzMSA0MC44MTggMTA5Ljc5NyA0MC44OTU1IDEwOS44NzdDNDAuOTczMSAxMDkuOTU2IDQwLjgxOTEgMTExLjIzNSA0MC41NTM0IDExMi43MThDMzkuNjA2NyAxMTguMDAzIDM5LjkzMTUgMTIzLjIzOCA0MS4yNzUyIDEyNC4zNTNDNDEuNjg1MSAxMjQuNjkzIDQxLjcyMzMgMTIzLjk2OSA0MS41NDUyIDExOS4yMzJDNDEuMzE1NiAxMTMuMTIzIDQxLjUxNzQgMTEwLjkxOSA0Mi40MDc1IDEwOS44MkM0Mi45MTk4IDEwOS4xODggNDMuMjEzIDEwOS4xMTYgNDQuNDk1OSAxMDkuMzFDNDYuOTU2NiAxMDkuNjgyIDQ2Ljk1MDYgMTA5LjY2OCA0Ni4yMDk5IDExMy4yNTRDNDUuODQ5NiAxMTQuOTk5IDQ1LjQ0ODMgMTE3LjIyNCA0NS4zMTggMTE4LjJMNDUuMDgxMiAxMTkuOTczTDQ1Ljk0NDYgMTE5LjY0NUM0Ni40MTk1IDExOS40NjUgNDcuNDQxMyAxMTguOTk0IDQ4LjIxNTMgMTE4LjU5OUw0OS42MjI2IDExNy44ODFMNDkuMzg5MyAxMTguNjdDNDkuMjYxIDExOS4xMDUgNDkuMDY3MiAxMjAuNzAxIDQ4Ljk1ODcgMTIyLjIxOEw0OC43NjE0IDEyNC45NzZMNDcuMTA5NSAxMjQuMzI1QzQ2LjIwMSAxMjMuOTY3IDQ1LjMxMTYgMTIzLjY3NCA0NS4xMzMxIDEyMy42NzRDNDQuOTQxIDEyMy42NzQgNDQuODA4NSAxMjUuNTMyIDQ0LjgwODUgMTI4LjIyNEM0NC44MDg1IDEzMS44OTEgNDQuNzE3MSAxMzIuNzc1IDQ0LjMzODYgMTMyLjc3NUM0MS4wMTk4IDEzMi4yOTUgMzguNzg0MiAxMzIuNDU4IDM1LjM2OTkgMTMwLjg1MVoiIGZpbGw9IiNFRUMyM0IiLz4KPHBhdGggZD0iTTQxLjE2MzkgMTMyLjQxOEM0MS4xNjM5IDEzMi4yODMgNDEuMzQwOCAxMzAuNTE1IDQxLjY2OTIgMTI4LjE0NUM0MS45OTc3IDEyNS43NzUgNDIuMzU3NyAxMjIuOTYxIDQyLjQ2OTIgMTIxLjg5M0M0Mi41ODA4IDEyMC44MjQgNDIuNzk2OSAxMjAuMDI3IDQyLjk0OTUgMTIwLjEyMUM0My42NDQzIDEyMC41NTEgNDQuMjkzOCAxMjkuMzc1IDQ0LjA0NzQgMTMxLjQyQzQzLjg5MDkgMTMyLjcxOSA0My42NTk1IDEzMi43MzcgNDMuMzAxOSAxMzIuNjc3QzQyLjY2MDIgMTMyLjU3IDQxLjkxMDEgMTMyLjUxMyA0MS4xNjM5IDEzMi40MThaTTMyLjU5NjkgMTIyLjczNUMzMS42ODEzIDEyMi41ODMgMzAuODI0MiAxMjEuNDQyIDMwLjgyNDIgMTIwLjM3NEMzMC44MjQyIDExOS40MDcgMzIuMjM4MSAxMTcuOTM3IDMzLjE2ODUgMTE3LjkzN0MzNC42NjY2IDExNy45MzcgMzUuODM5MiAxMjAuNTEzIDM0Ljk0ODQgMTIxLjg0N0MzNC41NTE3IDEyMi40NDEgMzMuNDE0NyAxMjIuODcgMzIuNTk2OSAxMjIuNzM1WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTExNC4wMjEgMTM3LjQ5OEMxMDcuMzE4IDEzNS43NCAxMDYuMjczIDEzNC4xMDQgMTA2LjYwOSAxMjUuODkxQzEwNi43MTYgMTIzLjI4MSAxMDYuODg1IDEyMC41MzkgMTA2Ljk4NiAxMTkuNzk3QzEwNy41NDUgMTE1LjY2NCAxMDguMzQyIDExMi4xNzMgMTA5LjA4NiAxMTAuNTk5QzEwOS43NDQgMTA5LjIwNiAxMDkuODQyIDEwOC43MTIgMTA5LjUzNSAxMDguMzQyQzEwOC40NSAxMDcuMDM1IDExMC4zNzEgMTA0Ljk5NSAxMTEuOTEgMTA1LjgxOUMxMTIuNDU3IDEwNi4xMTEgMTEyLjkxOCAxMDYuMDc3IDExMy45NDUgMTA1LjY2NUMxMTcuMDYyIDEwNC40MTkgMTIzLjExNyAxMDUuNTcxIDEyNi44MTQgMTA4LjExNUMxMjguMTQ5IDEwOS4wMzMgMTI4LjQ4NSAxMDkuMTM2IDEyOS4wMzggMTA4Ljc5MUMxMzAuNTIzIDEwNy44NjMgMTMyLjQ1MSAxMTAuNTczIDEzMS4yNSAxMTEuOUMxMzAuNzg3IDExMi40MTIgMTMwLjc1NSAxMTIuNzA1IDEzMS4wNjUgMTEzLjU5NkMxMzEuODUgMTE1Ljg0NiAxMzEuNzk0IDExNi4xMDQgMTI4LjAwNiAxMjcuNzE5QzEyNS41OCAxMzUuMTYgMTI0LjU0MyAxMzcuMzY1IDEyMy4yNjQgMTM3LjgxMUMxMjEuNjUzIDEzOC4zNzMgMTE2LjcyMyAxMzguMjA2IDExNC4wMjEgMTM3LjQ5OFpNMTIyLjU0MSAxMzUuMjI5QzEyMy4wMDMgMTM0LjU0MSAxMjMuMzU5IDEzMy4zMTMgMTIzLjUxMyAxMzEuODc4QzEyMy43OTQgMTI5LjI1IDEyMy44MTkgMTI5LjI4MyAxMjAuMzE3IDEyNy42MDFDMTE3LjY4NSAxMjYuMzM4IDExMy44MzMgMTI1Ljk3MiAxMTEuODU1IDEyNi43OThDMTEwLjgyOSAxMjcuMjI3IDExMC41OTUgMTI3LjU1NiAxMTAuMDU5IDEyOS4zMjdDMTA5LjExNiAxMzIuNDQzIDEwOS43MDMgMTM0LjMwOCAxMTEuODMyIDEzNC45NThDMTEzLjEzOSAxMzUuMzU3IDEyMC4wOSAxMzYuNDMgMTIwLjk4IDEzNi4zN0MxMjEuNTA0IDEzNi4zMzUgMTIyLjA4MiAxMzUuOTEyIDEyMi41NDEgMTM1LjIyOVpNMTE5LjQ1MSAxMjIuNDJDMTE5LjYzIDEyMi4wODEgMTE5LjY4NSAxMjEuNTU2IDExOS42ODUgMTIxLjU1NkMxMjAuMTU2IDEyMS42NTQgMTIwLjQ4IDEyMS42ODMgMTIwLjcyNiAxMjEuNzE5QzEyMS4xMDUgMTIxLjc3NCAxMjEuNTY0IDEyMS41ODcgMTIxLjc0NSAxMjEuMzAzQzEyMi4xNDkgMTIwLjY3MSAxMjAuNDc0IDExNy43MDEgMTE5LjU0OCAxMTcuNDA4QzExOC42NjggMTE3LjEyOCAxMTUuOTM1IDExOC44MjcgMTE1LjkzNSAxMTkuNjUzQzExNS45MzUgMTIwLjAyMiAxMTYuNTUzIDEyMC40MTEgMTE2LjgzMSAxMjAuNTE4QzExNi45ODIgMTIwLjU3NiAxMTcuMjUyIDEyMC43MzggMTE3LjU3NiAxMjAuOTM4QzExNy4zOCAxMjEuMzUxIDExNy4zNDYgMTIxLjQ3OCAxMTcuMzEyIDEyMS43MjRDMTE3LjIwNCAxMjIuNDk4IDExNy40MzUgMTIyLjY4NiAxMTguNDE2IDEyMi45MTJDMTE5LjE1MSAxMjIuOTkxIDExOS4yNSAxMjIuODQ1IDExOS40NTEgMTIyLjQyWk0xMjcuMjY1IDExNi44MzZDMTMwLjkzMyAxMTMuNDc1IDEyNy4wNzQgMTA3LjQxIDEyMi43MDUgMTA5LjY3QzEyMS42MjYgMTEwLjIyOCAxMjAuNjU0IDExMi4wMTkgMTIwLjY1NCAxMTMuNDQ5QzEyMC42NTQgMTE1LjY2NCAxMjIuODMxIDExNy45MzcgMTI0Ljk1NyAxMTcuOTQxQzEyNS43MzMgMTE3Ljk0MyAxMjYuNDE0IDExNy42MTcgMTI3LjI2NSAxMTYuODM2Wk0xMTcuMTQxIDExNS42MjJDMTE5LjAzNSAxMTQuNDY4IDExOS44MDQgMTExLjc5NSAxMTguODAyIDEwOS44NTdDMTE4LjA4MiAxMDguNDY0IDExNy4wMDggMTA3LjgzIDExNS4zNjYgMTA3LjgzQzExMS41MDggMTA3LjgzIDEwOS40ODUgMTEzLjIzNCAxMTIuNDY1IDExNS41NzhDMTEzLjU3IDExNi40NDggMTE1Ljc1NCAxMTYuNDY4IDExNy4xNDEgMTE1LjYyMloiIGZpbGw9IiMwOTk2RDEiLz4KPHBhdGggb3BhY2l0eT0iMC45IiBkPSJNMzMuMTc1NyAyNkwzMi4zODEgMjcuMjE5QzMxLjk0NDkgMjcuODg5IDMxLjI4MzYgMjkuMzI0OCAzMC45MDkxIDMwLjQwODhDMzAuNTM0NyAzMS40OTI4IDI5Ljk5MjIgMzIuOTcwMSAyOS43MDQzIDMzLjY5MjhDMjkuNDE2MyAzNC40MTU0IDI5LjE3MzMgMzYuMTE1IDI5LjE2MzggMzcuNDdDMjkuMTQzNiA0MC4zNTMgMjguNzQ5NCA0MS44ODg4IDI3LjYzNjQgNDMuNDIyNUMyNi45MjEyIDQ0LjQwOCAyNi42NzUxIDQ0LjUyMjMgMjUuNDUzMiA0NC40NDFDMjMuODk5NSA0NC4zMzc3IDIyLjgxNTMgNDUuMDgxNSAyMS4yMTcgNDcuMzQ4MUMyMC43MTY1IDQ4LjA1OCAyMC4xMzY3IDQ4LjYzOTMgMTkuOTI4OSA0OC42MzkzQzE5LjcyMTEgNDguNjM5MyAxOS4xODA1IDQ4LjIzMTkgMTguNzI2MiA0Ny43MzUxQzE4LjI3MTkgNDcuMjM4MiAxNy45OTQ0IDQ3LjAxMTUgMTguMTExIDQ3LjIyOThDMTguNDkgNDcuOTM5NiAxNy41OTA0IDUzLjI2MTUgMTYuODM3OCA1NC43NjQyQzE1Ljk2NyA1Ni41MDI4IDE0LjM4NzIgNTcuNzIzMyAxMi41MzU0IDU4LjA4NDNDMTEuMDA1OSA1OC4zODI2IDExLjIyODMgNTguMDkgOC43MTc5NSA2My4wOTQ2QzYuNjYzMzQgNjcuMTkwNyA1Ljk2OTM1IDY3LjgyNjQgMi42NTUzMyA2OC42NTQyQzEuNDk3MTcgNjguOTQzNCAwLjQ1ODc1OSA2OS43MTQyIDAgNzAuNTI4N1Y3Mi44MjYzQzAuMzU2MTkzIDcyLjc0NzMgMC44Mjg3MjggNzIuNjIwMyAxLjYxNDk5IDcyLjM4NzNDMi45OTQ4NiA3MS45NzgyIDQuODIzNDggNzEuNDgwNiA1LjY3ODEgNzEuMjgwNkM3LjcyOTM0IDcwLjgwMDYgOS4zOTM1MSA2OS4yMTk1IDkuOTIyNzkgNjcuMjQ2N0MxMC4yNDI0IDY2LjA1NTQgMTAuNzAzMyA2NS40MjQxIDExLjk5OTIgNjQuNDA1OEMxMy4yODQgNjMuMzk2MiAxMy43NTY1IDYyLjc1NDYgMTQuMDY3MSA2MS41OTY5QzE0LjM3MzkgNjAuNDUzMiAxNC43MDExIDYwLjAwNCAxNS40NDA3IDU5LjcwNjNDMTcuMDE1MyA1OS4wNzI0IDIwLjY0NDQgNTUuODY1NSAyMS4yMzYzIDU0LjU4NThDMjEuNTM3MyA1My45MzQ5IDIyLjExOTggNTIuNTM5OSAyMi41Mjg3IDUxLjQ4NjJDMjMuMjYzNCA0OS41OTMyIDI1LjAxOTUgNDcuMzI2MSAyNS43NTAxIDQ3LjMyNjFDMjUuOTU3NCA0Ny4zMjYxIDI3LjEwOSA0Ni43MjQ4IDI4LjMwOTMgNDUuOTkwOEMzMS4yMzc2IDQ0LjIwMDMgMzEuNTk5MSA0My40MTM2IDMxLjU5OTEgMzguODYxNEMzMS41OTkxIDM1LjY4MTQgMzEuNjg3IDM1LjE1NTcgMzIuMzQ2OCAzNC4zNjg0QzMzLjAwMzcgMzMuNTg0NyAzMy4wOTk3IDMzLjAyNDkgMzMuMTM1MSAyOS43MzkxTDMzLjE3NTcgMjZaTTI0LjMzMzggNjMuNTk1OEMyNC4yMDM3IDYzLjYxMzUgMjQuMDczOCA2My42NjE4IDIzLjkyNTggNjMuNzM2MkMyMi45Mzk3IDY0LjIzMTUgMjIuNjEzNiA2NC45MTAyIDIxLjU5NzMgNjguNTg2QzIxLjAxNzkgNzAuNjgxNSAyMC40MjEyIDcyLjA4MTkgMTkuODc5OCA3Mi42MTc4QzE5LjQyMzUgNzMuMDY5NSAxOC45MzgzIDczLjg4MjMgMTguODAxIDc0LjQyNDJDMTguMTgxIDc2Ljg3MTUgMTYuNzQ1NCA3OC42MDczIDE0LjQ0OTUgNzkuNjg3MUMxMi40NTU1IDgwLjYyNDkgMTAuNjQwNyA4Mi4xMTc5IDkuMTExMDIgODQuMDc5OEM4LjMyMTA5IDg1LjA5MjkgNy40ODc1MiA4Ni4wMjkgNy4yNTY3OCA4Ni4xNjA5QzYuNzYxNjQgODYuNDQ0IDUuNzA4OTkgODguODk0MSA0LjYwNzg1IDkyLjMyOEMzLjcxMDkyIDk1LjEyNSAxLjcxMDY1IDk3LjQ2ODIgMC40Nzg1MTQgOTcuMTY1OEMwLjI1NDkzMSA5Ny4xMTA5IDAuMTA2OTExIDk3LjExMzcgMCA5Ny4yOTAxVjEwNC40OTJDMC41NTY0MTEgMTAzLjY2NCAxLjIzNDIgMTAyLjYyOSAyLjU2MzQ3IDEwMC41NEM0LjM0NTExIDk3LjczOTcgNi40NjM4NSA5NC40ODY3IDcuMjcxNzMgOTMuMzEyNEM4LjA3OTYgOTIuMTM4MSA5LjM1Njg3IDkwLjE0ODggMTAuMTA4NiA4OC44OTE2QzExLjIzNDIgODcuMDA5MiAxMi4xMDE2IDg2LjEyNDMgMTUuMDI4NCA4My44ODMzTDE4LjU4MzEgODEuMTYyN0wyMC40MDUzIDc1Ljk4ODFDMjMuMTg5NSA2OC4wODE3IDIzLjk1ODUgNjcuMTk5NyAyNy43NjI0IDY3LjU1MTVDMjkuNDYwNSA2Ny43MDg1IDMwLjYzMzQgNjcuNjE5NiAzMi4wNzM0IDY3LjIyNjdDMzQuMTgyNiA2Ni42NTEyIDM0LjQ3OTkgNjYuMTg3MiAzMy4zNTUxIDY1LjIzMThDMzIuNjU1NCA2NC42Mzc2IDMxLjMxNTMgNjQuNjQgMjguMjM4OCA2NS4yNDE4QzI3LjMzOTcgNjUuNDE3NyAyNi45MzQzIDY1LjI3NTcgMjUuODkzMiA2NC40MTc4QzI1LjEwNTEgNjMuNzY4NCAyNC43MjQxIDYzLjU0MjYgMjQuMzMzOCA2My41OTU4Wk0zMS43MTY2IDgzLjI1OThDMzEuNjYwNSA4My4yNzQ5IDMxLjU5MjEgODMuMzEyNiAzMS41MTE1IDgzLjM3MjFDMzEuMjcwOSA4My41NSAzMC42NTM2IDgzLjc5IDMwLjEzNzkgODMuOTA1NEMyOS4zODc2IDg0LjA3MzQgMjkuMDQ5OCA4NC40OTMyIDI4LjQ0ODIgODYuMDA0NUMyOC4wMzQ3IDg3LjA0MzIgMjcuNDkxNSA4OC4xMTUzIDI3LjI0MTIgODguMzg2M0MyNi45OTA5IDg4LjY1NzMgMjYuNDc1IDg5LjU1MSAyNi4wOTQxIDkwLjM3MzJDMjQuOTQyMiA5Mi44NTkyIDIzLjUyODIgOTQuMDYxOCAxOS45MDExIDk1LjY0MjFDMTYuNjEwNyA5Ny4wNzU2IDE2LjU2NyA5Ny4xMDg2IDE1LjY2NzEgOTguOTgwMkMxNS4xMDI3IDEwMC4xNTQgMTQuNjc5MiAxMDEuNzU3IDE0LjU0OTkgMTAzLjIwNUMxNC4yNzMxIDEwNi4zMDIgMTMuNTk2MiAxMDcuMDMxIDkuNTIxMTggMTA4LjYxNkM1LjkxNDk3IDExMC4wMTkgMy41NzcwMiAxMTEuNzQ1IDMuNDE1ODMgMTEzLjEyM0MzLjI0MDQxIDExNC42MjMgMi41OTgxMyAxMTUuMDg0IDAuOTI5MjYgMTE0LjkwN0MwLjUzOTUyOSAxMTQuODY2IDAuMjQ0MzMyIDExNC44NTEgMCAxMTQuODgxVjEyMUMxLjAyNjU4IDExOS42NTggMi43MTkyMiAxMTguMzYxIDYuMjI0OTcgMTE2LjIwNkMxMC4zNjA0IDExMy42NjUgMTIuNzA2NSAxMTEuNTc1IDEzLjU3NzkgMTA5LjY1NEMxMy45MjYgMTA4Ljg4NyAxNC42NTQ3IDEwNy4zOTMgMTUuMTk3MSAxMDYuMzM0QzE1LjczOTUgMTA1LjI3NSAxNi4yODQ1IDEwMy45MDEgMTYuNDA4NCAxMDMuMjgxQzE2LjczMjQgMTAxLjY2IDE4LjMwMzIgMTAwLjM0OSAyMC42NjU5IDk5LjcyNkMyNS4xNzcgOTguNTM3MiAyNS43NDYxIDk4LjAxNjMgMjYuMzUyNSA5NC41MzU0QzI2Ljg1NjEgOTEuNjQ1MiAyOC42MTIgODguMDY2MSAzMC41MjY3IDg2LjAyNDZDMzEuMzA5NSA4NS4xOSAzMS45NDk1IDg0LjE4IDMxLjk0OTUgODMuNzc5MUMzMS45NDk1IDgzLjM3NjYgMzEuODg0OSA4My4yMTQ2IDMxLjcxNjYgODMuMjU5OFoiIGZpbGw9IiMzNTkxMzYiLz4KPHBhdGggZD0iTTguMDgxNzcgNzQuNDA4M0M2LjAzNDE5IDczLjg3MDUgNS44OTQ0MyA3My43MzAyIDYuMDQyNzEgNzIuMzYxNUM2LjEzMDI1IDcxLjU1MzMgNi4yNDAxNyA3MC44NTc1IDYuMjg2OTYgNzAuODE1NEM2LjMzMzc2IDcwLjc3MzMgNy43MDQ0MyA3MS4wNjg3IDkuMzMyOTIgNzEuNDcxOUMxMS45NzY4IDcyLjEyNjQgMTIuNDg2NiA3Mi4xMjM4IDE0LjA5NDcgNzEuNDQ3NEMxNi40MDQxIDcwLjQ3NiAxNy4yMzgzIDY4Ljc3NTMgMTYuNDAyMiA2Ni43NDMxQzE1Ljk0MjQgNjUuNjI1NyAxNC45MjA0IDY0LjgyODEgMTIuMjM4NCA2My40OTRDNy42NDE3IDYxLjIwNzUgNi41MzA2MiA1OS45OTkgNi4yNzQ2NSA1Ny4wMDc2QzUuODkzMzcgNTIuNTUxOSA4Ljg0Njg5IDQ5Ljk4MzYgMTQuMzUyMiA0OS45ODM2QzE1Ljk3MzMgNDkuOTgzNiAxNy44NDg3IDUwLjE5MzcgMTguNTE5NiA1MC40NTA1QzE5LjYzNjggNTAuODc4MSAxOS42OTM3IDUxLjAzOTkgMTkuMTk0NSA1Mi4zNzEyQzE4LjcxODIgNTMuNjQxNiAxOC41MDI3IDUzLjc2ODggMTcuNDg2MSA1My4zNzk2QzE1LjUxOTkgNTIuNjI3IDEyLjE5NDggNTIuODU1NCAxMS4wMDU4IDUzLjgyNDdDOS43OTA1OCA1NC44MTUzIDkuNTU3MzYgNTYuOTI1MiAxMC41MzI0IDU4LjEwNzlDMTAuODcyNyA1OC41MjA3IDEyLjkwODcgNTkuNzc5IDE1LjA1NjkgNjAuOTA0MUMxOC40NjI4IDYyLjY4ODEgMTkuMDgyIDYzLjIyMTQgMTkuODk1MSA2NS4wNzE5QzIxLjExNTIgNjcuODQ4NyAyMC42Nzg4IDcwLjM0MzcgMTguNjA3OCA3Mi40MzIzQzE2LjE2MDcgNzQuOTAwMiAxMi41NDEzIDc1LjU3OTYgOC4wODE3NyA3NC40MDgzWk0yOC45MzI4IDc0LjM4MjNDMjUuMjM2NSA3Mi45OTU4IDIzLjcxMzggNzAuNTQwNSAyMy43MTM4IDY1Ljk2NjdDMjMuNzEzOCA2Mi41MDM0IDI0LjU1ODggNjAuNDY5NyAyNi44MzMzIDU4LjQ1OTNDMjguMzk2NCA1Ny4wNzc2IDI4Ljk4NjcgNTYuODY4NiAzMS4zMjY4IDU2Ljg2ODZDMzIuODE2OCA1Ni44Njg2IDM0LjY4MjEgNTcuMjEyOSAzNS41MDA1IDU3LjYzODlDMzcuMzE2OSA1OC41ODQ2IDM4LjgzMTkgNjEuNzQyNiAzOC44NDY2IDY0LjYxNDNMMzguODU3MyA2Ni43MDQ0SDMyLjk0MjNIMjcuMDI3M0wyNy4zNDIgNjguMDU2OUMyNy41MTUgNjguODAwNyAyOC4zMzU0IDcwLjAzOTEgMjkuMTY1IDcwLjgwOUMzMC41NzczIDcyLjExOTYgMzAuODk0OSA3Mi4xOTc5IDM0LjE1NDcgNzIuMDM4NUMzNy4zOTM4IDcxLjg4MDEgMzcuNjQ2MyA3MS45NDA5IDM3Ljc4NCA3Mi45MTIyQzM3Ljk2MjYgNzQuMTcyNSAzNy4xODgyIDc0LjUyMzYgMzMuNTI0MiA3NC44NDM0QzMxLjgwODUgNzQuOTkzMiAzMC4xMDU2IDc0LjgyMjIgMjguOTMyOCA3NC4zODIzWk0zNS4wODgxIDYyLjUyNDJDMzQuOTU1OCA2MC42NzMgMzMuMzY0NCA1OS4zMjc2IDMxLjMwNzIgNTkuMzI3NkMyOS43MDg2IDU5LjMyNzYgMjguNzI4MSA2MC4wOTA5IDI3LjY2MiA2Mi4xNjU1QzI2Ljc0NTcgNjMuOTQ4NiAyNy40MTIgNjQuMjk2NSAzMS40NDg4IDY0LjE0MjVMMzUuMTkzNiA2My45OTk2TDM1LjA4ODEgNjIuNTI0MlpNNDQuMzkxNCA3NC4zNzA4QzQyLjU3MTEgNzMuNTQ2OCA0MS43MDU5IDcyLjEyODYgNDEuNjQyMSA2OS44NjQ3QzQxLjU0MTYgNjYuMjk0NCA0NC4xMTEgNjQuMTQ2OCA0OS4yNTc2IDYzLjQ5OTRDNTEuODQxNCA2My4xNzQ0IDUyLjA0OTUgNjMuMDU3NyA1MS43NTkzIDYyLjA5NjlDNTAuOTY1IDU5LjQ2NjYgNDguMjQyMyA1OC41NjQ0IDQ0LjkyNzYgNTkuODMzMUM0My40MzAzIDYwLjQwNjMgNDMuNDg2OCA2MC40MzEzIDQzLjA1MTQgNTkuMDAzMkM0Mi43ODAxIDU4LjExMzUgNDIuOTk4MiA1Ny44NTExIDQ0LjM5NSA1Ny4zODdDNDYuOTM2NCA1Ni41NDI3IDUxLjM3NDUgNTYuNjM0MiA1Mi43Nzc5IDU3LjU2QzU0LjkzOTIgNTguOTg1NyA1NS4zNzUxIDYwLjYwMTkgNTUuNTQ4NyA2Ny44MzI4TDU1LjcxMDYgNzQuNTc0NUw1NC4xMjMgNzQuNTc0QzUzLjAzNzcgNzQuNTczMyA1Mi41MzUzIDc0LjMzOTYgNTIuNTM1MyA3My44MzU0QzUyLjUzNTMgNzIuOTA2NiA1Mi4wNTI4IDcyLjkwMjQgNTAuNzUyIDczLjgxOTZDNDkuMjAxMyA3NC45MTMgNDYuMTY5NyA3NS4xNzU3IDQ0LjM5MTQgNzQuMzcwOFpNNTAuOTQ3NyA3MC44MTc1QzUxLjcwOTkgNjkuOTczNSA1Mi4wNDY4IDY4Ljk4NiA1Mi4wNDY4IDY3LjU5NjZWNjUuNTkyOUw0OS44MTgyIDY1Ljg0NThDNDUuNzE5IDY2LjMxMSA0My44NzQ5IDY5LjUxMTggNDYuNTA1OCA3MS41OTUzQzQ4LjAzNzEgNzIuODA3OSA0OS4zNTk0IDcyLjU3NjMgNTAuOTQ3NyA3MC44MTc1Wk05Mi4wMDIgNzQuNTc4OEM4OC40MDI0IDczLjQ4NjQgODYuMjQxOSA3MC4yNDY2IDg2LjI0MTkgNjUuOTQxQzg2LjI0MTkgNjAuNDA0MiA4OS41MjExIDU2LjgzMjUgOTQuNjQxIDU2Ljc5MjVDOTguNjk4OSA1Ni43NjA5IDEwMS4yNjMgNTkuNDY3OSAxMDEuNTAzIDY0LjAzNjZMMTAxLjYzIDY2LjQ1ODVMOTYuMjU2MiA2Ni41ODg1QzkzLjMwMDcgNjYuNjYgOTAuNjE1OCA2Ni44MTYgOTAuMjg5NyA2Ni45MzUxQzg5LjM4MTggNjcuMjY2OCA5MC40Nzg4IDY5Ljk0NyA5Mi4wMzA2IDcxLjE4ODZDOTMuMTU5OSA3Mi4wOTIxIDkzLjc3MSA3Mi4xOTEyIDk2LjgxNzggNzEuOTY1QzEwMC4xOTMgNzEuNzE0NCAxMDAuMzE4IDcxLjc0NDkgMTAwLjUzMSA3Mi44Njg0QzEwMC43MyA3My45MTMzIDEwMC41MDkgNzQuMDgzNSA5OC4zNTc5IDc0LjU0OEM5NS42MTAzIDc1LjE0MTIgOTMuODgyOSA3NS4xNDk2IDkyLjAwMiA3NC41Nzg4Wk05Ny45NjU5IDYzLjA4MjNDOTcuOTY1OSA2MS4xMjMxIDk2LjE4NTggNTkuMzI3NiA5NC4yNDM0IDU5LjMyNzZDOTIuMjQ5NCA1OS4zMjc2IDkwLjE0OTkgNjEuMjU2MiA5MC4xNDk5IDYzLjA4NzhDOTAuMTQ5OSA2NC4yMDcgOTAuMjc5NyA2NC4yNDU1IDk0LjA1NzkgNjQuMjQ1NUM5Ny44NDE0IDY0LjI0NTUgOTcuOTY1OSA2NC4yMDg0IDk3Ljk2NTkgNjMuMDgyM1pNMTEwLjA0MiA3NC40N0MxMDYuMTQ5IDczLjQzIDEwMy45MyA2OS40MDI5IDEwNC41NCA2NC40ODYyQzEwNS4xNjYgNTkuNDQ0MiAxMDcuOTUxIDU2Ljg3MzYgMTEyLjc5MiA1Ni44NzA1QzExNS4zNzQgNTYuODY5IDExNS44MDUgNTcuMDI0OSAxMTcuMjYgNTguNDlDMTE4Ljg3OCA2MC4xMTg1IDExOS45NDEgNjIuODM0MyAxMTkuOTQ2IDY1LjM1MkwxMTkuOTQ5IDY2LjcwNDRIMTE0LjA4N0MxMDguNDg4IDY2LjcwNDQgMTA4LjIyNSA2Ni43NTAxIDEwOC4yMjUgNjcuNzIwM0MxMDguMjI1IDcwLjcxMjIgMTEwLjk1MiA3Mi4zNDQyIDExNS4zNTcgNzEuOTg4MkMxMTguMTM2IDcxLjc2MzcgMTE4LjQyMyA3MS44MzE1IDExOC42NjcgNzIuNzY3NEMxMTguOTk4IDc0LjA0NDMgMTE4Ljk2OCA3NC4wNzIgMTE2LjY5IDc0LjYwNDNDMTE0LjM2NyA3NS4xNDcgMTEyLjQzIDc1LjEwNzggMTEwLjA0MiA3NC40N1pNMTE2LjExOSA2Mi43NzAxQzExNS44NjQgNjAuODc4NyAxMTQuMTU5IDU5LjMyNzYgMTEyLjMzNSA1OS4zMjc2QzExMC41NjYgNTkuMzI3NiAxMDguMjI0IDYxLjYwMTQgMTA4LjIyNCA2My4zMTk1QzEwOC4yMjQgNjQuMjEyOCAxMDguNTI3IDY0LjI3NDYgMTEyLjI1NSA2NC4xNDI0QzExNi4yNDEgNjQuMDAxMSAxMTYuMjgzIDYzLjk4NjIgMTE2LjExOSA2Mi43NzAxWk0xMjYuODk0IDc0LjI0N0MxMjQuODI2IDczLjIyMDggMTIzLjUzMiA3MS4zNTg5IDEyMi44OTQgNjguNDg4OUMxMjEuOTc1IDY0LjM2MDUgMTIzLjA3NCA2MC40OTE0IDEyNS44MyA1OC4xNTY3QzEyNy44MjcgNTYuNDY1NyAxMzEuODM4IDU2LjMzMDUgMTMzLjgwNSA1Ny44ODc5TDEzNS4wOTIgNTguOTA3MlY1My45NTM2VjQ5SDEzNy4wNDZIMTM5VjYxLjc4NjVWNzQuNTczMUgxMzcuMjlDMTM1Ljc2MiA3NC41NzMxIDEzNS41OCA3NC40MzMxIDEzNS41OCA3My4yNTc5VjcxLjk0MjdMMTM0LjQ4MSA3Mi45NzkyQzEzMi4yMzMgNzUuMDk5OCAxMjkuNTI1IDc1LjU1MjMgMTI2Ljg5NCA3NC4yNDdaTTEzMy42NjQgNzAuNjc2NkMxMzQuOTc2IDY5LjM1NTcgMTM1LjA5MiA2OC45NTM3IDEzNS4wOTIgNjUuNzIwOUMxMzUuMDkyIDYyLjQ1NzIgMTM0Ljk4NSA2Mi4wOTQ1IDEzMy42MDcgNjAuNzA3NkMxMzIuMzY1IDU5LjQ1NzUgMTMxLjg2NSA1OS4yNjIyIDEzMC41NTQgNTkuNTE1NEMxMjYuMTQ0IDYwLjM2NzIgMTI0LjgzNSA2OC4xNDIzIDEyOC41OTggNzEuMTIyOUMxMzAuMzQ4IDcyLjUwODEgMTMxLjk4OCA3Mi4zNjM1IDEzMy42NjQgNzAuNjc2NlpNNjEuNDEwNyA2Ni4wNTg0QzYwLjAyMiA2MS4zNzU0IDU4Ljg4NTkgNTcuMzkxOSA1OC44ODU5IDU3LjIwNjJDNTguODg1OSA1Ny4wMjA2IDU5LjcyNzQgNTYuODY4NiA2MC43NTU5IDU2Ljg2ODZINjIuNjI1OUw2NC4yNTUxIDYzLjg3NjZDNjUuMTUxMiA2Ny43MzEgNjUuOTU2IDcwLjY2MzMgNjYuMDQzNyA3MC4zOTI5QzY2LjEzMTMgNzAuMTIyNCA2Ny4wNTU3IDY3LjAyNDEgNjguMDk3OCA2My41MDc4TDY5Ljk5MjYgNTcuMTE0NUg3MS41OTY5SDczLjIwMTJMNzQuODg2NSA2My4yNjE5Qzc1LjgxMzQgNjYuNjQzIDc2LjY4MzIgNjkuNzQxMiA3Ni44MTk0IDcwLjE0N0M3Ni45NTU3IDcwLjU1MjcgNzcuODQxOSA2Ny43MzEgNzguNzg5IDYzLjg3NjZMODAuNTEwOSA1Ni44Njg2SDgyLjQ1MTdDODMuOTUxNyA1Ni44Njg2IDg0LjMzMDMgNTcuMDMxNiA4NC4xMTkgNTcuNTg2QzgzLjk2ODYgNTcuOTgwNiA4Mi42OTU2IDYxLjk2NDEgODEuMjkwMiA2Ni40MzgyTDc4LjczNDkgNzQuNTczMUg3Ni45NjM1SDc1LjE5MjFMNzMuNTgxMiA2OC43OTQ1QzcyLjY5NTIgNjUuNjE2MyA3MS44NTg1IDYyLjY4NDEgNzEuNzIxNyA2Mi4yNzgzQzcxLjQ0NjUgNjEuNDYxNiA3MS41OTExIDYxLjA3MzMgNjkuMTExNCA2OS4yODYzTDY3LjUxNTIgNzQuNTczMUg2NS43MjU0SDYzLjkzNTZMNjEuNDEwNyA2Ni4wNTg0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTE5Ljk3NDYgMTE5LjI3NEMxOS4wMTU4IDExOC4xMTkgMjAuMzM4MSAxMTYuMTY2IDIxLjU2MDQgMTE2LjkzMkMyMi43NjMyIDExNy42ODYgMjIuMzMwNSAxMTkuNzYxIDIwLjk3MDQgMTE5Ljc2MUMyMC42NDUgMTE5Ljc2MSAyMC4xOTY5IDExOS41NDIgMTkuOTc0NiAxMTkuMjc0WiIgZmlsbD0idXJsKCNwYWludDNfcmFkaWFsXzY3OV8xOTEwKSIvPgo8cGF0aCBkPSJNMjMuODM2IDExMi42M0MyMi4xMTUyIDExMS42ODkgMjEuODAyOSAxMDkuNzk3IDIzLjE0NjUgMTA4LjQ1M0MyNC4wODU3IDEwNy41MTQgMjUuMjEgMTA3LjM5NCAyNi4yNTA3IDEwOC4xMjNDMjcuODU3MSAxMDkuMjQ5IDI3LjQ2NTUgMTEyLjAxMyAyNS42MDc5IDExMi42NkMyNS42MDc5IDExMi42NiAyNC40NzQ1IDExMi45NzMgMjMuODM2IDExMi42M1oiIGZpbGw9InVybCgjcGFpbnQ0X3JhZGlhbF82NzlfMTkxMCkiLz4KPHBhdGggZD0iTTMzLjc4NTUgMTIwLjAzNkMzMy43ODU1IDEyMC4xODggMzMuNzU1NyAxMjAuMzM4IDMzLjY5NzYgMTIwLjQ3OUMzMy42Mzk1IDEyMC42MTkgMzMuNTU0NCAxMjAuNzQ2IDMzLjQ0NzEgMTIwLjg1M0MzMy4zMzk4IDEyMC45NjEgMzMuMjEyNCAxMjEuMDQ2IDMzLjA3MjMgMTIxLjEwNEMzMi45MzIxIDEyMS4xNjIgMzIuNzgxOCAxMjEuMTkyIDMyLjYzMDEgMTIxLjE5MkMzMi40NzgzIDEyMS4xOTIgMzIuMzI4MSAxMjEuMTYyIDMyLjE4NzkgMTIxLjEwNEMzMi4wNDc3IDEyMS4wNDYgMzEuOTIwMyAxMjAuOTYxIDMxLjgxMyAxMjAuODUzQzMxLjcwNTcgMTIwLjc0NiAzMS42MjA2IDEyMC42MTkgMzEuNTYyNiAxMjAuNDc5QzMxLjUwNDUgMTIwLjMzOCAzMS40NzQ2IDEyMC4xODggMzEuNDc0NiAxMjAuMDM2QzMxLjQ3NDYgMTE5LjczIDMxLjU5NjMgMTE5LjQzNiAzMS44MTMgMTE5LjIxOUMzMi4wMjk3IDExOS4wMDMgMzIuMzIzNiAxMTguODgxIDMyLjYzMDEgMTE4Ljg4MUMzMi45MzY1IDExOC44ODEgMzMuMjMwNCAxMTkuMDAzIDMzLjQ0NzEgMTE5LjIxOUMzMy42NjM4IDExOS40MzYgMzMuNzg1NSAxMTkuNzMgMzMuNzg1NSAxMjAuMDM2WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTEyMC43MjEgMTE4LjI3NkMxMjAuNzIxIDExOC42MjMgMTIwLjU2NSAxMTguOTU2IDEyMC4yODcgMTE5LjIwMUMxMjAuMDA5IDExOS40NDYgMTE5LjYzMiAxMTkuNTg0IDExOS4yMzkgMTE5LjU4NEMxMTguODQ2IDExOS41ODQgMTE4LjQ2OSAxMTkuNDQ2IDExOC4xOTEgMTE5LjIwMUMxMTcuOTEzIDExOC45NTYgMTE3Ljc1NyAxMTguNjIzIDExNy43NTcgMTE4LjI3NkMxMTcuNzU3IDExOC4xMDUgMTE3Ljc5NSAxMTcuOTM1IDExNy44NyAxMTcuNzc2QzExNy45NDQgMTE3LjYxNyAxMTguMDUzIDExNy40NzMgMTE4LjE5MSAxMTcuMzUyQzExOC4zMjkgMTE3LjIzIDExOC40OTIgMTE3LjEzNCAxMTguNjcyIDExNy4wNjhDMTE4Ljg1MSAxMTcuMDAzIDExOS4wNDQgMTE2Ljk2OSAxMTkuMjM5IDExNi45NjlDMTE5LjQzMyAxMTYuOTY5IDExOS42MjYgMTE3LjAwMyAxMTkuODA2IDExNy4wNjhDMTE5Ljk4NiAxMTcuMTM0IDEyMC4xNDkgMTE3LjIzIDEyMC4yODcgMTE3LjM1MkMxMjAuNDI0IDExNy40NzMgMTIwLjUzMyAxMTcuNjE3IDEyMC42MDggMTE3Ljc3NkMxMjAuNjgyIDExNy45MzUgMTIwLjcyMSAxMTguMTA1IDEyMC43MjEgMTE4LjI3NloiIGZpbGw9IiM1OTY4NkYiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl82NzlfMTkxMCIgeDE9IjExIiB5MT0iLTQuNzc3NjhlLTA3IiB4Mj0iMTY0LjUiIHkyPSIxNTAuNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNjRCN0ZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNURBRCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50MV9yYWRpYWxfNjc5XzE5MTAiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI0LjkwNCAxMjguNjM2KSByb3RhdGUoLTAuMDQ4NTUyKSBzY2FsZSgzNi4yODAyIDMxLjQwMzIpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzExNzdDRSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3RUM3RkYiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50Ml9yYWRpYWxfNjc5XzE5MTAiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzkuMzUxMiAxMjEuNDYpIHJvdGF0ZSgtMC4wNTczKSBzY2FsZSg1MC4yMjc2IDUxLjMwOTEpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzExNzdDRSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3RUM3RkYiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNjc5XzE5MTAiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAuOTU0OCAxMTguMjYpIHNjYWxlKDEuMzA5MjkgMS41MDEyNykiPgo8c3RvcCBzdG9wLWNvbG9yPSIjODhBM0QwIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzVEODNCRiIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50NF9yYWRpYWxfNjc5XzE5MTAiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQuNzg0MyAxMTAuMjIxKSBzY2FsZSgyLjQ3Mjc3IDIuNTY5NTQpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzg4QTNEMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1RDgzQkYiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "host" + ], + [ + "spec", + "topology" + ], + [ + "spec", + "replicationFactor" + ], + [ + "spec", + "db" + ], + [ + "spec", + "db", + "replicas" + ], + [ + "spec", + "db", + "size" + ], + [ + "spec", + "db", + "storageClass" + ], + [ + "spec", + "db", + "resources" + ], + [ + "spec", + "db", + "resourcesPreset" + ], + [ + "spec", + "master" + ], + [ + "spec", + "master", + "replicas" + ], + [ + "spec", + "master", + "resources" + ], + [ + "spec", + "master", + "resourcesPreset" + ], + [ + "spec", + "filer" + ], + [ + "spec", + "filer", + "replicas" + ], + [ + "spec", + "filer", + "resources" + ], + [ + "spec", + "filer", + "resourcesPreset" + ], + [ + "spec", + "filer", + "grpcHost" + ], + [ + "spec", + "filer", + "grpcPort" + ], + [ + "spec", + "filer", + "whitelist" + ], + [ + "spec", + "volume" + ], + [ + "spec", + "volume", + "replicas" + ], + [ + "spec", + "volume", + "size" + ], + [ + "spec", + "volume", + "storageClass" + ], + [ + "spec", + "volume", + "diskType" + ], + [ + "spec", + "volume", + "resources" + ], + [ + "spec", + "volume", + "resourcesPreset" + ], + [ + "spec", + "volume", + "zones" + ], + [ + "spec", + "volume", + "pools" + ], + [ + "spec", + "s3" + ], + [ + "spec", + "s3", + "replicas" + ], + [ + "spec", + "s3", + "resources" + ], + [ + "spec", + "s3", + "resourcesPreset" + ] + ], + "module": true, + "name": "seaweedfs", + "plural": "SeaweedFS", + "singular": "SeaweedFS" + }, + "ingresses": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "ingress-seaweedfs-{{ .name }}-s3" + ] + } + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-seaweedfs-application-default-seaweedfs", + "namespace": "cozy-system" + }, + "labels": { + "internal.cozystack.io/tenantmodule": "true", + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "" + }, + "secrets": { + "exclude": [], + "include": [] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "seaweedfs-{{ .name }}-s3" + ] + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "tcp-balancer-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:24Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "tcp-balancer-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "tcp-balancer", + "resourceVersion": "35873", + "uid": "a3bf65db-d8c6-4524-bef8-5f0711c54a1d" + }, + "spec": { + "application": { + "kind": "TCPBalancer", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of HAProxy replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each TCP Balancer replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"httpAndHttps\":{\"description\":\"HTTP and HTTPS configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"mode\",\"targetPorts\"],\"properties\":{\"endpoints\":{\"description\":\"Endpoint addresses list.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"mode\":{\"description\":\"Mode for balancer.\",\"type\":\"string\",\"default\":\"tcp\",\"enum\":[\"tcp\",\"tcp-with-proxy\"]},\"targetPorts\":{\"description\":\"Target ports configuration.\",\"type\":\"object\",\"default\":{},\"required\":[\"http\",\"https\"],\"properties\":{\"http\":{\"description\":\"HTTP port number.\",\"type\":\"integer\",\"default\":80},\"https\":{\"description\":\"HTTPS port number.\",\"type\":\"integer\",\"default\":443}}}}},\"whitelistHTTP\":{\"description\":\"Secure HTTP by whitelisting client networks (default: false).\",\"type\":\"boolean\",\"default\":false},\"whitelist\":{\"description\":\"List of allowed client networks.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}}}}", + "plural": "tcpbalancers", + "singular": "tcpbalancer" + }, + "dashboard": { + "category": "NaaS", + "description": "Layer4 load balancer service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODNfMjk4NSkiLz4KPHBhdGggZD0iTTcyLjE2NDUgNTkuNDI0M0w2Mi41IDQ4LjQ5OCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjI2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTQxLjY4NTUgNTEuMDIxNUw0OS4yNDcgNjIuMDY5MyIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEzIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTcyLjE2NDYgNTkuNDQxNEw4MS43MjYzIDQ4LjM5MzZNODMuNzE3MSA3MS42Mjk0TDk1LjA2NCA2Mi4wNjc4TTgzLjcxNzEgNzEuNjEwOEw5NS4wNjQgODEuNTkzTTgxLjgyOTEgOTQuMjAxN0w3Mi4xNjQ2IDgzLjQ4MTFNNjIuNTAwMSA5NC4yMDE3TDcyLjE2NDYgODMuNDkwNE00OS4yNTU5IDgxLjE3MjRMNjAuMTgyMSA3MS42MTA4TTYwLjE5MTUgNzEuNjEwOEw0OS4yNjUyIDYyLjA0OTFMNzIuMTY0NiA1OS40MjI3TDk1LjA2NCA2Mi4wNDkxIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMjYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNODEuNzE2OCA0OC4zOTM2TDgzLjcxNyA3MS42MTA4TDgxLjgyOSA5NC4xOTI0IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMjYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNOTUuMDY0IDgxLjU5MjVMNzIuMTY0NiA4My40ODA1TTQ5LjI1NTkgODEuMTcxOUw3Mi4xNTUzIDgzLjQ5OTIiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4yNiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik02Mi41MDEyIDk0LjIwMTRMNjAuMTczOCA3MS42MTk4TTYyLjUwMTIgNDguNDk2MUw2MC4xNzM4IDcxLjYxMDUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4yNiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik0zOC43NSA2NC45OTQ4TDQ5LjI1NTcgNjIuMDUwNk01MS40NjE1IDQwLjYxODdMNjIuNTA5MyA0OC40OTc5TTYyLjQ5MDYgNDguNDk3OUw2NS4wMTQyIDM1LjY4MzZMODEuNzE2OCA0OC4zOTUxIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTMiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNNzkuMjAzMSAzNS42ODM2TDgxLjcyNjcgNDguMzk1MU05Mi43NTU4IDQwLjYxODdMODEuNzA4IDQ4LjM5NTFNMTAyLjYyNiA1MS4wMjE1TDgxLjcxNzQgNDguMzk1MU0xMDIuNjI2IDUxLjAwMjhMOTUuMDY0NSA2Mi4wNTA2TDEwNS43NzYgNjQuOTk0OCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEzIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTk1LjA2MzkgNjIuMDUwNkwxMDUuNTcgNzguMDE0OE03OS4yMDI1IDM1LjY4MzZMNjIuNSA0OC40OTc5IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTMiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNOTUuMDYzNyA2Mi4wNTExTDkyLjczNjMgNDAuNjE5MU05NS4wNjM3IDgxLjU5NTFMMTA1LjU2OSA3OC4wMTUzIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTMiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNOTUuMDY1IDgxLjU5NDlMMTA1Ljc3NiA2NC45OTUxTTk1LjA2NSA4MS41OTQ5TDEwMi42MjYgOTEuNzgyOE05NS4wNjUgODEuNTk0OUw5Mi43Mzc3IDEwMi4xODZNODEuODMwMSA5NC4yMDM1TDkyLjc1NjQgMTAyLjE4NiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEzIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTgxLjgyOSA5NC4yMDNMMTAyLjYyNSA5MS43ODIyTTgxLjgyOSA5NC4yMDNMNzkuMzI0MSAxMDcuMTExTTgxLjgyOSA5NC4yMDNMNjUuMDE0MyAxMDcuMTAxTTYyLjUgOTQuMjAzTDY1LjAyMzYgMTA3LjEzOSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEzIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTYyLjUwMTIgOTQuMjAzMUw3OS4zMjUzIDEwNy4xMTFNNTEuNDYyOCAxMDIuMTg1TDYyLjUxMDUgOTQuMjAzMUw0MS42NzY4IDkxLjg4NTFMNDkuMjU2OSA4MS4xNzM4IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTMiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNNTEuNDYxOCAxMDIuMTg1TDQ5LjI1NiA4MS4xNzMxTDM4LjY0NzUgNzcuOTExMUw0OS4yNTYgNjIuMDQ5OCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEzIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTQ5LjI1NTcgODEuMTc0NUwzOC43NSA2NC45OTUzTTUxLjQ2MTUgNDAuNjE5MUw0OS4yNTU3IDYyLjA1MTEiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4xMyIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik00MS42ODU1IDUxLjAyMTdMNjIuNDgxOSA0OC40OTgiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4xMyIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik00My4zNzYgMzYuODMzOEw1MS40NjA5IDQwLjYxOTJMNTAuODM0NiAzMS43OTU5TDY1LjAxMzYgMzUuNjg0MSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEwMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik01OC45Mjg5IDI4LjIyNDRMNjUuMDEzNiAzNS42ODMxTDY3LjUzNzMgMjYuNzM4M0w3OS4yMDE5IDM1LjY4MzFNNTEuNDYwOSA0MC42MTgxTDU4LjkxOTYgMjguMjI0NCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEwMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik03Ni41NjY3IDI2LjQ0MDRMNzkuMjAyNSAzNS42ODQzTDg1LjI5NjYgMjguMjI1Nk02NS4wMDQ5IDM1LjY4NDNMNzYuNTU3NCAyNi40NDA0TTkyLjc1NTIgNDAuNjE5NEw4NS4yNzc5IDI4LjIyNTYiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4xMDEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNOTIuNzU0OSA0MC42MTkyTDkzLjQ5MzIgMzEuNzk1OU05Mi43NTQ5IDQwLjYxOTJMMTAxLjAzNiAzNi40MTMyTTkyLjc1NDkgNDAuNjE5MkwxMDcuMTQ5IDQyLjgyNU03OS4yMDIxIDM1LjY4NDFMOTMuNDgzOSAzMS43OTU5IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTAxIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTEwMi42MjUgNTEuMDIxNEwxMDcuMTM5IDQyLjgyNDRNMTAyLjYyNSA1MS4wMjE0TDEwMS4wNDUgMzYuNDIxOU0xMDIuNjI1IDUxLjAyMTRMMTEyLjA4MyA1MC4yODNNMTAyLjYyNSA1MS4wMjE0TDExNS41NiA1OC4zNzczIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTAxIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTEwNS43NzQgNjQuOTk0OUwxMTIuMDgzIDUwLjI4MzJNMTA1Ljc3NCA2NC45OTQ5TDExNS41NDEgNTguMzc3NE0xMDUuNzc0IDY0Ljk5NDlMMTE2LjcgNjcuMjAwN0wxMDUuNTY4IDc4LjAxNDkiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4xMDEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNMTE3LjAxOSA3NS45MTIxTDEwNS41NjkgNzguMDE1MUwxMTUuMzM3IDg0LjUyOTdMMTAyLjYyNSA5MS43ODI3TTEwNS43NzUgNjQuOTk1MUwxMTcuMDE5IDc1LjkyMTQiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4xMDEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNMTAyLjYyNSA5MS43ODMzTDExMS45NzEgOTIuNzI3M00xMDUuNTc4IDc4LjAxNTZMMTExLjk3MSA5Mi43MThNMTA3LjA1NSAxMDAuMDY0TDEwMi42NDMgOTEuNzgzM0wxMDAuOTYxIDEwNi4yOCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEwMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik0xMDAuOTQzIDEwNi4yNzlMOTIuNzQ1OCAxMDIuMTg1TTkyLjc1NTEgMTAyLjE4NUw5My4zODEzIDExMS4zNDVNOTIuNzU1MSAxMDIuMTg1TDEwNy4wMzcgMTAwLjA4Mk05Mi43NTUxIDEwMi4xODVMODUuMjg3MSAxMTQuNzk0IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTAxIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTc5LjMyMzIgMTA3LjEwM0w4NS4yNzcgMTE0Ljc2N003OS4zMjMyIDEwNy4xMDNMOTMuMzk5MyAxMTEuMzA5TTc5LjMyMzIgMTA3LjEwM0w3Ni41NjU5IDExNi41NjFNNzkuMzIzMiAxMDcuMTAzTDY3LjU1NTcgMTE2LjU2MSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEwMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik02NS4wMTM2IDEwNy4xMDJMNjcuNTM3MyAxMTYuNTYxTTY1LjAxMzYgMTA3LjEwMkw3Ni41NTY4IDExNi41NjFNNjUuMDEzNiAxMDcuMTAyTDU5LjAyMjQgMTE0Ljc2Nk01MS40NjA5IDEwMi4xODZMNTkuMDIyNCAxMTQuNzk0IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTAxIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTY1LjAxMzkgMTA3LjEwMUw1MC43MzIyIDExMS41MTNNNTAuNzIyOCAxMTEuNTMyTDUxLjQ2MTIgMTAyLjE4NUw0My4yNjQyIDEwNi42OTlMNDEuNjg0NiA5MS44ODQ4IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTAxIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTUxLjQ2MSAxMDIuMTg2TDM3LjA2NzEgMTAwLjE5NU00MS42ODQ0IDkxLjg4NkwzNy4wNTc4IDEwMC4xNjdNNDEuNjg0NCA5MS44ODZMMzIuMjI1NSA5Mi44MzAxTTQxLjY4NDQgOTEuODg2TDI4LjY3MzggODQuNjQyM0wzOC42NDY3IDc3LjkxMjdMMjcuMjk5OCA3NS45MjE5IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTAxIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTM4LjY0NjcgNzcuOTEyM0wzMi4yNTM2IDkyLjgyOTZNMzguNzQ5NSA2NC45OTUxTDI3LjI5OTggNzUuOTIxNCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEwMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik0zOC42NDY3IDc3LjkxMjJMMjcuMjk5OCA2Ny4yMDA5TTM4Ljc1ODkgNjQuOTk1MUwyOC45ODIyIDU4LjQ4MDUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4xMDEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNMjcuMjk5OCA2Ny4yMDA3TDM4Ljc0OTUgNjQuOTk0OUwzMi4yNDQyIDUwLjI4MzIiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC4xMDEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPgo8cGF0aCBkPSJNNDEuNjgzNiA1MS4wMjE3TDMyLjIyNDcgNTAuMjgzM000MS42ODM2IDUxLjAyMTdMMjguOTgxNCA1OC40ODA0TTQxLjY4MzYgNTEuMDIxN0wzNy4xNzg1IDQzLjI0NTNNNDEuNjgzNiA1MS4wMjE3TDQzLjM2NiAzNi44NDI4IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjAuMTAxIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4KPHBhdGggZD0iTTUxLjQ2MSA0MC42MTkxTDM3LjE2OTkgNDMuMjQ1NiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjEwMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+CjxwYXRoIGQ9Ik01NC41NjQ1IDc3LjA3MDJMNTQuNjM5MiA2Ni4wMjI0TDY1LjY4NyA2Ni4wOTcxTDY1LjYxMjMgNzcuMTQ0OUw1NC41NjQ1IDc3LjA3MDJaTTY2LjUxODkgNjQuOTEwMUw2Ni41OTM3IDUzLjg2MjNMNzcuNjQxNSA1My45MzcxTDc3LjU2NjcgNjQuOTg0OUw2Ni41MTg5IDY0LjkxMDFaTTY2LjUxODkgODkuMTI3NEw2Ni41OTM3IDc4LjA3OTZMNzcuNjQxNSA3OC4xNTQ0TDc3LjU2NjcgODkuMjAyMkw2Ni41MTg5IDg5LjEyNzRaTTc4LjU3NjEgNzYuOTY3M0w3OC42NTA5IDY1LjkxOTVMODkuNjk4NyA2NS45OTQzTDg5LjYyMzkgNzcuMDQyMUw3OC41NzYxIDc2Ljk2NzNaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNzcuOTQwNiA1Mi4yMzY2TDc3Ljk5NjYgNDQuNTcyM0w4NS42OTgzIDQ0LjYyODNMODUuNjQyMiA1Mi4yOTI2TDc3Ljk0MDYgNTIuMjM2NlpNNTguNjg2NCA1Mi4yMzY2TDU4Ljc0MjQgNDQuNTcyM0w2Ni40NDQxIDQ0LjYyODNMNjYuMzg4IDUyLjI5MjZMNTguNjg2NCA1Mi4yMzY2Wk00NS4zNTggNjUuODkyMUw0NS40MTQxIDU4LjIyNzhMNTMuMTE1NyA1OC4yODM5TDUzLjA1OTcgNjUuOTQ4Mkw0NS4zNTggNjUuODkyMVpNNDUuMzQ4NiA4NS4xNjVMNDUuNDMyOCA3Ny41MDA3TDUzLjEzNDQgNzcuNTg0OEw1My4wNTAzIDg1LjI0OTFMNDUuMzQ4NiA4NS4xNjVaTTkxLjI2OSA4NS4wMTU0TDkxLjMyNSA3Ny4zNTExTDk5LjAyNjcgNzcuNDA3Mkw5OC45NzA2IDg1LjA3MTVMOTEuMjY5IDg1LjAxNTRaTTkxLjQxODUgNjUuOTQ4Mkw5MS41MDI2IDU4LjI4MzlMOTkuMjA0MyA1OC4zNjhMOTkuMTIwMiA2Ni4wMzIzTDkxLjQxODUgNjUuOTQ4MloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0zOS4xMTQzIDUzLjUyNjNMMzkuMTUxNyA0OC40NzkxTDQ0LjE4MDIgNDguNTE2NUw0NC4xNDI4IDUzLjU2MzdMMzkuMTE0MyA1My41MjYzWk00OC45NTYzIDQzLjI2MzdMNDguOTkzNyAzOC4yMTY0TDU0LjAyMjMgMzguMjUzOEw1My45ODQ5IDQzLjMwMUw0OC45NTYzIDQzLjI2MzdaTTYyLjQ5OTcgMzguMTg4NEw2Mi41MzcxIDMzLjE0MTJMNjcuNTY1NiAzMy4xNzg2TDY3LjUyODIgMzguMjI1OEw2Mi40OTk3IDM4LjE4ODRaTTM2LjE1MTQgNjcuNDkwM0wzNi4xODg4IDYyLjQ0MzFMNDEuMTg5MiA2Mi40ODA1TDQxLjE1MTkgNjcuNTI3N0wzNi4xNTE0IDY3LjQ5MDNaTTEwMC4wODMgNDguNTUzOUwxMDUuMTMgNDguNTE2NUwxMDUuMTY3IDUzLjU0NUwxMDAuMTIgNTMuNTgyNEwxMDAuMDgzIDQ4LjU1MzlaTTkwLjI0MDcgMzguMTEzNkw5NS4yODc5IDM4LjA3NjJMOTUuMzI1MyA0My4xMDQ4TDkwLjI3ODEgNDMuMTQyMUw5MC4yNDA3IDM4LjExMzZaTTc2LjY1MDYgMzMuMTY5Mkw4MS42OTc4IDMzLjEzMThMODEuNzM1MiAzOC4xNjA0TDc2LjY4OCAzOC4xOTc3TDc2LjY1MDYgMzMuMTY5MlpNMTAzLjAxOCA2Mi40OTkyTDEwOC4wNjUgNjIuNDYxOEwxMDguMTAyIDY3LjQ5MDNMMTAzLjA1NSA2Ny41Mjc3TDEwMy4wMTggNjIuNDk5MloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik01OC41ODMgOTguMjQwNUw1OC42MzkxIDkwLjU3NjJMNjYuMzQwOCA5MC42MzIzTDY2LjI4NDcgOTguMjk2NUw1OC41ODMgOTguMjQwNVpNNzcuODM3MiA5OC4yNDA1TDc3Ljg5MzMgOTAuNTc2Mkw4NS41OTUgOTAuNjMyM0w4NS41Mzg5IDk4LjI5NjVMNzcuODM3MiA5OC4yNDA1WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTEwMC4wNDUgOTQuMzYxOUwxMDAuMDgyIDg5LjMxNDdMMTA1LjExMSA4OS4zNTIxTDEwNS4wNzQgOTQuMzk5M0wxMDAuMDQ1IDk0LjM2MTlaTTkwLjMxNTIgMTA0LjcyN0w5MC4zNTI2IDk5LjY4MDJMOTUuMzgxMSA5OS43MTc2TDk1LjM0MzcgMTA0Ljc2NUw5MC4zMTUyIDEwNC43MjdaTTc2Ljc3MTggMTA5LjdMNzYuODA5MiAxMDQuNjUzTDgxLjgzNzcgMTA0LjY5TDgxLjgwMDQgMTA5LjczN0w3Ni43NzE4IDEwOS43Wk0xMDMuMDA4IDgwLjM5NzlMMTAzLjA0NSA3NS4zNTA3TDEwOC4wNzQgNzUuMzg4MUwxMDguMDM3IDgwLjQzNTNMMTAzLjAwOCA4MC4zOTc5Wk0zOS4xMjMzIDg5LjMxNDdMNDQuMTcwNiA4OS4yNzczTDQ0LjIwNzkgOTQuMzA1OEwzOS4xNjA3IDk0LjM0MzJMMzkuMTIzMyA4OS4zMTQ3Wk00OC45NjU0IDk5LjY0MjhMNTQuMDEyNiA5OS42MDU0TDU0LjA1IDEwNC42MzRMNDkuMDAyOCAxMDQuNjcxTDQ4Ljk2NTQgOTkuNjQyOFpNNjIuNDQzMyAxMDQuNTk3TDY3LjQ5MDYgMTA0LjU1OUw2Ny41Mjc5IDEwOS41ODhMNjIuNDgwNyAxMDkuNjI1TDYyLjQ0MzMgMTA0LjU5N1pNMzYuMTg4NSA3NS4zNjk0TDQxLjIzNTcgNzUuMzMyTDQxLjI3MzEgODAuMzYwNkwzNi4yMjU5IDgwLjM5NzlMMzYuMTg4NSA3NS4zNjk0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTExMC42MjUgNTEuNjM4NEwxMTAuNjQ0IDQ4LjkwOTJMMTEzLjQyOSA0OC45Mjc5TDExMy40MSA1MS42NTcxTDExMC42MjUgNTEuNjM4NFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMTQuMjI0IDU5Ljg5MTNMMTE0LjI0MiA1Ny4xNjIxTDExNy4wMjggNTcuMTgwOEwxMTcuMDA5IDU5LjkxTDExNC4yMjQgNTkuODkxM1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMDUuNzY3IDQ0LjMzNzZMMTA1Ljc4NSA0MS42MDg0TDEwOC41NzEgNDEuNjI3MUwxMDguNTUyIDQ0LjM1NjNMMTA1Ljc2NyA0NC4zMzc2WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTQxLjk3MzYgMzguMDk0NUw0MS45OTIzIDM1LjM2NTJMNDQuNzc3NiAzNS4zODM5TDQ0Ljc1ODkgMzguMTEzMkw0MS45NzM2IDM4LjA5NDVaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjYgNjguNTU1NEwyNi4wMTg3IDY1LjgyNjJMMjguODA0IDY1Ljg0NDlMMjguNzg1MyA2OC41NzQxTDI2IDY4LjU1NTRaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNOTkuNjI0IDM4LjA5NDVMOTkuNjQyNyAzNS4zNjUyTDEwMi40MjggMzUuMzgzOUwxMDIuNDA5IDM4LjExMzJMOTkuNjI0IDM4LjA5NDVaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjcuNTg5OCA1OS44ODE2TDI3LjYwODUgNTcuMTUyM0wzMC4zOTM5IDU3LjE3MUwzMC4zNzUyIDU5LjkwMDNMMjcuNTg5OCA1OS44ODE2WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTU3LjYyOTkgMjkuNjM1NUw1Ny42NDg2IDI2LjkwNjJMNjAuNDMzOSAyNi45MjQ5TDYwLjQxNTIgMjkuNjU0Mkw1Ny42Mjk5IDI5LjYzNTVaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzAuOTcyNyA1MS42Mzg0TDMwLjk5MTMgNDguOTA5MkwzMy43NzY3IDQ4LjkyNzlMMzMuNzU4IDUxLjY1NzFMMzAuOTcyNyA1MS42Mzg0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTM1Ljk0NTMgNDQuMjM2MUwzNS45NjQgNDEuNTA2OEwzOC43NDkzIDQxLjUyNTVMMzguNzMwNiA0NC4yNTQ4TDM1Ljk0NTMgNDQuMjM2MVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik00OS40MjI5IDMwLjQyMDRMNTIuMTUyMSAzMC40MDE3TDUyLjE3MDggMzMuMTg3TDQ5LjQ0MTUgMzMuMjA1N0w0OS40MjI5IDMwLjQyMDRaTTY2LjMwMyAyNS4wNDZMNjkuMDMyMiAyNS4wMjczTDY5LjA1MDkgMjcuODEyN0w2Ni4zMjE3IDI3LjgzMTRMNjYuMzAzIDI1LjA0NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik05Mi4yMjI3IDMzLjIyNDRMOTIuMjQxNCAzMC40OTUxTDk1LjAyNjcgMzAuNTEzOEw5NS4wMDggMzMuMjQzTDkyLjIyMjcgMzMuMjI0NFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMTUuNTk4IDY4LjQ1MjlMMTE1LjYxNiA2NS43MjM2TDExOC40MDIgNjUuNzQyM0wxMTguMzgzIDY4LjQ3MTZMMTE1LjU5OCA2OC40NTI5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTc1LjE5MTQgMjcuNzI5Mkw3NS4yMTAxIDI1TDc3Ljk5NTQgMjUuMDE4N0w3Ny45NzY3IDI3Ljc0NzlMNzUuMTkxNCAyNy43MjkyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTgzLjg2NjIgMjkuNTIzMkw4My44ODQ5IDI2Ljc5MzlMODYuNjcwMiAyNi44MTI2TDg2LjY1MTUgMjkuNTQxOUw4My44NjYyIDI5LjUyMzJaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNOTkuNjI0IDEwNy43TDk5LjY0MjcgMTA0Ljk3MUwxMDIuNDI4IDEwNC45ODlMMTAyLjQwOSAxMDcuNzE5TDk5LjYyNCAxMDcuN1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMTUuNTk4IDc3LjIzOUwxMTUuNjE2IDc0LjUwOThMMTE4LjQwMiA3NC41Mjg1TDExOC4zODMgNzcuMjU3N0wxMTUuNTk4IDc3LjIzOVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik00MS45NzM2IDEwNy43TDQxLjk5MjMgMTA0Ljk3MUw0NC43Nzc2IDEwNC45ODlMNDQuNzU4OSAxMDcuNzE5TDQxLjk3MzYgMTA3LjdaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMTE0LjIyNCA4Ni4wMzI5TDExNC4yNDIgODMuMzAzN0wxMTcuMDI4IDgzLjMyMjRMMTE3LjAwOSA4Ni4wNTE2TDExNC4yMjQgODYuMDMyOVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik04My44NjYyIDExNi4yN0w4My44ODQ5IDExMy41NDFMODYuNjcwMiAxMTMuNTZMODYuNjUxNSAxMTYuMjg5TDgzLjg2NjIgMTE2LjI3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTExMC42MjUgOTQuMjY4M0wxMTAuNjQ0IDkxLjUzOTFMMTEzLjQyOSA5MS41NTc4TDExMy40MSA5NC4yODdMMTEwLjYyNSA5NC4yNjgzWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTEwNS43NjcgMTAxLjY3MkwxMDUuNzg1IDk4Ljk0MjRMMTA4LjU3MSA5OC45NjExTDEwOC41NTIgMTAxLjY5TDEwNS43NjcgMTAxLjY3MloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik05Mi4xMDk0IDExMC4wNjVMOTQuODM4NiAxMTAuMDQ2TDk0Ljg1NzMgMTEyLjgzMUw5Mi4xMjggMTEyLjg1TDkyLjEwOTQgMTEwLjA2NVpNNzUuMzMyIDExNS4yMTVMNzguMDYxMyAxMTUuMTk2TDc4LjA4IDExNy45ODFMNzUuMzUwNyAxMThMNzUuMzMyIDExNS4yMTVaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNDkuNDc4NSAxMTIuODg2TDQ5LjQ5NzIgMTEwLjE1N0w1Mi4yODI1IDExMC4xNzZMNTIuMjYzOCAxMTIuOTA1TDQ5LjQ3ODUgMTEyLjg4NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0zMC44NTk0IDk0LjE2NThMMzAuODc4MSA5MS40MzY1TDMzLjY2MzQgOTEuNDU1MkwzMy42NDQ3IDk0LjE4NDVMMzAuODU5NCA5NC4xNjU4WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTI3LjU4MDEgODYuMDE0NEwyNy41OTg4IDgzLjI4NTJMMzAuMzg0MSA4My4zMDM5TDMwLjM2NTQgODYuMDMzMUwyNy41ODAxIDg2LjAxNDRaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzUuODMyIDEwMS42NzJMMzUuODUwNyA5OC45NDI0TDM4LjYzNiA5OC45NjExTDM4LjYxNzMgMTAxLjY5TDM1LjgzMiAxMDEuNjcyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTI2IDc3LjIzOUwyNi4wMTg3IDc0LjUwOThMMjguODA0IDc0LjUyODVMMjguNzg1MyA3Ny4yNTc3TDI2IDc3LjIzOVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik02Ni40MDUzIDExNy45NjJMNjYuNDI0IDExNS4yMzJMNjkuMjA5MyAxMTUuMjUxTDY5LjE5MDYgMTE3Ljk4TDY2LjQwNTMgMTE3Ljk2MloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik01Ny41MTc2IDExNi4xNjhMNTcuNTM2MyAxMTMuNDM4TDYwLjMyMTYgMTEzLjQ1N0w2MC4zMDI5IDExNi4xODZMNTcuNTE3NiAxMTYuMTY4WiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl82ODNfMjk4NSIgeDE9IjEwIiB5MT0iMTUuNSIgeDI9IjE0NCIgeTI9IjEzMS41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMEE4REEiLz4KPHN0b3Agb2Zmc2V0PSIwLjQ5NSIgc3RvcC1jb2xvcj0iIzM1NzlCQyIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyODZFQTUiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "external" + ], + [ + "spec", + "httpAndHttps" + ], + [ + "spec", + "httpAndHttps", + "mode" + ], + [ + "spec", + "httpAndHttps", + "targetPorts" + ], + [ + "spec", + "httpAndHttps", + "targetPorts", + "http" + ], + [ + "spec", + "httpAndHttps", + "targetPorts", + "https" + ], + [ + "spec", + "httpAndHttps", + "endpoints" + ], + [ + "spec", + "whitelistHTTP" + ], + [ + "spec", + "whitelist" + ] + ], + "plural": "TCP Balancer", + "singular": "TCP Balancer", + "tags": [ + "network" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-tcp-balancer-application-default-tcp-balancer", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "tcp-balancer-" + }, + "secrets": { + "exclude": [], + "include": [] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "tenant-rd", + "meta.helm.sh/release-namespace": "cozy-system", + "release.cozystack.io/helm-install-timeout": "15m" + }, + "creationTimestamp": "2026-08-12T10:13:54Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "tenant-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "tenant", + "resourceVersion": "37030", + "uid": "d6c8d555-d323-4893-9489-7617a2384886" + }, + "spec": { + "application": { + "kind": "Tenant", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"host\":{\"description\":\"The hostname used to access tenant services (defaults to using the tenant name as a subdomain for its parent tenant host).\",\"type\":\"string\",\"default\":\"\"},\"etcd\":{\"description\":\"Deploy own Etcd cluster.\",\"type\":\"boolean\",\"default\":false},\"monitoring\":{\"description\":\"Deploy own Monitoring Stack.\",\"type\":\"boolean\",\"default\":false},\"ingress\":{\"description\":\"Deploy own Ingress Controller.\",\"type\":\"boolean\",\"default\":false},\"gateway\":{\"description\":\"Deploy own Gateway API Gateway (backed by Cilium Gateway API controller). When unset (the default), the chart auto-enables the Gateway for tenants whose apex is derived from the parent (i.e. `host` is empty), and leaves it off for tenants with a custom non-derived apex. Set to `true` or `false` explicitly to override that auto-behaviour. Note: leave the key absent (do not write `gateway: null`) — the chart distinguishes \\\"unset\\\" via missing-key, not via null value, to satisfy the JSON schema generated from this comment.\",\"type\":\"boolean\"},\"seaweedfs\":{\"description\":\"Deploy own SeaweedFS.\",\"type\":\"boolean\",\"default\":false},\"schedulingClass\":{\"description\":\"The name of a SchedulingClass CR to apply scheduling constraints for this tenant's workloads.\",\"type\":\"string\",\"default\":\"\"},\"resourceQuotas\":{\"description\":\"Define resource quotas for the tenant.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}}}", + "plural": "tenants", + "singular": "tenant" + }, + "dashboard": { + "category": "Administration", + "description": "Separated tenant namespace", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODdfMzQwMykiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzY4N18zNDAzKSI+CjxwYXRoIGQ9Ik03MiAyOUM2Ni4zOTI2IDI5IDYxLjAxNDggMzEuMjM4OCA1Ny4wNDk3IDM1LjIyNEM1My4wODQ3IDM5LjIwOTEgNTAuODU3MSA0NC42MTQxIDUwLjg1NzEgNTAuMjVDNTAuODU3MSA1NS44ODU5IDUzLjA4NDcgNjEuMjkwOSA1Ny4wNDk3IDY1LjI3NkM2MS4wMTQ4IDY5LjI2MTIgNjYuMzkyNiA3MS41IDcyIDcxLjVDNzcuNjA3NCA3MS41IDgyLjk4NTIgNjkuMjYxMiA4Ni45NTAzIDY1LjI3NkM5MC45MTUzIDYxLjI5MDkgOTMuMTQyOSA1NS44ODU5IDkzLjE0MjkgNTAuMjVDOTMuMTQyOSA0NC42MTQxIDkwLjkxNTMgMzkuMjA5MSA4Ni45NTAzIDM1LjIyNEM4Mi45ODUyIDMxLjIzODggNzcuNjA3NCAyOSA3MiAyOVpNNjAuOTgyNiA4My4zMDM3QzYwLjQ1NCA4Mi41ODk4IDU5LjU5NTEgODIuMTkxNCA1OC43MTk2IDgyLjI3NDRDNDUuMzg5NyA4My43MzU0IDM1IDk1LjEwNzQgMzUgMTA4LjkwM0MzNSAxMTEuNzI2IDM3LjI3OTUgMTE0IDQwLjA3MSAxMTRIMTAzLjkyOUMxMDYuNzM3IDExNCAxMDkgMTExLjcwOSAxMDkgMTA4LjkwM0MxMDkgOTUuMTA3NCA5OC42MTAzIDgzLjc1MiA4NS4yNjM4IDgyLjI5MUM4NC4zODg0IDgyLjE5MTQgODMuNTI5NSA4Mi42MDY0IDgzLjAwMDkgODMuMzIwM0w3NC4wOTc4IDk1LjI0MDJDNzMuMDQwNiA5Ni42NTE0IDcwLjkyNjMgOTYuNjUxNCA2OS44NjkyIDk1LjI0MDJMNjAuOTY2MSA4My4zMjAzTDYwLjk4MjYgODMuMzAzN1oiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl82ODdfMzQwMyIgeDE9IjcyIiB5MT0iMTQ0IiB4Mj0iLTEuMjgxN2UtMDUiIHkyPSI0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNDMEQ2RkYiLz4KPHN0b3Agb2Zmc2V0PSIwLjMiIHN0b3AtY29sb3I9IiNDNERBRkYiLz4KPHN0b3Agb2Zmc2V0PSIwLjY1IiBzdG9wLWNvbG9yPSIjRDNFOUZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0U5RkZGRiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzY4N18zNDAzIj4KPHJlY3Qgd2lkdGg9Ijc0IiBoZWlnaHQ9Ijg1IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUgMjkpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "host" + ], + [ + "spec", + "etcd" + ], + [ + "spec", + "monitoring" + ], + [ + "spec", + "ingress" + ], + [ + "spec", + "seaweedfs" + ], + [ + "spec", + "schedulingClass" + ], + [ + "spec", + "resourceQuotas" + ] + ], + "plural": "Tenants", + "singular": "Tenant" + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-tenant-application-default-tenant", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "tenant-" + }, + "secrets": { + "exclude": [], + "include": [] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "virtualprivatecloud-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:24Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "virtualprivatecloud-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "virtualprivatecloud", + "resourceVersion": "35862", + "uid": "7eade7a2-c071-491a-8e28-8a7fe20ab124" + }, + "spec": { + "application": { + "kind": "VirtualPrivateCloud", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"subnets\":{\"description\":\"Subnets of a VPC\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"cidr\":{\"description\":\"IP address range\",\"type\":\"string\"},\"name\":{\"description\":\"Subnet name\",\"type\":\"string\"}}}},\"peers\":{\"description\":\"VPC peering connections (bidirectional declaration required)\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"tenantNamespace\",\"vpcName\"],\"properties\":{\"tenantNamespace\":{\"description\":\"Namespace of the remote tenant\",\"type\":\"string\"},\"vpcName\":{\"description\":\"Logical name of the remote VPC (without \\\"virtualprivatecloud-\\\" prefix)\",\"type\":\"string\"}}}},\"routes\":{\"description\":\"Static routes for the VPC\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"cidr\",\"nextHopIP\"],\"properties\":{\"cidr\":{\"description\":\"Destination CIDR\",\"type\":\"string\"},\"nextHopIP\":{\"description\":\"Next hop IP address\",\"type\":\"string\"}}}}}}", + "plural": "virtualprivateclouds", + "singular": "virtualprivatecloud" + }, + "dashboard": { + "category": "IaaS", + "description": "Isolated networks", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8xMDI1XzMpIi8+CjxwYXRoIGQ9Ik0xMDkuNiA4Ni4xSDExNC4zQzExNi44ODUgODYuMSAxMTkgODguMjE1IDExOSA5MC44NDdWMTA0Ljg1M0MxMTkgMTA3LjQ4NSAxMTYuODg1IDEwOS42IDExNC4zIDEwOS42SDk1LjVDOTIuOTE1IDEwOS42IDkwLjggMTA3LjQ4NSA5MC44IDEwNC44NTNWOTAuODQ3QzkwLjggODguMjE1IDkyLjkxNSA4Ni4xIDk1LjUgODYuMUgxMDAuMlY3Ni43SDc2LjdWODYuMUg4MS40QzgzLjk4NSA4Ni4xIDg2LjEgODguMjE1IDg2LjEgOTAuODQ3VjEwNC44NTNDODYuMSAxMDcuNDg1IDgzLjk4NSAxMDkuNiA4MS40IDEwOS42SDYyLjZDNjAuMDE1IDEwOS42IDU3LjkgMTA3LjQ4NSA1Ny45IDEwNC44NTNWOTAuODQ3QzU3LjkgODguMjE1IDYwLjAxNSA4Ni4xIDYyLjYgODYuMUg2Ny4zVjc2LjdINDMuOFY4Ni4xSDQ4LjVDNTEuMDg1IDg2LjEgNTMuMiA4OC4yMTUgNTMuMiA5MC44NDdWMTA0Ljg1M0M1My4yIDEwNy40ODUgNTEuMDg1IDEwOS42IDQ4LjUgMTA5LjZIMjkuN0MyNy4xMTUgMTA5LjYgMjUgMTA3LjQ4NSAyNSAxMDQuODUzVjkwLjg0N0MyNSA4OC4yMTUgMjcuMTE1IDg2LjEgMjkuNyA4Ni4xSDM0LjRWNzYuN0MzNC40IDcxLjUzIDM4LjYzIDY3LjMgNDMuOCA2Ny4zSDY3LjNWNTcuOUg2Mi42QzYwLjAxNSA1Ny45IDU3LjkgNTUuNzg1IDU3LjkgNTMuMTUzVjM5LjE0N0M1Ny45IDM2LjUxNSA2MC4wMTUgMzQuNCA2Mi42IDM0LjRIODEuNEM4My45ODUgMzQuNCA4Ni4xIDM2LjUxNSA4Ni4xIDM5LjE0N1Y1My4xNTNDODYuMSA1NS43ODUgODMuOTg1IDU3LjkgODEuNCA1Ny45SDc2LjdWNjcuM0gxMDAuMkMxMDUuMzcgNjcuMyAxMDkuNiA3MS41MyAxMDkuNiA3Ni43Vjg2LjFaIiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzEwMjVfMyIgeDE9IjE0Mi41IiB5MT0iMTQzIiB4Mj0iMy45OTk5OSIgeTI9IjkuNDk5OTkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzAwMDgyRSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyRTMwNjciLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "subnets" + ], + [ + "spec", + "peers" + ], + [ + "spec", + "routes" + ] + ], + "plural": "VPCs", + "singular": "VPC" + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-virtualprivatecloud-application-kubevirt-virtualprivatecloud", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "virtualprivatecloud-" + }, + "secrets": { + "exclude": [], + "include": [] + }, + "services": { + "exclude": [], + "include": [] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "vm-disk-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:14:54Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "vm-disk-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "vm-disk", + "resourceVersion": "38815", + "uid": "15c9a035-f5dd-4d75-bd25-75464ffe2fbb" + }, + "spec": { + "application": { + "kind": "VMDisk", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"source\":{\"description\":\"The source image location used to create a disk.\",\"type\":\"object\",\"default\":{},\"properties\":{\"disk\":{\"description\":\"Clone an existing vm-disk.\",\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"name\":{\"description\":\"Name of the vm-disk to clone.\",\"type\":\"string\"}}},\"http\":{\"description\":\"Download image from an HTTP source.\",\"type\":\"object\",\"required\":[\"url\"],\"properties\":{\"url\":{\"description\":\"URL to download the image.\",\"type\":\"string\"}}},\"image\":{\"description\":\"Use image by name from default collection.\",\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"name\":{\"description\":\"Name of the image to use.\",\"type\":\"string\",\"x-cozystack-options\":{\"source\":\"image\"}}}},\"upload\":{\"description\":\"Upload local image.\",\"type\":\"object\"}}},\"optical\":{\"description\":\"Defines if disk should be considered optical.\",\"type\":\"boolean\",\"default\":false},\"storage\":{\"description\":\"The size of the disk allocated for the virtual machine.\",\"default\":\"5Gi\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"storageClass\":{\"description\":\"StorageClass used to store the data.\",\"type\":\"string\",\"default\":\"replicated\",\"x-kubernetes-validations\":[{\"rule\":\"self == oldSelf\",\"message\":\"storageClass is immutable\"}],\"x-cozystack-options\":{\"source\":\"storageclass\"}}}}", + "plural": "vmdisks", + "singular": "vmdisk" + }, + "dashboard": { + "category": "IaaS", + "description": "Virtual Machine disk", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8zMzBfNDg5NjMpIi8+CjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2lfMzMwXzQ4OTYzKSI+CjxwYXRoIGQ9Ik03Mi4wMDAxIDI2LjYzNjdDNDYuODc3MiAyNi42MzY3IDI2LjUxMTIgNDcuMDAyNyAyNi41MTEyIDcyLjEyNTZDMjYuNTExMiA5Ny4yNDg0IDQ2Ljg3NzIgMTE3LjYxNCA3Mi4wMDAxIDExNy42MTRDOTcuMTIyOSAxMTcuNjE0IDExNy40ODkgOTcuMjQ4MiAxMTcuNDg5IDcyLjEyNTRDMTE3LjQ4OSA0Ny4wMDI1IDk3LjEyMjkgMjYuNjM2NyA3Mi4wMDAxIDI2LjYzNjdaTTcyLjAwMDEgODEuNjIxMkM2Ni43NTU3IDgxLjYyMTIgNjIuNTA0NCA3Ny4zNjk5IDYyLjUwNDQgNzIuMTI1NkM2Mi41MDQ0IDY2Ljg4MTIgNjYuNzU1NyA2Mi42Mjk5IDcyLjAwMDEgNjIuNjI5OUM3Ny4yNDQ0IDYyLjYyOTkgODEuNDk1NyA2Ni44ODEyIDgxLjQ5NTcgNzIuMTI1NkM4MS40OTU3IDc3LjM2OTkgNzcuMjQ0NCA4MS42MjEyIDcyLjAwMDEgODEuNjIxMloiIGZpbGw9IiNCQUQ5RkYiLz4KPC9nPgo8cGF0aCBkPSJNNTIuMDA3NSA2NS43MjA5TDMyLjI5NzYgNTkuMDQ5OEMzNi4yODQyIDQ3LjI3MTEgNDUuMzI4NSAzNy42MzE1IDU2LjQ5MSAzMy4yNjRMNjQuMDcyOCA1Mi42NDE5QzU4LjY0MiA1NC43NjY3IDU0LjAxOSA1OS43NzgzIDUyLjAwNzUgNjUuNzIwOVpNOTEuOTkyNiA3OC41M0wxMTEuNzAzIDg1LjIwMTFDMTA3LjcxNiA5Ni45Nzk5IDk4LjY3MTggMTA2LjYxOSA4Ny41MDkzIDExMC45ODdMNzkuOTI3NSA5MS42MDlDODUuMzU4MSA4OS40ODQyIDg5Ljk4MTMgODQuNDcyNiA5MS45OTI2IDc4LjUzWiIgZmlsbD0iI0VERjZGRiIvPgo8cGF0aCBkPSJNNTUuOTMyNCA1OC43MDI4QzU3LjY1MTQgNTYuNjE0IDU5LjcxOTQgNTQuODYzMiA2MS45ODk0IDUzLjYxODNDNjMuMTQ5IDUyLjk4MjQgNjQuMjYzMyA1My4xMjk2IDYzLjc4MTQgNTEuODk3OUw1Ny4yMDk1IDM1LjEwMDlDNTYuMjkwOSAzMi43NTI5IDU1LjI4MTQgMzMuNzI4NSA1My45MDYgMzQuMzg2OEM0OC45NzM0IDM2Ljc0NzYgNDQuNTM0OSA0MC4xNTkgNDAuODYwMSA0NC4zMTU0TDU1LjkzMjQgNTguNzAyOFpNODguMDY3NiA4NS41NDgxQzg1LjgzNTIgODguMjYwNSA4My4wMTQ4IDkwLjQwMjkgNzkuOTI2OSA5MS42MDhMODcuNTA4OSAxMTAuOTg2QzkzLjQ3ODUgMTA4LjY1NCA5OC44MzM2IDEwNC44MDYgMTAzLjE0IDk5LjkzNTVMODguMDY3NiA4NS41NDgxWiIgZmlsbD0iI0NERTNGRiIvPgo8cGF0aCBkPSJNNzIgODkuNDM4OEM2Mi40NTM0IDg5LjQzODggNTQuNjg2NSA4MS42NzIxIDU0LjY4NjUgNzIuMTI1NEM1NC42ODY1IDYyLjU3ODYgNjIuNDUzNCA1NC44MTE5IDcyIDU0LjgxMTlDODEuNTQ2OCA1NC44MTE5IDg5LjMxMzQgNjIuNTc4OCA4OS4zMTM0IDcyLjEyNTRDODkuMzEzNCA4MS42NzIgODEuNTQ2OCA4OS40Mzg4IDcyIDg5LjQzODhaTTcyIDU5LjExMDVDNjQuODIzNCA1OS4xMTA1IDU4Ljk4NDkgNjQuOTQ5IDU4Ljk4NDkgNzIuMTI1NkM1OC45ODQ5IDc5LjMwMjIgNjQuODIzNCA4NS4xNDA2IDcyIDg1LjE0MDZDNzkuMTc2NiA4NS4xNDA2IDg1LjAxNSA3OS4zMDIyIDg1LjAxNSA3Mi4xMjU2Qzg1LjAxNSA2NC45NDkgNzkuMTc2NiA1OS4xMTA1IDcyIDU5LjExMDVaIiBmaWxsPSIjMDBCNEZGIi8+CjxkZWZzPgo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2lfMzMwXzQ4OTYzIiB4PSIyNi41MTEyIiB5PSIyNi42MzY3IiB3aWR0aD0iOTIuOTc3OCIgaGVpZ2h0PSI5Mi45Nzc1IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIi8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQgZHg9IjIiIGR5PSIyIi8+CjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIuNSIvPgo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iLTEiIGszPSIxIi8+CjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwLjIxIDAiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9InNoYXBlIiByZXN1bHQ9ImVmZmVjdDFfaW5uZXJTaGFkb3dfMzMwXzQ4OTYzIi8+CjwvZmlsdGVyPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzMwXzQ4OTYzIiB4MT0iLTE1LjUiIHkxPSItMTIiIHgyPSIyMTYuNSIgeTI9IjE4NS41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM2NUNDRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDQ0Mzc0Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "source" + ], + [ + "spec", + "optical" + ], + [ + "spec", + "storage" + ], + [ + "spec", + "storageClass" + ] + ], + "plural": "VM Disks", + "singular": "VM Disk", + "tags": [ + "storage" + ], + "weight": 51 + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-vm-disk-application-kubevirt-vm-disk", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "vm-disk-" + }, + "secrets": { + "exclude": [], + "include": [] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "vm-instance-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:24Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "vm-instance-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "vm-instance", + "resourceVersion": "35904", + "uid": "498c4598-49c5-4c7e-940c-ea5164c65220" + }, + "spec": { + "application": { + "kind": "VMInstance", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"externalMethod\":{\"description\":\"Method to pass through traffic to the VM.\",\"type\":\"string\",\"default\":\"PortList\",\"enum\":[\"PortList\",\"WholeIP\"]},\"externalPorts\":{\"description\":\"Ports to forward from outside the cluster.\",\"type\":\"array\",\"default\":[22],\"items\":{\"type\":\"integer\"}},\"externalAllowICMP\":{\"description\":\"Whether to accept ICMP traffic to the VM in PortList mode (preserves ping and PMTU discovery). No effect in WholeIP mode. Default true so ping behaves as users expect even when port filtering is in effect.\",\"type\":\"boolean\",\"default\":true},\"runStrategy\":{\"description\":\"Requested running state of the VirtualMachineInstance\",\"type\":\"string\",\"default\":\"Always\",\"enum\":[\"Always\",\"Halted\",\"Manual\",\"RerunOnFailure\",\"Once\"]},\"instanceType\":{\"description\":\"Virtual Machine instance type.\",\"type\":\"string\",\"default\":\"u1.medium\",\"x-cozystack-options\":{\"source\":\"instancetype\"}},\"instanceProfile\":{\"description\":\"Virtual Machine preferences profile.\",\"type\":\"string\",\"default\":\"ubuntu\",\"x-cozystack-options\":{\"source\":\"instanceprofile\"}},\"disks\":{\"description\":\"List of disks to attach.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"bus\":{\"description\":\"Disk bus type (e.g. \\\"sata\\\").\",\"type\":\"string\"},\"name\":{\"description\":\"Disk name.\",\"type\":\"string\",\"x-cozystack-options\":{\"source\":\"vmdisk\"}}}}},\"networks\":{\"description\":\"Networks to attach the VM to.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"description\":\"Network attachment name.\",\"type\":\"string\",\"x-cozystack-options\":{\"source\":\"network\"}}}}},\"subnets\":{\"description\":\"Deprecated: use networks instead.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"description\":\"Network attachment name.\",\"type\":\"string\",\"x-cozystack-options\":{\"source\":\"network\"}}}}},\"gpus\":{\"description\":\"List of GPUs to attach (NVIDIA driver requires at least 4 GiB RAM).\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"name\":{\"description\":\"The name of the GPU resource to attach.\",\"type\":\"string\",\"x-cozystack-options\":{\"source\":\"gpu\"}}}}},\"cpuModel\":{\"description\":\"Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map\",\"type\":\"string\",\"default\":\"\"},\"resources\":{\"description\":\"Resource configuration for the virtual machine.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"Number of CPU cores allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Amount of memory allocated.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"sockets\":{\"description\":\"Number of CPU sockets (vCPU topology).\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"sshKeys\":{\"description\":\"List of SSH public keys for authentication.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}},\"cloudInit\":{\"description\":\"Cloud-init user data.\",\"type\":\"string\",\"default\":\"\"},\"cloudInitSeed\":{\"description\":\"Seed string to generate SMBIOS UUID for the VM.\",\"type\":\"string\",\"default\":\"\"}}}", + "plural": "vminstances", + "singular": "vminstance" + }, + "dashboard": { + "category": "IaaS", + "description": "Virtual machine instance", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxNDQiIGhlaWdodD0iMTQ0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODdfMzQ1NCkiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzY4N18zNDU0KSI+CjxwYXRoIGQ9Ik04OS41MDM5IDExMS43MDdINTQuNDk3QzU0LjE3MjcgMTExLjcwNyA1NC4wMTA4IDExMS4yMjEgNTQuMzM0OSAxMTEuMDU5TDU3LjI1MjIgMTA4Ljk1MkM2MC4zMzE0IDEwNi42ODMgNjEuOTUyMiAxMDIuNjMxIDYwLjk3OTcgOTguNzQxMkg4My4wMjFDODIuMDQ4NSAxMDIuNjMxIDgzLjY2OTMgMTA2LjY4MyA4Ni43NDg1IDEwOC45NTJMODkuNjY1OCAxMTEuMDU5Qzg5Ljk5IDExMS4yMjEgODkuODI3OSAxMTEuNzA3IDg5LjUwMzkgMTExLjcwN1oiIGZpbGw9IiNCMEI2QkIiLz4KPHBhdGggZD0iTTExMy4zMjggOTguNzQxSDMwLjY3MjVDMjcuNTkzMSA5OC43NDEgMjUgOTYuMTQ4IDI1IDkzLjA2ODdWMzMuMTAzMkMyNSAzMC4wMjM5IDI3LjU5MzEgMjcuNDMwNyAzMC42NzI1IDI3LjQzMDdIMTEzLjMyOEMxMTYuNDA3IDI3LjQzMDcgMTE5IDMwLjAyMzcgMTE5IDMzLjEwMzJWOTMuMDY4N0MxMTkgOTYuMTQ4IDExNi40MDcgOTguNzQxIDExMy4zMjggOTguNzQxWiIgZmlsbD0iI0U4RURFRSIvPgo8cGF0aCBkPSJNMTE5IDg0LjE1NDlIMjVWMzMuMTAzMkMyNSAzMC4wMjM5IDI3LjU5MzEgMjcuNDMwNyAzMC42NzI1IDI3LjQzMDdIMTEzLjMyOEMxMTYuNDA3IDI3LjQzMDcgMTE5IDMwLjAyMzcgMTE5IDMzLjEwMzJMMTE5IDg0LjE1NDlaIiBmaWxsPSIjMDBCM0ZGIi8+CjxwYXRoIGQ9Ik05MC42Mzc0IDExNi41NjlINTMuMzYxNkM1Mi4wNjUxIDExNi41NjkgNTAuOTMwNyAxMTUuNDM1IDUwLjkzMDcgMTE0LjEzOEM1MC45MzA3IDExMi44NDEgNTIuMDY1MSAxMTEuNzA3IDUzLjM2MTYgMTExLjcwN0g5MC42Mzc0QzkxLjkzMzkgMTExLjcwNyA5My4wNjg0IDExMi44NDEgOTMuMDY4NCAxMTQuMTM4QzkzLjA2ODQgMTE1LjQzNSA5MS45MzM5IDExNi41NjkgOTAuNjM3NCAxMTYuNTY5WiIgZmlsbD0iI0U4RURFRSIvPgo8L2c+CjxwYXRoIGQ9Ik03Mi41Mjc1IDUzLjgzNjdDNzIuNDQzMSA1My44MzUxIDcyLjM2MDUgNTMuODEyMiA3Mi4yODczIDUzLjc3MDFMNTYuNDY5OSA0NC43OTM0QzU2LjM5ODMgNDQuNzUxOSA1Ni4zMzg4IDQ0LjY5MjMgNTYuMjk3MyA0NC42MjA3QzU2LjI1NTkgNDQuNTQ5IDU2LjIzMzggNDQuNDY3OCA1Ni4yMzM0IDQ0LjM4NUM1Ni4yMzM0IDQ0LjIxNjkgNTYuMzI1OCA0NC4wNjE3IDU2LjQ2OTkgNDMuOTc4NUw3Mi4xOTEyIDM1LjA2MDlDNzIuMjYzNyAzNS4wMjEgNzIuMzQ1IDM1IDcyLjQyNzcgMzVDNzIuNTEwNSAzNSA3Mi41OTE4IDM1LjAyMSA3Mi42NjQzIDM1LjA2MDlMODguNDg3MiA0NC4wMzk1Qzg4LjU1OTEgNDQuMDgwMSA4OC42MTg4IDQ0LjEzOTIgODguNjYgNDQuMjEwN0M4OC43MDEzIDQ0LjI4MjIgODguNzIyNyA0NC4zNjM1IDg4LjcyMTkgNDQuNDQ2Qzg4LjcyMjUgNDQuNTI4NSA4OC43MDEgNDQuNjA5NyA4OC42NTk4IDQ0LjY4MTJDODguNjE4NSA0NC43NTI2IDg4LjU1ODkgNDQuODExOCA4OC40ODcyIDQ0Ljg1MjVMNzIuNzcxNCA1My43NjgzQzcyLjY5NzIgNTMuODExNCA3Mi42MTMzIDUzLjgzNDkgNzIuNTI3NSA1My44MzY3IiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBvcGFjaXR5PSIwLjciIGQ9Ik03MC4yNTUzIDc1LjY1MTdDNzAuMTcxIDc1LjY1MzUgNzAuMDg3OCA3NS42MzE3IDcwLjAxNTEgNzUuNTg4OEw1NC4yNDU4IDY2LjY0MTdDNTQuMTcxNSA2Ni42MDI0IDU0LjEwOTUgNjYuNTQzNiA1NC4wNjYxIDY2LjQ3MTZDNTQuMDIyOCA2Ni4zOTk3IDU0IDY2LjMxNzMgNTQgNjYuMjMzM1Y0OC4yNzhDNTQgNDguMTA4IDU0LjA5MjQgNDcuOTU0NiA1NC4yNDM5IDQ3Ljg2OTZDNTQuMzE3MiA0Ny44MjcxIDU0LjQwMDQgNDcuODA0NyA1NC40ODUxIDQ3LjgwNDdDNTQuNTY5NyA0Ny44MDQ3IDU0LjY1MjkgNDcuODI3MSA1NC43MjYyIDQ3Ljg2OTZMNzAuNDkzNyA1Ni44MTMxQzcwLjU2NDIgNTYuODU2NSA3MC42MjI1IDU2LjkxNyA3MC42NjMyIDU2Ljk4OTFDNzAuNzAzOSA1Ny4wNjEyIDcwLjcyNTcgNTcuMTQyNCA3MC43MjY1IDU3LjIyNTFWNzUuMTgwNUM3MC43MjU5IDc1LjI2MjggNzAuNzA0MiA3NS4zNDM2IDcwLjY2MzUgNzUuNDE1MUM3MC42MjI3IDc1LjQ4NjYgNzAuNTY0MiA3NS41NDY0IDcwLjQ5MzcgNzUuNTg4OEM3MC40MjA2IDc1LjYyOTEgNzAuMzM4NyA3NS42NTA3IDcwLjI1NTMgNzUuNjUxNyIgZmlsbD0id2hpdGUiLz4KPHBhdGggb3BhY2l0eT0iMC40IiBkPSJNNzQuNzE5OCA3NS42NTExQzc0LjYzMzMgNzUuNjUxMiA3NC41NDgyIDc1LjYyOTYgNzQuNDcyMiA3NS41ODgzQzc0LjQwMTYgNzUuNTQ2MSA3NC4zNDMyIDc1LjQ4NjIgNzQuMzAyNyA3NS40MTQ3Qzc0LjI2MjMgNzUuMzQzMSA3NC4yNDExIDc1LjI2MjIgNzQuMjQxMiA3NS4xOFY1Ny4zMzczQzc0LjI0MTIgNTcuMTcxIDc0LjMzMzYgNTcuMDE1OCA3NC40NzIyIDU2LjkyOUw5MC4yMzk3IDQ3Ljk4NTVDOTAuMzExOSA0Ny45NDM4IDkwLjM5MzggNDcuOTIxOSA5MC40NzcxIDQ3LjkyMTlDOTAuNTYwNSA0Ny45MjE5IDkwLjY0MjQgNDcuOTQzOCA5MC43MTQ2IDQ3Ljk4NTVDOTAuNzg3NiA0OC4wMjU1IDkwLjg0ODUgNDguMDg0MiA5MC44OTExIDQ4LjE1NTdDOTAuOTMzNyA0OC4yMjcyIDkwLjk1NjMgNDguMzA4OCA5MC45NTY2IDQ4LjM5MlY2Ni4yMzI4QzkwLjk1NyA2Ni4zMTY0IDkwLjkzNDcgNjYuMzk4NSA5MC44OTIxIDY2LjQ3MDRDOTAuODQ5NSA2Ni41NDI0IDkwLjc4ODEgNjYuNjAxNCA5MC43MTQ2IDY2LjY0MTFMNzQuOTUyNiA3NS41ODgzQzc0Ljg4MjUgNzUuNjMwNyA3NC44MDE4IDc1LjY1MjUgNzQuNzE5OCA3NS42NTExIiBmaWxsPSJ3aGl0ZSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzY4N18zNDU0IiB4MT0iMTYxIiB5MT0iMTgwIiB4Mj0iMy41OTI4NGUtMDciIHkyPSI0Ljk5OTk4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNTk1NjU2Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDBfNjg3XzM0NTQiPgo8cmVjdCB3aWR0aD0iOTQiIGhlaWdodD0iOTQiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNSAyNSkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "external" + ], + [ + "spec", + "externalMethod" + ], + [ + "spec", + "externalPorts" + ], + [ + "spec", + "externalAllowICMP" + ], + [ + "spec", + "runStrategy" + ], + [ + "spec", + "instanceType" + ], + [ + "spec", + "instanceProfile" + ], + [ + "spec", + "disks" + ], + [ + "spec", + "networks" + ], + [ + "spec", + "subnets" + ], + [ + "spec", + "gpus" + ], + [ + "spec", + "cpuModel" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "sshKeys" + ], + [ + "spec", + "cloudInit" + ], + [ + "spec", + "cloudInitSeed" + ] + ], + "plural": "VM Instances", + "singular": "VM Instance", + "tags": [ + "compute" + ], + "weight": 50 + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-vm-instance-application-kubevirt-vm-instance", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "vm-instance-" + }, + "secrets": { + "exclude": [], + "include": [] + }, + "services": { + "exclude": [], + "include": [ + { + "matchLabels": { + "apps.cozystack.io/user-service": "true" + } + } + ] + } + } + }, + { + "apiVersion": "cozystack.io/v1alpha1", + "kind": "ApplicationDefinition", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "vpn-rd", + "meta.helm.sh/release-namespace": "cozy-system" + }, + "creationTimestamp": "2026-08-12T10:13:25Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "vpn-rd", + "helm.toolkit.fluxcd.io/namespace": "cozy-system" + }, + "name": "vpn", + "resourceVersion": "35951", + "uid": "1ead114a-9ae8-4f43-8b33-8563dc90fd0f" + }, + "spec": { + "application": { + "kind": "VPN", + "openAPISchema": "{\"title\":\"Chart Values\",\"type\":\"object\",\"properties\":{\"replicas\":{\"description\":\"Number of VPN server replicas.\",\"type\":\"integer\",\"default\":2},\"resources\":{\"description\":\"Explicit CPU and memory configuration for each VPN server replica. When omitted, the preset defined in `resourcesPreset` is applied.\",\"type\":\"object\",\"default\":{},\"properties\":{\"cpu\":{\"description\":\"CPU available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true},\"memory\":{\"description\":\"Memory (RAM) available to each replica.\",\"pattern\":\"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"string\"}],\"x-kubernetes-int-or-string\":true}}},\"resourcesPreset\":{\"description\":\"Default sizing preset used when `resources` is omitted.\",\"type\":\"string\",\"default\":\"t1.nano\",\"enum\":[\"t1.nano\",\"t1.micro\",\"t1.small\",\"t1.medium\",\"t1.large\",\"t1.xlarge\",\"t1.2xlarge\",\"t1.4xlarge\",\"c1.nano\",\"c1.micro\",\"c1.small\",\"c1.medium\",\"c1.large\",\"c1.xlarge\",\"c1.2xlarge\",\"c1.4xlarge\",\"s1.nano\",\"s1.micro\",\"s1.small\",\"s1.medium\",\"s1.large\",\"s1.xlarge\",\"s1.2xlarge\",\"s1.4xlarge\",\"u1.nano\",\"u1.micro\",\"u1.small\",\"u1.medium\",\"u1.large\",\"u1.xlarge\",\"u1.2xlarge\",\"u1.4xlarge\",\"m1.nano\",\"m1.micro\",\"m1.small\",\"m1.medium\",\"m1.large\",\"m1.xlarge\",\"m1.2xlarge\",\"m1.4xlarge\",\"nano\",\"micro\",\"small\",\"medium\",\"large\",\"xlarge\",\"2xlarge\"]},\"external\":{\"description\":\"Enable external access from outside the cluster.\",\"type\":\"boolean\",\"default\":false},\"host\":{\"description\":\"Host used to substitute into generated URLs.\",\"type\":\"string\",\"default\":\"\"},\"users\":{\"description\":\"Users configuration map.\",\"type\":\"object\",\"default\":{},\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"password\":{\"description\":\"Password for the user (autogenerated if not provided).\",\"type\":\"string\"}}}},\"externalIPs\":{\"description\":\"List of externalIPs for service. Optional. If not specified, will use LoadBalancer service by default.\",\"type\":\"array\",\"default\":[],\"items\":{\"type\":\"string\"}}}}", + "plural": "vpns", + "singular": "vpn" + }, + "dashboard": { + "category": "NaaS", + "description": "Managed VPN service", + "icon": "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xNDMuOTkyIDMwLjM2OTdDMTQzLjk5MiAyOS4yNTU2IDE0My45OTIgMjguMTUxNyAxNDMuOTkyIDI3LjA0NzdDMTQzLjk0NSAyNC42Mjg3IDE0My43MTcgMjIuMjE2NiAxNDMuMzA5IDE5LjgzMTZDMTQyLjkxMiAxNy40NDczIDE0Mi4xNTcgMTUuMTM2NSAxNDEuMDcyIDEyLjk3NjlDMTM5Ljk3IDEwLjgxOCAxMzguNTM0IDguODQ2NjUgMTM2LjgxNyA3LjEzNTc3TDEzMC45OTcgMi44OTA0NEMxMjguODM3IDEuODAyODkgMTI2LjUyNyAxLjA0MTg5IDEyNC4xNDQgMC42MzIyODNDMTIxLjc1NiAwLjIzNDgwOCAxMTkuMzQgMC4wMjM0MTEzIDExNi45MTkgMEMxMTUuODE1IDAgMjguMTQ2MSAwIDI3LjAzMjMgMEMyNC42MDQ3IDAuMDI0MjIxMSAyMi4xODI2IDAuMjM1NjA5IDE5Ljc4NzYgMC42MzIyODNDMTcuNDEyOCAxLjAzODUxIDE1LjExMjYgMS43OTk3NCAxMi45NjQzIDIuODkwNDRDMTAuODEzIDMuOTk1MTkgOC44NDYyNSA1LjQyNzM2IDcuMTM0MzYgNy4xMzU3N0M1LjQxNzY4IDguODQ0NCAzLjk4NDggMTAuODE2MyAyLjg4OTg3IDEyLjk3NjlDMS44MDA4NiAxNS4xMzYgMS4wNDMxMyAxNy40NDY4IDAuNjQyMTkzIDE5LjgzMTZDMC4yNDM0OTcgMjIuMjE2OSAwLjAyODc5OTggMjQuNjI5NCAwIDI3LjA0NzdDMCAyOC4xNTE3IDAgMTE1LjgzOCAwIDExNi45NTJDMC4wMjYxNzU1IDExOS4zODQgMC4yNDA4ODQgMTIxLjgxIDAuNjQyMTkzIDEyNC4yMDlDMS4wNDA0NCAxMjYuNTk0IDEuNzk4MjkgMTI4LjkwNSAyLjg4OTg3IDEzMS4wNjNDMy45ODUxNSAxMzMuMjE4IDUuNDE4MSAxMzUuMTgzIDcuMTM0MzYgMTM2Ljg4NEM4Ljg0MDk1IDEzOC41OTkgMTAuODA4NyAxNDAuMDMyIDEyLjk2NDMgMTQxLjEzQzE1LjExNDcgMTQyLjIwOSAxNy40MTQ2IDE0Mi45NiAxOS43ODc2IDE0My4zNThDMjIuMTczMSAxNDMuNzUxIDI0LjU4NDcgMTQzLjk2NiAyNy4wMDIyIDE0NEMyOC4xMTYgMTQ0IDExNS43ODUgMTQ0IDExNi44ODkgMTQ0QzExOS4zMDMgMTQzLjk2NyAxMjEuNzEyIDE0My43NTIgMTI0LjA5NCAxNDMuMzU4QzEyNi40ODUgMTQyLjk0NiAxMjguODAxIDE0Mi4xODIgMTMwLjk2NyAxNDEuMDg5QzEzMy4xMjEgMTM5Ljk5NCAxMzUuMDg2IDEzOC41NjEgMTM2Ljc4NyAxMzYuODQ0QzEzOC41MDMgMTM1LjE0IDEzOS45MzkgMTMzLjE3NiAxNDEuMDQyIDEzMS4wMjNDMTQyLjEzNyAxMjguODc5IDE0Mi45MDEgMTI2LjU4MSAxNDMuMzA5IDEyNC4yMDlDMTQzLjcxIDEyMS44MjMgMTQzLjkzMiAxMTkuNDExIDE0My45NzIgMTE2Ljk5MkMxNDMuOTkyIDExNS44MzggMTQ0LjAxMiAzMS42NzQ0IDE0My45OTIgMzAuMzY5N1oiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl82ODFfMjgxOCkiLz4KPHBhdGggZD0iTTExNS45NTUgNjcuNDIzMUMxMTQuOTQxIDU3LjgyMzQgMTEwLjcwMSA0OC44NTE4IDEwMy45MjggNDEuOTc1MkM5Ny4xNTQ5IDM1LjA5ODYgODguMjQ5NSAzMC43MjM5IDc4LjY2OCAyOS41NjY0VjQ2Ljc3ODZDODQuNDg4NyA0Ny45MTI3IDg5LjczMzggNTEuMDM2MiA5My41MDQ5IDU1LjYxMzdDOTcuMjc2IDYwLjE5MTIgOTkuMzM4MSA2NS45Mzc5IDk5LjMzODEgNzEuODY5MkM5OS4zMzgxIDc3LjgwMDQgOTcuMjc2IDgzLjU0NzEgOTMuNTA0OSA4OC4xMjQ2Qzg5LjczMzggOTIuNzAyMiA4NC40ODg3IDk1LjgyNTYgNzguNjY4IDk2Ljk1OThWMTE0LjIyMkM4OS43ODAxIDExMi44NzcgOTkuOTE3OCAxMDcuMjE1IDEwNi44OTQgOTguNDYwMUMxMTMuODY5IDg5LjcwNDggMTE3LjEyNCA3OC41NTczIDExNS45NTUgNjcuNDIzMVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yOC4wMTU1IDc2LjM2NTRDMjkuMDMxMSA4NS45NjQ0IDMzLjI3MTggOTQuOTM1MSA0MC4wNDQ3IDEwMS44MTFDNDYuODE3NSAxMDguNjg4IDU1LjcyMiAxMTMuMDYzIDY1LjMwMjggMTE0LjIyMlYyOS41NjY0QzU0LjE5MDcgMzAuOTExOSA0NC4wNTMgMzYuNTczMSAzNy4wNzcyIDQ1LjMyODRDMzAuMTAxMyA1NC4wODM3IDI2Ljg0NjcgNjUuMjMxMiAyOC4wMTU1IDc2LjM2NTRaIiBmaWxsPSIjNUJCMTkzIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfNjgxXzI4MTgiIHgxPSIxMzIuNSIgeTE9IjEzMi41IiB4Mj0iLTI0IiB5Mj0iLTE5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMxODM3MjkiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNDU5RDc1Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==", + "keysOrder": [ + [ + "apiVersion" + ], + [ + "appVersion" + ], + [ + "kind" + ], + [ + "metadata" + ], + [ + "metadata", + "name" + ], + [ + "spec", + "replicas" + ], + [ + "spec", + "resources" + ], + [ + "spec", + "resourcesPreset" + ], + [ + "spec", + "external" + ], + [ + "spec", + "host" + ], + [ + "spec", + "users" + ], + [ + "spec", + "externalIPs" + ] + ], + "plural": "VPN", + "singular": "VPN", + "tags": [ + "network" + ] + }, + "release": { + "chartRef": { + "kind": "ExternalArtifact", + "name": "cozystack-vpn-application-default-vpn", + "namespace": "cozy-system" + }, + "labels": { + "sharding.fluxcd.io/key": "tenants" + }, + "prefix": "vpn-" + }, + "secrets": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "vpn-{{ .name }}-urls" + ] + } + ] + }, + "services": { + "exclude": [], + "include": [ + { + "resourceNames": [ + "vpn-{{ .name }}-vpn" + ] + } + ] + } + } + } + ], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/backupclasses.json b/demo-src/overlay/apps/console/src/demo/fixtures/backupclasses.json new file mode 100644 index 00000000..4e884187 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/backupclasses.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "backups.cozystack.io/v1alpha1", "kind": "BackupClass", "metadata": {"creationTimestamp": "2026-08-12T10:14:33Z", "generation": 1, "labels": {"app.kubernetes.io/managed-by": "Helm", "helm.toolkit.fluxcd.io/name": "backupstrategy-controller", "helm.toolkit.fluxcd.io/namespace": "cozy-backup-controller"}, "name": "cozy-default", "resourceVersion": "38140", "uid": "2cf068c8-bbcc-4511-b829-87dfb2edefd8"}, "spec": {"strategies": [{"application": {"apiGroup": "apps.cozystack.io", "kind": "Postgres"}, "strategyRef": {"apiGroup": "strategy.backups.cozystack.io", "kind": "CNPG", "name": "cozy-default-cnpg"}}, {"application": {"apiGroup": "apps.cozystack.io", "kind": "MariaDB"}, "strategyRef": {"apiGroup": "strategy.backups.cozystack.io", "kind": "MariaDB", "name": "cozy-default-mariadb"}}, {"application": {"apiGroup": "apps.cozystack.io", "kind": "Etcd"}, "strategyRef": {"apiGroup": "strategy.backups.cozystack.io", "kind": "Etcd", "name": "cozy-default-etcd"}}, {"application": {"apiGroup": "apps.cozystack.io", "kind": "ClickHouse"}, "strategyRef": {"apiGroup": "strategy.backups.cozystack.io", "kind": "Altinity", "name": "cozy-default-altinity"}}, {"application": {"apiGroup": "apps.cozystack.io", "kind": "VMInstance"}, "strategyRef": {"apiGroup": "strategy.backups.cozystack.io", "kind": "Velero", "name": "cozy-default-velero-vminstance"}}, {"application": {"apiGroup": "apps.cozystack.io", "kind": "VMDisk"}, "strategyRef": {"apiGroup": "strategy.backups.cozystack.io", "kind": "Velero", "name": "cozy-default-velero-vmdisk"}}]}}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/bk-backupjobs.json b/demo-src/overlay/apps/console/src/demo/fixtures/bk-backupjobs.json new file mode 100644 index 00000000..6da8d279 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/bk-backupjobs.json @@ -0,0 +1,8 @@ +{ + "apiVersion": "v1", + "items": [], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/bk-backups.json b/demo-src/overlay/apps/console/src/demo/fixtures/bk-backups.json new file mode 100644 index 00000000..6da8d279 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/bk-backups.json @@ -0,0 +1,8 @@ +{ + "apiVersion": "v1", + "items": [], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/bk-plans.json b/demo-src/overlay/apps/console/src/demo/fixtures/bk-plans.json new file mode 100644 index 00000000..6da8d279 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/bk-plans.json @@ -0,0 +1,8 @@ +{ + "apiVersion": "v1", + "items": [], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/bk-restorejobs.json b/demo-src/overlay/apps/console/src/demo/fixtures/bk-restorejobs.json new file mode 100644 index 00000000..6da8d279 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/bk-restorejobs.json @@ -0,0 +1,8 @@ +{ + "apiVersion": "v1", + "items": [], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/crds/backupclasses.backups.cozystack.io.json b/demo-src/overlay/apps/console/src/demo/fixtures/crds/backupclasses.backups.cozystack.io.json new file mode 100644 index 00000000..a4fa0614 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/crds/backupclasses.backups.cozystack.io.json @@ -0,0 +1 @@ +{"apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", "metadata": {"creationTimestamp": "2026-08-12T09:57:04Z", "generation": 1, "labels": {"app.kubernetes.io/managed-by": "Helm", "helm.toolkit.fluxcd.io/name": "backup-controller", "helm.toolkit.fluxcd.io/namespace": "cozy-backup-controller"}, "name": "backupclasses.backups.cozystack.io", "resourceVersion": "8194", "uid": "66aeacc9-c9ca-447c-8a2d-211a2077a214"}, "spec": {"conversion": {"strategy": "None"}, "group": "backups.cozystack.io", "names": {"kind": "BackupClass", "listKind": "BackupClassList", "plural": "backupclasses", "singular": "backupclass"}, "scope": "Cluster", "versions": [{"name": "v1alpha1", "schema": {"openAPIV3Schema": {"description": "BackupClass defines a class of backup configurations that can be referenced\nby BackupJob and Plan resources. It encapsulates strategy and storage configuration\nper application type.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "BackupClassSpec defines the desired state of a BackupClass.", "properties": {"strategies": {"description": "Strategies is a list of backup strategies, each matching a specific application type.", "items": {"description": "BackupClassStrategy defines a backup strategy for a specific application type.", "properties": {"application": {"description": "Application specifies which application types this strategy applies to.", "properties": {"apiGroup": {"description": "APIGroup is the API group of the application.\nIf not specified, defaults to \"apps.cozystack.io\".", "type": "string"}, "kind": {"description": "Kind is the kind of the application (e.g., VirtualMachine, MariaDB).", "type": "string"}}, "required": ["kind"], "type": "object"}, "parameters": {"additionalProperties": {"type": "string"}, "description": "Parameters holds strategy-specific and storage-specific parameters.\nCommon parameters include:\n- backupStorageLocationName: Name of Velero BackupStorageLocation\n\nSECURITY: parameter values MUST NOT contain credentials, access keys,\npasswords, or any other secret material. The CNPG driver persists this\nmap verbatim into Backup.status.underlyingResources at backup time so\nthat restore-time template rendering reproduces the exact values used\nat backup time; that status field is tenant-readable and replicated\nthrough every Backup artifact derived from a strategy. Route credentials\nthrough the Secret references on the strategy template instead\n(e.g. CNPG's barmanObjectStore.s3Credentials.secretRef and endpointCA).", "type": "object"}, "strategyRef": {"description": "StrategyRef references the driver-specific BackupStrategy (e.g., Velero).", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object", "x-kubernetes-map-type": "atomic"}}, "required": ["application", "strategyRef"], "type": "object"}, "type": "array"}}, "required": ["strategies"], "type": "object"}, "status": {"description": "BackupClassStatus defines the observed state of a BackupClass.", "properties": {"conditions": {"description": "Conditions represents the latest available observations of a BackupClass's state.", "items": {"description": "Condition contains details for one aspect of the current state of this API Resource.", "properties": {"lastTransitionTime": {"description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", "format": "date-time", "type": "string"}, "message": {"description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", "maxLength": 32768, "type": "string"}, "observedGeneration": {"description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", "format": "int64", "minimum": 0, "type": "integer"}, "reason": {"description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", "maxLength": 1024, "minLength": 1, "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string"}, "status": {"description": "status of the condition, one of True, False, Unknown.", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "type of condition in CamelCase or in foo.example.com/CamelCase.", "maxLength": 316, "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "type": "string"}}, "required": ["lastTransitionTime", "message", "reason", "status", "type"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"}}, "served": true, "storage": true, "subresources": {"status": {}}}]}, "status": {"acceptedNames": {"kind": "BackupClass", "listKind": "BackupClassList", "plural": "backupclasses", "singular": "backupclass"}, "conditions": [{"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "no conflicts found", "reason": "NoConflicts", "status": "True", "type": "NamesAccepted"}, {"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "the initial names have been accepted", "reason": "InitialNamesAccepted", "status": "True", "type": "Established"}], "storedVersions": ["v1alpha1"]}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/crds/backupjobs.backups.cozystack.io.json b/demo-src/overlay/apps/console/src/demo/fixtures/crds/backupjobs.backups.cozystack.io.json new file mode 100644 index 00000000..bb51fece --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/crds/backupjobs.backups.cozystack.io.json @@ -0,0 +1 @@ +{"apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", "metadata": {"creationTimestamp": "2026-08-12T09:57:04Z", "generation": 1, "labels": {"app.kubernetes.io/managed-by": "Helm", "helm.toolkit.fluxcd.io/name": "backup-controller", "helm.toolkit.fluxcd.io/namespace": "cozy-backup-controller"}, "name": "backupjobs.backups.cozystack.io", "resourceVersion": "8200", "uid": "d1f136f4-b039-4f10-989f-5f5bbf9539a6"}, "spec": {"conversion": {"strategy": "None"}, "group": "backups.cozystack.io", "names": {"kind": "BackupJob", "listKind": "BackupJobList", "plural": "backupjobs", "singular": "backupjob"}, "scope": "Namespaced", "versions": [{"additionalPrinterColumns": [{"jsonPath": ".status.phase", "name": "Phase", "type": "string"}], "name": "v1alpha1", "schema": {"openAPIV3Schema": {"description": "BackupJob represents a single execution of a backup.\nIt is typically created by a Plan controller when a schedule fires.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "BackupJobSpec describes the execution of a single backup operation.", "properties": {"applicationRef": {"description": "ApplicationRef holds a reference to the managed application whose state\nis being backed up.\nIf apiGroup is not specified, it defaults to \"apps.cozystack.io\".", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object", "x-kubernetes-map-type": "atomic"}, "backupClassName": {"description": "BackupClassName references a BackupClass that contains strategy and storage configuration.\nThe BackupClass will be resolved to determine the appropriate strategy and storage\nbased on the ApplicationRef.\nThis field is immutable once the BackupJob is created.", "minLength": 1, "type": "string", "x-kubernetes-validations": [{"message": "backupClassName is immutable", "rule": "self == oldSelf"}]}, "planRef": {"description": "PlanRef refers to the Plan that requested this backup run.\nFor ad-hoc/manual backups, this can be omitted.", "properties": {"name": {"default": "", "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "type": "object", "x-kubernetes-map-type": "atomic"}}, "required": ["applicationRef", "backupClassName"], "type": "object"}, "status": {"description": "BackupJobStatus represents the observed state of a BackupJob.", "properties": {"backupRef": {"description": "BackupRef refers to the Backup object created by this run, if any.", "properties": {"name": {"default": "", "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "type": "object", "x-kubernetes-map-type": "atomic"}, "completedAt": {"description": "CompletedAt is the time at which the backup run completed (successfully\nor otherwise).", "format": "date-time", "type": "string"}, "conditions": {"description": "Conditions represents the latest available observations of a BackupJob's state.", "items": {"description": "Condition contains details for one aspect of the current state of this API Resource.", "properties": {"lastTransitionTime": {"description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", "format": "date-time", "type": "string"}, "message": {"description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", "maxLength": 32768, "type": "string"}, "observedGeneration": {"description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", "format": "int64", "minimum": 0, "type": "integer"}, "reason": {"description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", "maxLength": 1024, "minLength": 1, "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string"}, "status": {"description": "status of the condition, one of True, False, Unknown.", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "type of condition in CamelCase or in foo.example.com/CamelCase.", "maxLength": 316, "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "type": "string"}}, "required": ["lastTransitionTime", "message", "reason", "status", "type"], "type": "object"}, "type": "array"}, "message": {"description": "Message is a human-readable message indicating details about why the\nbackup run is in its current phase, if any.", "type": "string"}, "phase": {"description": "Phase is a high-level summary of the run's state.\nTypical values: Pending, Running, Succeeded, Failed.", "type": "string"}, "startedAt": {"description": "StartedAt is the time at which the backup run started.", "format": "date-time", "type": "string"}}, "type": "object"}}, "type": "object"}}, "selectableFields": [{"jsonPath": ".spec.applicationRef.apiGroup"}, {"jsonPath": ".spec.applicationRef.kind"}, {"jsonPath": ".spec.applicationRef.name"}], "served": true, "storage": true, "subresources": {"status": {}}}]}, "status": {"acceptedNames": {"kind": "BackupJob", "listKind": "BackupJobList", "plural": "backupjobs", "singular": "backupjob"}, "conditions": [{"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "no conflicts found", "reason": "NoConflicts", "status": "True", "type": "NamesAccepted"}, {"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "the initial names have been accepted", "reason": "InitialNamesAccepted", "status": "True", "type": "Established"}], "storedVersions": ["v1alpha1"]}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/crds/backups.backups.cozystack.io.json b/demo-src/overlay/apps/console/src/demo/fixtures/crds/backups.backups.cozystack.io.json new file mode 100644 index 00000000..21492174 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/crds/backups.backups.cozystack.io.json @@ -0,0 +1 @@ +{"apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", "metadata": {"creationTimestamp": "2026-08-12T09:57:04Z", "generation": 1, "labels": {"app.kubernetes.io/managed-by": "Helm", "helm.toolkit.fluxcd.io/name": "backup-controller", "helm.toolkit.fluxcd.io/namespace": "cozy-backup-controller"}, "name": "backups.backups.cozystack.io", "resourceVersion": "8203", "uid": "1a7943ac-5686-47e3-9dd7-795d31111803"}, "spec": {"conversion": {"strategy": "None"}, "group": "backups.cozystack.io", "names": {"kind": "Backup", "listKind": "BackupList", "plural": "backups", "singular": "backup"}, "scope": "Namespaced", "versions": [{"name": "v1alpha1", "schema": {"openAPIV3Schema": {"description": "Backup represents a single backup artifact for a given application.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "BackupSpec describes an immutable backup artifact produced by a BackupJob.", "properties": {"applicationRef": {"description": "ApplicationRef refers to the application that was backed up.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object", "x-kubernetes-map-type": "atomic"}, "driverMetadata": {"additionalProperties": {"type": "string"}, "description": "DriverMetadata holds driver-specific, opaque metadata associated with\nthis backup (for example snapshot IDs, schema versions, etc.).\nThis data is not interpreted by the core backup controllers.", "type": "object"}, "planRef": {"description": "PlanRef refers to the Plan that produced this backup, if any.\nFor manually triggered backups, this can be omitted.", "properties": {"name": {"default": "", "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "type": "object", "x-kubernetes-map-type": "atomic"}, "strategyRef": {"description": "StrategyRef refers to the driver-specific BackupStrategy that was used\nto create this backup. This allows the driver to later perform restores.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object", "x-kubernetes-map-type": "atomic"}, "takenAt": {"description": "TakenAt is the time at which the backup was taken (as reported by the\ndriver). It may differ slightly from metadata.creationTimestamp.", "format": "date-time", "type": "string"}}, "required": ["applicationRef", "strategyRef", "takenAt"], "type": "object"}, "status": {"description": "BackupStatus represents the observed state of a Backup.", "properties": {"artifact": {"description": "Artifact describes the stored backup object, if available.", "properties": {"checksum": {"description": "Checksum is the checksum of the artifact, if computed.\nFor example: \"sha256:\".", "type": "string"}, "sizeBytes": {"description": "SizeBytes is the size of the artifact in bytes, if known.", "format": "int64", "type": "integer"}, "uri": {"description": "URI is a driver-/storage-specific URI pointing to the backup artifact.\nFor example: s3://bucket/prefix/file.tar.gz", "type": "string"}}, "required": ["uri"], "type": "object"}, "conditions": {"description": "Conditions represents the latest available observations of a Backup's state.", "items": {"description": "Condition contains details for one aspect of the current state of this API Resource.", "properties": {"lastTransitionTime": {"description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", "format": "date-time", "type": "string"}, "message": {"description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", "maxLength": 32768, "type": "string"}, "observedGeneration": {"description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", "format": "int64", "minimum": 0, "type": "integer"}, "reason": {"description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", "maxLength": 1024, "minLength": 1, "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string"}, "status": {"description": "status of the condition, one of True, False, Unknown.", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "type of condition in CamelCase or in foo.example.com/CamelCase.", "maxLength": 316, "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "type": "string"}}, "required": ["lastTransitionTime", "message", "reason", "status", "type"], "type": "object"}, "type": "array"}, "phase": {"description": "Phase is a simple, high-level summary of the backup's state.\nTypical values are: Pending, Ready, Failed.", "type": "string"}, "underlyingResources": {"description": "UnderlyingResources holds application-specific resource metadata discovered\nduring backup (e.g., VM disks, network configuration). The payload is a\nself-typed JSON object carrying an inlined TypeMeta (kind/apiVersion) so\nthe consuming controller can dispatch on the application kind.", "type": "object", "x-kubernetes-preserve-unknown-fields": true}}, "type": "object"}}, "type": "object"}}, "selectableFields": [{"jsonPath": ".spec.applicationRef.apiGroup"}, {"jsonPath": ".spec.applicationRef.kind"}, {"jsonPath": ".spec.applicationRef.name"}], "served": true, "storage": true}]}, "status": {"acceptedNames": {"kind": "Backup", "listKind": "BackupList", "plural": "backups", "singular": "backup"}, "conditions": [{"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "no conflicts found", "reason": "NoConflicts", "status": "True", "type": "NamesAccepted"}, {"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "the initial names have been accepted", "reason": "InitialNamesAccepted", "status": "True", "type": "Established"}], "storedVersions": ["v1alpha1"]}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/crds/plans.backups.cozystack.io.json b/demo-src/overlay/apps/console/src/demo/fixtures/crds/plans.backups.cozystack.io.json new file mode 100644 index 00000000..5f8d9630 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/crds/plans.backups.cozystack.io.json @@ -0,0 +1 @@ +{"apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", "metadata": {"creationTimestamp": "2026-08-12T09:57:04Z", "generation": 1, "labels": {"app.kubernetes.io/managed-by": "Helm", "helm.toolkit.fluxcd.io/name": "backup-controller", "helm.toolkit.fluxcd.io/namespace": "cozy-backup-controller"}, "name": "plans.backups.cozystack.io", "resourceVersion": "8197", "uid": "703c0c5e-9481-4d75-a2c1-862288e933f1"}, "spec": {"conversion": {"strategy": "None"}, "group": "backups.cozystack.io", "names": {"kind": "Plan", "listKind": "PlanList", "plural": "plans", "singular": "plan"}, "scope": "Namespaced", "versions": [{"name": "v1alpha1", "schema": {"openAPIV3Schema": {"description": "Plan describes the schedule, method and storage location for the\nbackup of a given target application.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "PlanSpec references the storage, the strategy, the application to be\nbacked up and specifies the timetable on which the backups will run.", "properties": {"applicationRef": {"description": "ApplicationRef holds a reference to the managed application,\nwhose state and configuration must be backed up.\nIf apiGroup is not specified, it defaults to \"apps.cozystack.io\".", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object", "x-kubernetes-map-type": "atomic"}, "backupClassName": {"description": "BackupClassName references a BackupClass that contains strategy and storage configuration.\nThe BackupClass will be resolved to determine the appropriate strategy and storage\nbased on the ApplicationRef.", "type": "string"}, "schedule": {"description": "Schedule specifies when backup copies are created.", "properties": {"cron": {"description": "Cron contains the cron spec for scheduling backups. Must be\nspecified if the schedule type is `cron`. Since only `cron` is\nsupported, omitting this field is not allowed.", "type": "string"}, "type": {"description": "Type is the type of schedule specification. Supported values are\n[`cron`]. If omitted, defaults to `cron`.", "type": "string"}}, "type": "object"}}, "required": ["applicationRef", "backupClassName", "schedule"], "type": "object"}, "status": {"properties": {"conditions": {"items": {"description": "Condition contains details for one aspect of the current state of this API Resource.", "properties": {"lastTransitionTime": {"description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", "format": "date-time", "type": "string"}, "message": {"description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", "maxLength": 32768, "type": "string"}, "observedGeneration": {"description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", "format": "int64", "minimum": 0, "type": "integer"}, "reason": {"description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", "maxLength": 1024, "minLength": 1, "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string"}, "status": {"description": "status of the condition, one of True, False, Unknown.", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "type of condition in CamelCase or in foo.example.com/CamelCase.", "maxLength": 316, "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "type": "string"}}, "required": ["lastTransitionTime", "message", "reason", "status", "type"], "type": "object"}, "type": "array"}}, "type": "object"}}, "type": "object"}}, "selectableFields": [{"jsonPath": ".spec.applicationRef.apiGroup"}, {"jsonPath": ".spec.applicationRef.kind"}, {"jsonPath": ".spec.applicationRef.name"}], "served": true, "storage": true, "subresources": {"status": {}}}]}, "status": {"acceptedNames": {"kind": "Plan", "listKind": "PlanList", "plural": "plans", "singular": "plan"}, "conditions": [{"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "no conflicts found", "reason": "NoConflicts", "status": "True", "type": "NamesAccepted"}, {"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "the initial names have been accepted", "reason": "InitialNamesAccepted", "status": "True", "type": "Established"}], "storedVersions": ["v1alpha1"]}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/crds/restorejobs.backups.cozystack.io.json b/demo-src/overlay/apps/console/src/demo/fixtures/crds/restorejobs.backups.cozystack.io.json new file mode 100644 index 00000000..96408b20 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/crds/restorejobs.backups.cozystack.io.json @@ -0,0 +1 @@ +{"apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", "metadata": {"creationTimestamp": "2026-08-12T09:57:04Z", "generation": 1, "labels": {"app.kubernetes.io/managed-by": "Helm", "helm.toolkit.fluxcd.io/name": "backup-controller", "helm.toolkit.fluxcd.io/namespace": "cozy-backup-controller"}, "name": "restorejobs.backups.cozystack.io", "resourceVersion": "8190", "uid": "75f1b3a1-aaca-4589-965f-c9f13b6b906b"}, "spec": {"conversion": {"strategy": "None"}, "group": "backups.cozystack.io", "names": {"kind": "RestoreJob", "listKind": "RestoreJobList", "plural": "restorejobs", "singular": "restorejob"}, "scope": "Namespaced", "versions": [{"additionalPrinterColumns": [{"jsonPath": ".status.phase", "name": "Phase", "type": "string"}], "name": "v1alpha1", "schema": {"openAPIV3Schema": {"description": "RestoreJob represents a single execution of a restore from a Backup.", "properties": {"apiVersion": {"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string"}, "kind": {"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string"}, "metadata": {"type": "object"}, "spec": {"description": "RestoreJobSpec describes the execution of a single restore operation.", "properties": {"backupRef": {"description": "BackupRef refers to the Backup that should be restored.", "properties": {"name": {"default": "", "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string"}}, "type": "object", "x-kubernetes-map-type": "atomic"}, "options": {"description": "Options is a driver-specific blob of restore options, typed based on\ntargetApplicationRef and the current controller implementation.", "type": "object", "x-kubernetes-preserve-unknown-fields": true}, "targetApplicationRef": {"description": "TargetApplicationRef refers to the application into which the backup\nshould be restored. If omitted, the driver SHOULD restore into the same\napplication as referenced by backup.spec.applicationRef.", "properties": {"apiGroup": {"description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required.", "type": "string"}, "kind": {"description": "Kind is the type of resource being referenced", "type": "string"}, "name": {"description": "Name is the name of resource being referenced", "type": "string"}}, "required": ["kind", "name"], "type": "object", "x-kubernetes-map-type": "atomic"}}, "required": ["backupRef"], "type": "object"}, "status": {"description": "RestoreJobStatus represents the observed state of a RestoreJob.", "properties": {"completedAt": {"description": "CompletedAt is the time at which the restore run completed (successfully\nor otherwise).", "format": "date-time", "type": "string"}, "conditions": {"description": "Conditions represents the latest available observations of a RestoreJob's state.", "items": {"description": "Condition contains details for one aspect of the current state of this API Resource.", "properties": {"lastTransitionTime": {"description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", "format": "date-time", "type": "string"}, "message": {"description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", "maxLength": 32768, "type": "string"}, "observedGeneration": {"description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", "format": "int64", "minimum": 0, "type": "integer"}, "reason": {"description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", "maxLength": 1024, "minLength": 1, "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string"}, "status": {"description": "status of the condition, one of True, False, Unknown.", "enum": ["True", "False", "Unknown"], "type": "string"}, "type": {"description": "type of condition in CamelCase or in foo.example.com/CamelCase.", "maxLength": 316, "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "type": "string"}}, "required": ["lastTransitionTime", "message", "reason", "status", "type"], "type": "object"}, "type": "array"}, "message": {"description": "Message is a human-readable message indicating details about why the\nrestore run is in its current phase, if any.", "type": "string"}, "phase": {"description": "Phase is a high-level summary of the run's state.\nTypical values: Pending, Running, Succeeded, Failed.", "type": "string"}, "startedAt": {"description": "StartedAt is the time at which the restore run started.", "format": "date-time", "type": "string"}}, "type": "object"}}, "type": "object"}}, "served": true, "storage": true, "subresources": {"status": {}}}]}, "status": {"acceptedNames": {"kind": "RestoreJob", "listKind": "RestoreJobList", "plural": "restorejobs", "singular": "restorejob"}, "conditions": [{"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "no conflicts found", "reason": "NoConflicts", "status": "True", "type": "NamesAccepted"}, {"lastTransitionTime": "2026-08-12T09:57:04Z", "message": "the initial names have been accepted", "reason": "InitialNamesAccepted", "status": "True", "type": "Established"}], "storedVersions": ["v1alpha1"]}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/daemonsets.json b/demo-src/overlay/apps/console/src/demo/fixtures/daemonsets.json new file mode 100644 index 00000000..6da8d279 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/daemonsets.json @@ -0,0 +1,8 @@ +{ + "apiVersion": "v1", + "items": [], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/deployments.json b/demo-src/overlay/apps/console/src/demo/fixtures/deployments.json new file mode 100644 index 00000000..f3054a34 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/deployments.json @@ -0,0 +1,512 @@ +{ + "apiVersion": "v1", + "items": [ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "annotations": { + "deployment.kubernetes.io/revision": "1", + "meta.helm.sh/release-name": "bucket-demo-bucket-system", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "bucket-demo-bucket-system", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "bucket-demo-bucket-ui", + "namespace": "tenant-workshop00", + "resourceVersion": "43949405", + "uid": "1ddb5fa6-9f4f-482a-b98c-795cf8e64098" + }, + "spec": { + "progressDeadlineSeconds": 600, + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "app": "bucket-demo-bucket-ui" + } + }, + "strategy": { + "rollingUpdate": { + "maxSurge": "25%", + "maxUnavailable": "25%" + }, + "type": "RollingUpdate" + }, + "template": { + "metadata": { + "labels": { + "app": "bucket-demo-bucket-ui" + } + }, + "spec": { + "containers": [ + { + "env": [ + { + "name": "ENDPOINT", + "value": "s3.demo.cozystack.io" + }, + { + "name": "SKIP_SSL_VERIFICATION", + "value": "true" + } + ], + "image": "ghcr.io/cozystack/cozystack/s3manager:v1.6.1-rc.1@sha256:73665aaf7f5406b4a1e456d14060fe874e0ae2a436ba7fd3058fa73abff8a927", + "imagePullPolicy": "IfNotPresent", + "name": "s3manager", + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "100m", + "memory": "128Mi" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File" + } + ], + "dnsPolicy": "ClusterFirst", + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": {}, + "terminationGracePeriodSeconds": 30 + } + } + }, + "status": { + "availableReplicas": 1, + "conditions": [ + { + "lastTransitionTime": "2026-08-29T01:52:16Z", + "lastUpdateTime": "2026-08-29T01:52:16Z", + "message": "Deployment has minimum availability.", + "reason": "MinimumReplicasAvailable", + "status": "True", + "type": "Available" + }, + { + "lastTransitionTime": "2026-08-29T01:52:06Z", + "lastUpdateTime": "2026-08-29T01:52:16Z", + "message": "ReplicaSet \"bucket-demo-bucket-ui-595f9865b7\" has successfully progressed.", + "reason": "NewReplicaSetAvailable", + "status": "True", + "type": "Progressing" + } + ], + "observedGeneration": 1, + "readyReplicas": 1, + "replicas": 1, + "updatedReplicas": 1 + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "annotations": { + "deployment.kubernetes.io/revision": "1", + "meta.helm.sh/release-name": "nats-demo-nats-system", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-30T06:23:37Z", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "nats-box", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "nats", + "app.kubernetes.io/version": "2.11.10", + "helm.sh/chart": "nats-1.3.16", + "helm.toolkit.fluxcd.io/name": "nats-demo-nats-system", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "nats-demo-nats-box", + "namespace": "tenant-workshop00", + "resourceVersion": "47159416", + "uid": "9e734df2-2c71-416a-b653-de739a08b23e" + }, + "spec": { + "progressDeadlineSeconds": 600, + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "app.kubernetes.io/component": "nats-box", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/name": "nats" + } + }, + "strategy": { + "rollingUpdate": { + "maxSurge": "25%", + "maxUnavailable": "25%" + }, + "type": "RollingUpdate" + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/component": "nats-box", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "nats", + "app.kubernetes.io/version": "2.11.10", + "helm.sh/chart": "nats-1.3.16" + } + }, + "spec": { + "containers": [ + { + "args": [ + "sh", + "-ec", + "trap true INT TERM; sleep infinity \u0026 wait" + ], + "command": [ + "sh", + "-ec", + "work_dir=\"$(pwd)\"\nmkdir -p \"$XDG_CONFIG_HOME/nats\"\ncd \"$XDG_CONFIG_HOME/nats\"\nif ! [ -s context ]; then\n ln -s /etc/nats-contexts context\nfi\nif ! [ -f context.txt ]; then\n echo -n \"default\" \u003e context.txt\nfi\ncd \"$work_dir\"\nexec /entrypoint.sh \"$@\"\n", + "--" + ], + "image": "natsio/nats-box:0.19.2", + "imagePullPolicy": "IfNotPresent", + "name": "nats-box", + "resources": {}, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/nats-contexts", + "name": "contexts" + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": false, + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": {}, + "terminationGracePeriodSeconds": 30, + "volumes": [ + { + "name": "contexts", + "secret": { + "defaultMode": 420, + "secretName": "nats-demo-nats-box-contexts" + } + } + ] + } + } + }, + "status": { + "availableReplicas": 1, + "conditions": [ + { + "lastTransitionTime": "2026-08-30T06:23:45Z", + "lastUpdateTime": "2026-08-30T06:23:45Z", + "message": "Deployment has minimum availability.", + "reason": "MinimumReplicasAvailable", + "status": "True", + "type": "Available" + }, + { + "lastTransitionTime": "2026-08-30T06:23:37Z", + "lastUpdateTime": "2026-08-30T06:23:45Z", + "message": "ReplicaSet \"nats-demo-nats-box-f5b4dd87f\" has successfully progressed.", + "reason": "NewReplicaSetAvailable", + "status": "True", + "type": "Progressing" + } + ], + "observedGeneration": 1, + "readyReplicas": 1, + "replicas": 1, + "updatedReplicas": 1 + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "generation": 3436, + "labels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfs-redis-demo-redis", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "databases.spotahome.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "RedisFailover", + "name": "redis-demo-redis", + "uid": "2d06e18d-9d48-4bbe-9d5a-8384411b4d0a" + } + ], + "resourceVersion": "47169471", + "uid": "57169723-d409-40af-b7ae-827bf07c242f" + }, + "spec": { + "progressDeadlineSeconds": 600, + "replicas": 3, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover" + } + }, + "strategy": { + "rollingUpdate": { + "maxSurge": "25%", + "maxUnavailable": "25%" + }, + "type": "RollingUpdate" + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + } + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchLabels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + } + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + }, + "containers": [ + { + "command": [ + "redis-server", + "/redis/sentinel.conf", + "--sentinel" + ], + "image": "redis:6.2.6-alpine", + "imagePullPolicy": "Always", + "livenessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 26379 ping" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "sentinel", + "ports": [ + { + "containerPort": 26379, + "name": "sentinel", + "protocol": "TCP" + } + ], + "readinessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 26379 sentinel get-master-addr-by-name mymaster | head -n 1 | grep -vq '127.0.0.1'" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config-writable" + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "initContainers": [ + { + "command": [ + "cp", + "/redis/sentinel.conf", + "/redis-writable/sentinel.conf" + ], + "image": "redis:6.2.6-alpine", + "imagePullPolicy": "Always", + "name": "sentinel-config-copy", + "resources": { + "limits": { + "cpu": "10m", + "memory": "32Mi" + }, + "requests": { + "cpu": "10m", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config" + }, + { + "mountPath": "/redis-writable", + "name": "sentinel-config-writable" + } + ] + } + ], + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 1000, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationGracePeriodSeconds": 30, + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "rfs-redis-demo-redis" + }, + "name": "sentinel-config" + }, + { + "emptyDir": {}, + "name": "sentinel-config-writable" + } + ] + } + } + }, + "status": { + "availableReplicas": 3, + "conditions": [ + { + "lastTransitionTime": "2026-08-29T01:53:22Z", + "lastUpdateTime": "2026-08-29T01:53:22Z", + "message": "Deployment has minimum availability.", + "reason": "MinimumReplicasAvailable", + "status": "True", + "type": "Available" + }, + { + "lastTransitionTime": "2026-08-29T01:52:06Z", + "lastUpdateTime": "2026-08-29T01:53:22Z", + "message": "ReplicaSet \"rfs-redis-demo-redis-55b64b4986\" has successfully progressed.", + "reason": "NewReplicaSetAvailable", + "status": "True", + "type": "Progressing" + } + ], + "observedGeneration": 3436, + "readyReplicas": 3, + "replicas": 3, + "updatedReplicas": 3 + } + } + ], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/events.json b/demo-src/overlay/apps/console/src/demo/fixtures/events.json new file mode 100644 index 00000000..72073db8 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/events.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:23:37Z", "involvedObject": {"apiVersion": "v1", "kind": "PersistentVolumeClaim", "name": "nats-demo-nats-js-nats-demo-nats-0", "namespace": "tenant-workshop00", "resourceVersion": "47158926", "uid": "586afce4-1682-4264-958d-f289116971c6"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:37Z", "message": "External provisioner is provisioning volume for claim \"tenant-workshop00/nats-demo-nats-js-nats-demo-nats-0\"", "metadata": {"creationTimestamp": "2026-08-30T06:23:37Z", "name": "nats-demo-nats-js-nats-demo-nats-0.18d0811dd2f66a11", "namespace": "tenant-workshop00", "resourceVersion": "47158928", "uid": "188c6cae-e944-46b4-aaa7-bc419408cce7"}, "reason": "Provisioning", "reportingComponent": "linstor.csi.linbit.com_linstor-csi-controller-6cdf745cff-s2m26_669de7cb-eeaf-498f-b017-b5a804e3f0ea", "reportingInstance": "", "source": {"component": "linstor.csi.linbit.com_linstor-csi-controller-6cdf745cff-s2m26_669de7cb-eeaf-498f-b017-b5a804e3f0ea"}, "type": "Normal"}, {"apiVersion": "v1", "count": 3, "eventTime": null, "firstTimestamp": "2026-08-30T06:23:37Z", "involvedObject": {"apiVersion": "v1", "kind": "PersistentVolumeClaim", "name": "nats-demo-nats-js-nats-demo-nats-0", "namespace": "tenant-workshop00", "resourceVersion": "47158926", "uid": "586afce4-1682-4264-958d-f289116971c6"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:40Z", "message": "Waiting for a volume to be created either by the external provisioner 'linstor.csi.linbit.com' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.", "metadata": {"creationTimestamp": "2026-08-30T06:23:37Z", "name": "nats-demo-nats-js-nats-demo-nats-0.18d0811dd2f9f84e", "namespace": "tenant-workshop00", "resourceVersion": "47159116", "uid": "88dd9cbd-5293-4fd1-a3de-23f7724a2e99"}, "reason": "ExternalProvisioning", "reportingComponent": "persistentvolume-controller", "reportingInstance": "", "source": {"component": "persistentvolume-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:23:41Z", "involvedObject": {"apiVersion": "v1", "kind": "PersistentVolumeClaim", "name": "nats-demo-nats-js-nats-demo-nats-0", "namespace": "tenant-workshop00", "resourceVersion": "47158958", "uid": "586afce4-1682-4264-958d-f289116971c6"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:41Z", "message": "Successfully provisioned volume pvc-586afce4-1682-4264-958d-f289116971c6", "metadata": {"creationTimestamp": "2026-08-30T06:23:41Z", "name": "nats-demo-nats-js-nats-demo-nats-0.18d0811ee30c2424", "namespace": "tenant-workshop00", "resourceVersion": "47159171", "uid": "57ffd662-b023-4f1f-a693-7adbe815e094"}, "reason": "ProvisioningSucceeded", "reportingComponent": "linstor.csi.linbit.com_linstor-csi-controller-6cdf745cff-s2m26_669de7cb-eeaf-498f-b017-b5a804e3f0ea", "reportingInstance": "", "source": {"component": "linstor.csi.linbit.com_linstor-csi-controller-6cdf745cff-s2m26_669de7cb-eeaf-498f-b017-b5a804e3f0ea"}, "type": "Normal"}, {"apiVersion": "v1", "count": 168, "eventTime": null, "firstTimestamp": "2026-08-29T02:02:08Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats-system", "namespace": "tenant-workshop00", "resourceVersion": "43948436", "uid": "002a1d95-cbee-4d3f-9fbb-d1d953afcc89"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:26Z", "message": "Helm uninstall remediation for release tenant-workshop00/nats-demo-nats-system.v1 with chart cozy-nats@0.0.0+97ee96f48030 succeeded", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:97ee96f48030d2682119ef87a107355f80c1e755ce6ec28cf86c5bbf13ebe1dc", "helm.toolkit.fluxcd.io/revision": "0.0.0+97ee96f48030", "helm.toolkit.fluxcd.io/token": "sha256:fcf732dd54d9937752cc0c758fdd0cf7e6bf704bff10b4226654b36d92f57c5f"}, "creationTimestamp": "2026-08-29T02:02:08Z", "name": "nats-demo-nats-system.18d024446072ae5c", "namespace": "tenant-workshop00", "resourceVersion": "47158598", "uid": "23231316-b09e-4a77-a78f-7801b3d2eb42"}, "reason": "UninstallSucceeded", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:32:31Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats-system", "namespace": "tenant-workshop00", "resourceVersion": "47043424", "uid": "002a1d95-cbee-4d3f-9fbb-d1d953afcc89"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:32:31Z", "message": "Helm install failed for release tenant-workshop00/nats-demo-nats-system with chart cozy-nats@0.0.0+97ee96f48030: timeout waiting for: [StatefulSet/tenant-workshop00/nats-demo-nats status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T05:22:31.579757497Z: creating resource(s): {\"resources\":8}\n2026-08-30T05:22:31.579770747Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":false}\n2026-08-30T05:22:31.585854527Z: Created resource via patch: {\"gvk\":\"policy/v1, Kind=PodDisruptionBudget\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:31.616241617Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Secret\",\"name\":\"nats-demo-nats-box-contexts\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:31.623045513Z: Created resource via patch: {\"gvk\":\"/v1, Kind=ConfigMap\",\"name\":\"nats-demo-nats-config\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:31.651460973Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:31.660819147Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats-headless\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:31.668943216Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=Deployment\",\"name\":\"nats-demo-nats-box\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:31.678901817Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=StatefulSet\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:31.685873733Z: Created resource via patch: {\"gvk\":\"monitoring.coreos.com/v1, Kind=PodMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:97ee96f48030d2682119ef87a107355f80c1e755ce6ec28cf86c5bbf13ebe1dc", "helm.toolkit.fluxcd.io/revision": "0.0.0+97ee96f48030", "helm.toolkit.fluxcd.io/token": "sha256:fcf732dd54d9937752cc0c758fdd0cf7e6bf704bff10b4226654b36d92f57c5f"}, "creationTimestamp": "2026-08-30T05:32:31Z", "name": "nats-demo-nats-system.18d07e5418c4b151", "namespace": "tenant-workshop00", "resourceVersion": "47062451", "uid": "d0fbc237-4229-4d7f-9547-891fa268abae"}, "reason": "InstallFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:42:42Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats-system", "namespace": "tenant-workshop00", "resourceVersion": "47062489", "uid": "002a1d95-cbee-4d3f-9fbb-d1d953afcc89"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:42:42Z", "message": "Helm install failed for release tenant-workshop00/nats-demo-nats-system with chart cozy-nats@0.0.0+97ee96f48030: timeout waiting for: [StatefulSet/tenant-workshop00/nats-demo-nats status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T05:32:42.464007308Z: creating resource(s): {\"resources\":8}\n2026-08-30T05:32:42.464019938Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":false}\n2026-08-30T05:32:42.469575261Z: Created resource via patch: {\"gvk\":\"policy/v1, Kind=PodDisruptionBudget\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:32:42.614997392Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Secret\",\"name\":\"nats-demo-nats-box-contexts\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:32:42.620169107Z: Created resource via patch: {\"gvk\":\"/v1, Kind=ConfigMap\",\"name\":\"nats-demo-nats-config\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:32:42.84003523Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:32:42.855736773Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats-headless\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:32:42.863696683Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=Deployment\",\"name\":\"nats-demo-nats-box\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:32:42.873205886Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=StatefulSet\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:32:42.877717154Z: Created resource via patch: {\"gvk\":\"monitoring.coreos.com/v1, Kind=PodMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:97ee96f48030d2682119ef87a107355f80c1e755ce6ec28cf86c5bbf13ebe1dc", "helm.toolkit.fluxcd.io/revision": "0.0.0+97ee96f48030", "helm.toolkit.fluxcd.io/token": "sha256:fcf732dd54d9937752cc0c758fdd0cf7e6bf704bff10b4226654b36d92f57c5f"}, "creationTimestamp": "2026-08-30T05:42:42Z", "name": "nats-demo-nats-system.18d07ee266e38a2e", "namespace": "tenant-workshop00", "resourceVersion": "47082584", "uid": "3cd3ca19-5448-4a16-ba6b-449225f3ef4c"}, "reason": "InstallFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:52:53Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats-system", "namespace": "tenant-workshop00", "resourceVersion": "47082620", "uid": "002a1d95-cbee-4d3f-9fbb-d1d953afcc89"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:52:53Z", "message": "Helm install failed for release tenant-workshop00/nats-demo-nats-system with chart cozy-nats@0.0.0+97ee96f48030: timeout waiting for: [StatefulSet/tenant-workshop00/nats-demo-nats status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T05:42:53.610369545Z: creating resource(s): {\"resources\":8}\n2026-08-30T05:42:53.610382215Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":false}\n2026-08-30T05:42:53.616684575Z: Created resource via patch: {\"gvk\":\"policy/v1, Kind=PodDisruptionBudget\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:42:53.642868809Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Secret\",\"name\":\"nats-demo-nats-box-contexts\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:42:53.64893599Z: Created resource via patch: {\"gvk\":\"/v1, Kind=ConfigMap\",\"name\":\"nats-demo-nats-config\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:42:53.676104419Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:42:53.677783551Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats-headless\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:42:53.685821383Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=Deployment\",\"name\":\"nats-demo-nats-box\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:42:53.696029623Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=StatefulSet\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:42:53.702565452Z: Created resource via patch: {\"gvk\":\"monitoring.coreos.com/v1, Kind=PodMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:97ee96f48030d2682119ef87a107355f80c1e755ce6ec28cf86c5bbf13ebe1dc", "helm.toolkit.fluxcd.io/revision": "0.0.0+97ee96f48030", "helm.toolkit.fluxcd.io/token": "sha256:fcf732dd54d9937752cc0c758fdd0cf7e6bf704bff10b4226654b36d92f57c5f"}, "creationTimestamp": "2026-08-30T05:52:53Z", "name": "nats-demo-nats-system.18d07f709e1e2db3", "namespace": "tenant-workshop00", "resourceVersion": "47101593", "uid": "597dce7d-8cbd-4a50-80fd-29eca4edd208"}, "reason": "InstallFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:03:04Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats-system", "namespace": "tenant-workshop00", "resourceVersion": "47101630", "uid": "002a1d95-cbee-4d3f-9fbb-d1d953afcc89"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:03:04Z", "message": "Helm install failed for release tenant-workshop00/nats-demo-nats-system with chart cozy-nats@0.0.0+97ee96f48030: timeout waiting for: [StatefulSet/tenant-workshop00/nats-demo-nats status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T05:53:04.387864614Z: creating resource(s): {\"resources\":8}\n2026-08-30T05:53:04.387876034Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":false}\n2026-08-30T05:53:04.392170023Z: Created resource via patch: {\"gvk\":\"policy/v1, Kind=PodDisruptionBudget\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:04.53816389Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Secret\",\"name\":\"nats-demo-nats-box-contexts\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:04.542459969Z: Created resource via patch: {\"gvk\":\"/v1, Kind=ConfigMap\",\"name\":\"nats-demo-nats-config\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:04.573982866Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats-headless\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:04.662895002Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:04.669219651Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=Deployment\",\"name\":\"nats-demo-nats-box\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:04.676917423Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=StatefulSet\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:04.682804945Z: Created resource via patch: {\"gvk\":\"monitoring.coreos.com/v1, Kind=PodMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:97ee96f48030d2682119ef87a107355f80c1e755ce6ec28cf86c5bbf13ebe1dc", "helm.toolkit.fluxcd.io/revision": "0.0.0+97ee96f48030", "helm.toolkit.fluxcd.io/token": "sha256:fcf732dd54d9937752cc0c758fdd0cf7e6bf704bff10b4226654b36d92f57c5f"}, "creationTimestamp": "2026-08-30T06:03:04Z", "name": "nats-demo-nats-system.18d07ffedf6dd87c", "namespace": "tenant-workshop00", "resourceVersion": "47120738", "uid": "1f9cf63c-2859-47ae-b1a1-9e11d78864d4"}, "reason": "InstallFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:13:15Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats-system", "namespace": "tenant-workshop00", "resourceVersion": "47120775", "uid": "002a1d95-cbee-4d3f-9fbb-d1d953afcc89"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:13:15Z", "message": "Helm install failed for release tenant-workshop00/nats-demo-nats-system with chart cozy-nats@0.0.0+97ee96f48030: timeout waiting for: [StatefulSet/tenant-workshop00/nats-demo-nats status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T06:03:15.360891959Z: creating resource(s): {\"resources\":8}\n2026-08-30T06:03:15.360900159Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":false}\n2026-08-30T06:03:15.367139739Z: Created resource via patch: {\"gvk\":\"policy/v1, Kind=PodDisruptionBudget\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:03:15.395536119Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Secret\",\"name\":\"nats-demo-nats-box-contexts\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:03:15.401010703Z: Created resource via patch: {\"gvk\":\"/v1, Kind=ConfigMap\",\"name\":\"nats-demo-nats-config\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:03:15.424459858Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats-headless\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:03:15.434905916Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:03:15.442473599Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=Deployment\",\"name\":\"nats-demo-nats-box\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:03:15.452003843Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=StatefulSet\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:03:15.458169663Z: Created resource via patch: {\"gvk\":\"monitoring.coreos.com/v1, Kind=PodMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:97ee96f48030d2682119ef87a107355f80c1e755ce6ec28cf86c5bbf13ebe1dc", "helm.toolkit.fluxcd.io/revision": "0.0.0+97ee96f48030", "helm.toolkit.fluxcd.io/token": "sha256:fcf732dd54d9937752cc0c758fdd0cf7e6bf704bff10b4226654b36d92f57c5f"}, "creationTimestamp": "2026-08-30T06:13:15Z", "name": "nats-demo-nats-system.18d0808d1460eb2b", "namespace": "tenant-workshop00", "resourceVersion": "47139603", "uid": "01b4dea8-75ce-473b-9e66-378a4fc5f6c0"}, "reason": "InstallFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:23:26Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats-system", "namespace": "tenant-workshop00", "resourceVersion": "47139637", "uid": "002a1d95-cbee-4d3f-9fbb-d1d953afcc89"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:26Z", "message": "Helm install failed for release tenant-workshop00/nats-demo-nats-system with chart cozy-nats@0.0.0+97ee96f48030: timeout waiting for: [StatefulSet/tenant-workshop00/nats-demo-nats status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T06:13:26.228063487Z: creating resource(s): {\"resources\":8}\n2026-08-30T06:13:26.228076496Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":false}\n2026-08-30T06:13:26.234622544Z: Created resource via patch: {\"gvk\":\"policy/v1, Kind=PodDisruptionBudget\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:13:26.260191559Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Secret\",\"name\":\"nats-demo-nats-box-contexts\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:13:26.266453499Z: Created resource via patch: {\"gvk\":\"/v1, Kind=ConfigMap\",\"name\":\"nats-demo-nats-config\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:13:26.293195978Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:13:26.301247359Z: Created resource via patch: {\"gvk\":\"/v1, Kind=Service\",\"name\":\"nats-demo-nats-headless\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:13:26.308502853Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=Deployment\",\"name\":\"nats-demo-nats-box\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:13:26.318071807Z: Created resource via patch: {\"gvk\":\"apps/v1, Kind=StatefulSet\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:13:26.325399001Z: Created resource via patch: {\"gvk\":\"monitoring.coreos.com/v1, Kind=PodMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:97ee96f48030d2682119ef87a107355f80c1e755ce6ec28cf86c5bbf13ebe1dc", "helm.toolkit.fluxcd.io/revision": "0.0.0+97ee96f48030", "helm.toolkit.fluxcd.io/token": "sha256:fcf732dd54d9937752cc0c758fdd0cf7e6bf704bff10b4226654b36d92f57c5f"}, "creationTimestamp": "2026-08-30T06:23:26Z", "name": "nats-demo-nats-system.18d0811b4f4f0384", "namespace": "tenant-workshop00", "resourceVersion": "47158560", "uid": "ca98b813-52da-4670-bd13-915e62c634df"}, "reason": "InstallFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:32:31Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47043960", "uid": "3cfae1b8-13e8-4dbe-b474-0c86af40369d"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:32:31Z", "message": "Failed to calculate the number of expected pods: found no controllers for pod \"nats-demo-nats-0\"", "metadata": {"creationTimestamp": "2026-08-30T05:32:31Z", "name": "nats-demo-nats.18d07e5424554608", "namespace": "tenant-workshop00", "resourceVersion": "47062478", "uid": "ab1cba47-8342-4928-bddd-6fca861fbde1"}, "reason": "CalculateExpectedPodCountFailed", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Warning"}, {"apiVersion": "v1", "count": 2, "eventTime": null, "firstTimestamp": "2026-08-30T05:32:42Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47062881", "uid": "d397779f-1a71-4147-b3af-3ee5ab272450"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:32:42Z", "message": "No matching pods found", "metadata": {"creationTimestamp": "2026-08-30T05:32:42Z", "name": "nats-demo-nats.18d07e56993e09e0", "namespace": "tenant-workshop00", "resourceVersion": "47062884", "uid": "d3be5e57-e69d-47c4-93ba-a621d0694d40"}, "reason": "NoPods", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:32:42Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47062909", "uid": "9bcdfb29-11b1-46b0-9369-6cf5b0d722c6"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:32:42Z", "message": "create Claim nats-demo-nats-js-nats-demo-nats-0 Pod nats-demo-nats-0 in StatefulSet nats-demo-nats success", "metadata": {"creationTimestamp": "2026-08-30T05:32:42Z", "name": "nats-demo-nats.18d07e56b2066e13", "namespace": "tenant-workshop00", "resourceVersion": "47062917", "uid": "be52e83c-06cf-4967-b3cb-c65376ef6b4b"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:32:43Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47062909", "uid": "9bcdfb29-11b1-46b0-9369-6cf5b0d722c6"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:32:43Z", "message": "create Pod nats-demo-nats-0 in StatefulSet nats-demo-nats successful", "metadata": {"creationTimestamp": "2026-08-30T05:32:43Z", "name": "nats-demo-nats.18d07e56d05b3183", "namespace": "tenant-workshop00", "resourceVersion": "47062999", "uid": "e92fb5ce-d4e8-4f2e-aba4-65febf62bef0"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:32:49Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47043377", "uid": "3a1717e1-96dd-4c82-9333-da664fceb454"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:32:49Z", "message": "Helm upgrade failed for release tenant-workshop00/nats-demo-nats with chart nats@0.0.0+007744fb7fec: timeout waiting for: [HelmRelease/tenant-workshop00/nats-demo-nats-system status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T05:22:49.410943178Z: performing update: {\"name\":\"nats-demo-nats\"}\n2026-08-30T05:22:49.455989525Z: creating upgraded release: {\"name\":\"nats-demo-nats\"}\n2026-08-30T05:22:49.616176503Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true}\n2026-08-30T05:22:49.616188363Z: using server-side apply for resource update: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true,\"upgradeClientSideFieldManager\":false}\n2026-08-30T05:22:49.616195472Z: checking resources for changes: {\"resources\":4}\n2026-08-30T05:22:49.625009969Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=Role\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:49.632628111Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=RoleBinding\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:49.647244419Z: Patched resource: {\"gvk\":\"helm.toolkit.fluxcd.io/v2, Kind=HelmRelease\",\"name\":\"nats-demo-nats-system\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:22:49.656603453Z: Patched resource: {\"gvk\":\"cozystack.io/v1alpha1, Kind=WorkloadMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:32:49.679431477Z: warning: upgrade failed: {\"error\":{},\"name\":\"nats-demo-nats\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/app-version": "1.4.1", "helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:007744fb7fecc35754c45b2bb5ceb21481be2d4ba13f08acf388db73879ababb", "helm.toolkit.fluxcd.io/revision": "0.0.0+007744fb7fec", "helm.toolkit.fluxcd.io/token": "sha256:675eeceaf99446ff753cadd2fef5461ccd78b402e5228b2c9cfb544c3dcb01e1"}, "creationTimestamp": "2026-08-30T05:32:49Z", "name": "nats-demo-nats.18d07e5848cb7df2", "namespace": "tenant-workshop00", "resourceVersion": "47063353", "uid": "0662d3ff-f3ef-4723-8800-263bdbabc4aa"}, "reason": "UpgradeFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:42:43Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47062982", "uid": "d397779f-1a71-4147-b3af-3ee5ab272450"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:42:43Z", "message": "Failed to calculate the number of expected pods: found no controllers for pod \"nats-demo-nats-0\"", "metadata": {"creationTimestamp": "2026-08-30T05:42:43Z", "name": "nats-demo-nats.18d07ee2725c713c", "namespace": "tenant-workshop00", "resourceVersion": "47082610", "uid": "10e586b6-1c2f-47f7-9f26-ec85e6923a6f"}, "reason": "CalculateExpectedPodCountFailed", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Warning"}, {"apiVersion": "v1", "count": 2, "eventTime": null, "firstTimestamp": "2026-08-30T05:42:53Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47083003", "uid": "96914131-245d-48e8-8af6-6e2cd1388b31"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:42:53Z", "message": "No matching pods found", "metadata": {"creationTimestamp": "2026-08-30T05:42:53Z", "name": "nats-demo-nats.18d07ee4e46d7b79", "namespace": "tenant-workshop00", "resourceVersion": "47083006", "uid": "e8cd653b-c979-4359-a159-94fe4807c512"}, "reason": "NoPods", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:42:53Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47083032", "uid": "d5aa4f3b-aedc-42b7-989b-f1a6cbb0b587"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:42:53Z", "message": "create Claim nats-demo-nats-js-nats-demo-nats-0 Pod nats-demo-nats-0 in StatefulSet nats-demo-nats success", "metadata": {"creationTimestamp": "2026-08-30T05:42:53Z", "name": "nats-demo-nats.18d07ee4e9ceb184", "namespace": "tenant-workshop00", "resourceVersion": "47083038", "uid": "bc0b7c33-3c96-4853-b678-836243139afe"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:42:53Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47083032", "uid": "d5aa4f3b-aedc-42b7-989b-f1a6cbb0b587"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:42:53Z", "message": "create Pod nats-demo-nats-0 in StatefulSet nats-demo-nats successful", "metadata": {"creationTimestamp": "2026-08-30T05:42:53Z", "name": "nats-demo-nats.18d07ee4edc03a58", "namespace": "tenant-workshop00", "resourceVersion": "47083070", "uid": "eb470a7e-73d2-4514-9c55-66209d94dbb3"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:43:20Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47063357", "uid": "3a1717e1-96dd-4c82-9333-da664fceb454"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:43:20Z", "message": "Helm upgrade failed for release tenant-workshop00/nats-demo-nats with chart nats@0.0.0+007744fb7fec: timeout waiting for: [HelmRelease/tenant-workshop00/nats-demo-nats-system status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T05:33:20.820742849Z: performing update: {\"name\":\"nats-demo-nats\"}\n2026-08-30T05:33:20.855963905Z: creating upgraded release: {\"name\":\"nats-demo-nats\"}\n2026-08-30T05:33:20.91171109Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true}\n2026-08-30T05:33:20.91171655Z: using server-side apply for resource update: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true,\"upgradeClientSideFieldManager\":false}\n2026-08-30T05:33:20.91172036Z: checking resources for changes: {\"resources\":4}\n2026-08-30T05:33:20.916619785Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=Role\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:33:20.92176648Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=RoleBinding\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:33:20.931326203Z: Patched resource: {\"gvk\":\"helm.toolkit.fluxcd.io/v2, Kind=HelmRelease\",\"name\":\"nats-demo-nats-system\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:33:20.938309348Z: Patched resource: {\"gvk\":\"cozystack.io/v1alpha1, Kind=WorkloadMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:43:20.960849584Z: warning: upgrade failed: {\"error\":{},\"name\":\"nats-demo-nats\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/app-version": "1.4.1", "helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:007744fb7fecc35754c45b2bb5ceb21481be2d4ba13f08acf388db73879ababb", "helm.toolkit.fluxcd.io/revision": "0.0.0+007744fb7fec", "helm.toolkit.fluxcd.io/token": "sha256:675eeceaf99446ff753cadd2fef5461ccd78b402e5228b2c9cfb544c3dcb01e1"}, "creationTimestamp": "2026-08-30T05:43:20Z", "name": "nats-demo-nats.18d07eeb440fc7a3", "namespace": "tenant-workshop00", "resourceVersion": "47084107", "uid": "65dfb2a8-267f-45fd-bf56-eef25a20d2ce"}, "reason": "UpgradeFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 2, "eventTime": null, "firstTimestamp": "2026-08-30T05:53:04Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47102121", "uid": "1497c499-b92b-4cd2-bfa7-708a55ee0205"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:53:04Z", "message": "No matching pods found", "metadata": {"creationTimestamp": "2026-08-30T05:53:04Z", "name": "nats-demo-nats.18d07f7319821bbc", "namespace": "tenant-workshop00", "resourceVersion": "47102125", "uid": "6d40dd7e-b8d1-43b6-aae6-a36e364cf4ae"}, "reason": "NoPods", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:53:04Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47102140", "uid": "0e8eac67-9d57-418e-ae8e-96cb3c8b29e9"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:53:04Z", "message": "create Claim nats-demo-nats-js-nats-demo-nats-0 Pod nats-demo-nats-0 in StatefulSet nats-demo-nats success", "metadata": {"creationTimestamp": "2026-08-30T05:53:04Z", "name": "nats-demo-nats.18d07f732b13ce85", "namespace": "tenant-workshop00", "resourceVersion": "47102147", "uid": "896f3267-e80c-4b38-89ef-ab7caafaf3df"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:53:05Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47102140", "uid": "0e8eac67-9d57-418e-ae8e-96cb3c8b29e9"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:53:05Z", "message": "create Pod nats-demo-nats-0 in StatefulSet nats-demo-nats successful", "metadata": {"creationTimestamp": "2026-08-30T05:53:05Z", "name": "nats-demo-nats.18d07f733ed61cbe", "namespace": "tenant-workshop00", "resourceVersion": "47102209", "uid": "3ebf04f6-1d50-4f93-a25a-4e43b606695a"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:53:05Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47102140", "uid": "0e8eac67-9d57-418e-ae8e-96cb3c8b29e9"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:53:05Z", "message": "update Pod nats-demo-nats-0 in StatefulSet nats-demo-nats failed error: could not update claim nats-demo-nats-js-nats-demo-nats-0 for delete policy ownerRefs: Operation cannot be fulfilled on persistentvolumeclaims \"nats-demo-nats-js-nats-demo-nats-0\": the object has been modified; please apply your changes to the latest version and try again", "metadata": {"creationTimestamp": "2026-08-30T05:53:05Z", "name": "nats-demo-nats.18d07f734ab42a4c", "namespace": "tenant-workshop00", "resourceVersion": "47102225", "uid": "1083afc9-d001-4e09-a8a5-ea6c8f8ee7f2"}, "reason": "FailedUpdate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T05:53:22Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47084111", "uid": "3a1717e1-96dd-4c82-9333-da664fceb454"}, "kind": "Event", "lastTimestamp": "2026-08-30T05:53:22Z", "message": "Helm upgrade failed for release tenant-workshop00/nats-demo-nats with chart nats@0.0.0+007744fb7fec: timeout waiting for: [HelmRelease/tenant-workshop00/nats-demo-nats-system status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T05:43:22.243144625Z: performing update: {\"name\":\"nats-demo-nats\"}\n2026-08-30T05:43:22.276894503Z: creating upgraded release: {\"name\":\"nats-demo-nats\"}\n2026-08-30T05:43:22.357740864Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true}\n2026-08-30T05:43:22.357753934Z: using server-side apply for resource update: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true,\"upgradeClientSideFieldManager\":false}\n2026-08-30T05:43:22.357761014Z: checking resources for changes: {\"resources\":4}\n2026-08-30T05:43:22.366662682Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=Role\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:43:22.375037271Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=RoleBinding\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:43:22.390034899Z: Patched resource: {\"gvk\":\"helm.toolkit.fluxcd.io/v2, Kind=HelmRelease\",\"name\":\"nats-demo-nats-system\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:43:22.399060786Z: Patched resource: {\"gvk\":\"cozystack.io/v1alpha1, Kind=WorkloadMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:22.431138477Z: warning: upgrade failed: {\"error\":{},\"name\":\"nats-demo-nats\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/app-version": "1.4.1", "helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:007744fb7fecc35754c45b2bb5ceb21481be2d4ba13f08acf388db73879ababb", "helm.toolkit.fluxcd.io/revision": "0.0.0+007744fb7fec", "helm.toolkit.fluxcd.io/token": "sha256:675eeceaf99446ff753cadd2fef5461ccd78b402e5228b2c9cfb544c3dcb01e1"}, "creationTimestamp": "2026-08-30T05:53:22Z", "name": "nats-demo-nats.18d07f774e19085b", "namespace": "tenant-workshop00", "resourceVersion": "47102750", "uid": "b0e9d85c-a573-48f7-94c5-231da42a7bfc"}, "reason": "UpgradeFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:03:04Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47102180", "uid": "1497c499-b92b-4cd2-bfa7-708a55ee0205"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:03:04Z", "message": "Failed to calculate the number of expected pods: found no controllers for pod \"nats-demo-nats-0\"", "metadata": {"creationTimestamp": "2026-08-30T06:03:04Z", "name": "nats-demo-nats.18d07ffee9d2ed25", "namespace": "tenant-workshop00", "resourceVersion": "47120760", "uid": "fc479e58-1352-4d22-88a7-9ac718c3ae9a"}, "reason": "CalculateExpectedPodCountFailed", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Warning"}, {"apiVersion": "v1", "count": 2, "eventTime": null, "firstTimestamp": "2026-08-30T06:03:15Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47121199", "uid": "4d1f53a3-0b65-48c8-8e5d-aed5672a864e"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:03:15Z", "message": "No matching pods found", "metadata": {"creationTimestamp": "2026-08-30T06:03:15Z", "name": "nats-demo-nats.18d080015a72800c", "namespace": "tenant-workshop00", "resourceVersion": "47121202", "uid": "34b65a3b-c297-4f3f-afc2-68575aba6a09"}, "reason": "NoPods", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:03:15Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47121214", "uid": "f6046094-1ddf-4d59-9224-44dd10297744"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:03:15Z", "message": "create Claim nats-demo-nats-js-nats-demo-nats-0 Pod nats-demo-nats-0 in StatefulSet nats-demo-nats success", "metadata": {"creationTimestamp": "2026-08-30T06:03:15Z", "name": "nats-demo-nats.18d08001603ae097", "namespace": "tenant-workshop00", "resourceVersion": "47121222", "uid": "8f43a3b3-1682-4974-a958-9aa2a1b71597"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:03:15Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47121214", "uid": "f6046094-1ddf-4d59-9224-44dd10297744"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:03:15Z", "message": "create Pod nats-demo-nats-0 in StatefulSet nats-demo-nats successful", "metadata": {"creationTimestamp": "2026-08-30T06:03:15Z", "name": "nats-demo-nats.18d0800164f64e87", "namespace": "tenant-workshop00", "resourceVersion": "47121262", "uid": "5b1aa37f-fb0c-4d59-ba92-2691011c306d"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:03:52Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47102754", "uid": "3a1717e1-96dd-4c82-9333-da664fceb454"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:03:52Z", "message": "Helm upgrade failed for release tenant-workshop00/nats-demo-nats with chart nats@0.0.0+007744fb7fec: timeout waiting for: [HelmRelease/tenant-workshop00/nats-demo-nats-system status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T05:53:52.383695213Z: performing update: {\"name\":\"nats-demo-nats\"}\n2026-08-30T05:53:52.399781625Z: creating upgraded release: {\"name\":\"nats-demo-nats\"}\n2026-08-30T05:53:52.45398587Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true}\n2026-08-30T05:53:52.45399542Z: using server-side apply for resource update: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true,\"upgradeClientSideFieldManager\":false}\n2026-08-30T05:53:52.45400052Z: checking resources for changes: {\"resources\":4}\n2026-08-30T05:53:52.458981625Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=Role\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:52.465139785Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=RoleBinding\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:52.474086262Z: Patched resource: {\"gvk\":\"helm.toolkit.fluxcd.io/v2, Kind=HelmRelease\",\"name\":\"nats-demo-nats-system\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T05:53:52.480991478Z: Patched resource: {\"gvk\":\"cozystack.io/v1alpha1, Kind=WorkloadMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:03:52.500696642Z: warning: upgrade failed: {\"error\":{},\"name\":\"nats-demo-nats\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/app-version": "1.4.1", "helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:007744fb7fecc35754c45b2bb5ceb21481be2d4ba13f08acf388db73879ababb", "helm.toolkit.fluxcd.io/revision": "0.0.0+007744fb7fec", "helm.toolkit.fluxcd.io/token": "sha256:675eeceaf99446ff753cadd2fef5461ccd78b402e5228b2c9cfb544c3dcb01e1"}, "creationTimestamp": "2026-08-30T06:03:52Z", "name": "nats-demo-nats.18d0800a0173266f", "namespace": "tenant-workshop00", "resourceVersion": "47122354", "uid": "a06c2e66-abbd-4e2d-b958-d95fed33e8b8"}, "reason": "UpgradeFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:13:15Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47121242", "uid": "4d1f53a3-0b65-48c8-8e5d-aed5672a864e"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:13:15Z", "message": "Failed to calculate the number of expected pods: found no controllers for pod \"nats-demo-nats-0\"", "metadata": {"creationTimestamp": "2026-08-30T06:13:15Z", "name": "nats-demo-nats.18d0808d1e8cb167", "namespace": "tenant-workshop00", "resourceVersion": "47139623", "uid": "4bd299d7-d660-401d-9305-8fbd5f84d4fe"}, "reason": "CalculateExpectedPodCountFailed", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Warning"}, {"apiVersion": "v1", "count": 2, "eventTime": null, "firstTimestamp": "2026-08-30T06:13:26Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47139982", "uid": "8d2a97d7-51b2-452c-9660-a13bffadb797"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:13:26Z", "message": "No matching pods found", "metadata": {"creationTimestamp": "2026-08-30T06:13:26Z", "name": "nats-demo-nats.18d0808f9500b844", "namespace": "tenant-workshop00", "resourceVersion": "47139985", "uid": "6e14e5dc-713e-44ec-bd5b-d9703334c5de"}, "reason": "NoPods", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:13:26Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47139999", "uid": "8352701e-75aa-4613-b4ee-4e2b27bf6238"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:13:26Z", "message": "create Claim nats-demo-nats-js-nats-demo-nats-0 Pod nats-demo-nats-0 in StatefulSet nats-demo-nats success", "metadata": {"creationTimestamp": "2026-08-30T06:13:26Z", "name": "nats-demo-nats.18d0808f9aaea08f", "namespace": "tenant-workshop00", "resourceVersion": "47140006", "uid": "881753cb-b853-4ce8-85b7-d0eb5040c970"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:13:26Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47139999", "uid": "8352701e-75aa-4613-b4ee-4e2b27bf6238"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:13:26Z", "message": "create Pod nats-demo-nats-0 in StatefulSet nats-demo-nats successful", "metadata": {"creationTimestamp": "2026-08-30T06:13:26Z", "name": "nats-demo-nats.18d0808f9f26e3b3", "namespace": "tenant-workshop00", "resourceVersion": "47140047", "uid": "4a4a8705-d87c-4d3a-8e72-209106a18403"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:14:23Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47122358", "uid": "3a1717e1-96dd-4c82-9333-da664fceb454"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:14:23Z", "message": "Helm upgrade failed for release tenant-workshop00/nats-demo-nats with chart nats@0.0.0+007744fb7fec: timeout waiting for: [HelmRelease/tenant-workshop00/nats-demo-nats-system status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T06:04:23.715723338Z: performing update: {\"name\":\"nats-demo-nats\"}\n2026-08-30T06:04:23.746018439Z: creating upgraded release: {\"name\":\"nats-demo-nats\"}\n2026-08-30T06:04:23.815476979Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true}\n2026-08-30T06:04:23.815487048Z: using server-side apply for resource update: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true,\"upgradeClientSideFieldManager\":false}\n2026-08-30T06:04:23.815493568Z: checking resources for changes: {\"resources\":4}\n2026-08-30T06:04:23.821547119Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=Role\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:04:23.828540335Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=RoleBinding\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:04:23.839149193Z: Patched resource: {\"gvk\":\"helm.toolkit.fluxcd.io/v2, Kind=HelmRelease\",\"name\":\"nats-demo-nats-system\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:04:23.847314433Z: Patched resource: {\"gvk\":\"cozystack.io/v1alpha1, Kind=WorkloadMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:14:23.881427337Z: warning: upgrade failed: {\"error\":{},\"name\":\"nats-demo-nats\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/app-version": "1.4.1", "helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:007744fb7fecc35754c45b2bb5ceb21481be2d4ba13f08acf388db73879ababb", "helm.toolkit.fluxcd.io/revision": "0.0.0+007744fb7fec", "helm.toolkit.fluxcd.io/token": "sha256:675eeceaf99446ff753cadd2fef5461ccd78b402e5228b2c9cfb544c3dcb01e1"}, "creationTimestamp": "2026-08-30T06:14:23Z", "name": "nats-demo-nats.18d0809d035156a6", "namespace": "tenant-workshop00", "resourceVersion": "47141803", "uid": "7ae5d4df-0cc5-44b7-90de-2a58626d6c5b"}, "reason": "UpgradeFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:23:26Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47140026", "uid": "8d2a97d7-51b2-452c-9660-a13bffadb797"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:26Z", "message": "Failed to calculate the number of expected pods: found no controllers for pod \"nats-demo-nats-0\"", "metadata": {"creationTimestamp": "2026-08-30T06:23:26Z", "name": "nats-demo-nats.18d0811b5a4dd387", "namespace": "tenant-workshop00", "resourceVersion": "47158588", "uid": "adea2678-c6a4-4eb9-8bd0-1512907987ce"}, "reason": "CalculateExpectedPodCountFailed", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Warning"}, {"apiVersion": "v1", "count": 2, "eventTime": null, "firstTimestamp": "2026-08-30T06:23:37Z", "involvedObject": {"apiVersion": "policy/v1", "kind": "PodDisruptionBudget", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47158902", "uid": "3d212116-d984-4f9a-a6e7-aaaf855c07e6"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:37Z", "message": "No matching pods found", "metadata": {"creationTimestamp": "2026-08-30T06:23:37Z", "name": "nats-demo-nats.18d0811dcd16f111", "namespace": "tenant-workshop00", "resourceVersion": "47158905", "uid": "2a8a15c5-42b3-464b-80a5-aa7eac7ef33e"}, "reason": "NoPods", "reportingComponent": "controllermanager", "reportingInstance": "", "source": {"component": "controllermanager"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:23:37Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47158919", "uid": "0f3d6b47-2933-4356-afda-7dcdd2ad8dcb"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:37Z", "message": "create Claim nats-demo-nats-js-nats-demo-nats-0 Pod nats-demo-nats-0 in StatefulSet nats-demo-nats success", "metadata": {"creationTimestamp": "2026-08-30T06:23:37Z", "name": "nats-demo-nats.18d0811dd2ace7e3", "namespace": "tenant-workshop00", "resourceVersion": "47158925", "uid": "4ad552bb-536d-44b3-82c3-dbeb05c8ff7b"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:23:37Z", "involvedObject": {"apiVersion": "apps/v1", "kind": "StatefulSet", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47158919", "uid": "0f3d6b47-2933-4356-afda-7dcdd2ad8dcb"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:23:37Z", "message": "create Pod nats-demo-nats-0 in StatefulSet nats-demo-nats successful", "metadata": {"creationTimestamp": "2026-08-30T06:23:37Z", "name": "nats-demo-nats.18d0811dd65d6f2c", "namespace": "tenant-workshop00", "resourceVersion": "47158962", "uid": "c027d8db-f416-4208-8385-12709c300926"}, "reason": "SuccessfulCreate", "reportingComponent": "statefulset-controller", "reportingInstance": "", "source": {"component": "statefulset-controller"}, "type": "Normal"}, {"apiVersion": "v1", "count": 1, "eventTime": null, "firstTimestamp": "2026-08-30T06:24:54Z", "involvedObject": {"apiVersion": "helm.toolkit.fluxcd.io/v2", "kind": "HelmRelease", "name": "nats-demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "47141809", "uid": "3a1717e1-96dd-4c82-9333-da664fceb454"}, "kind": "Event", "lastTimestamp": "2026-08-30T06:24:54Z", "message": "Helm upgrade failed for release tenant-workshop00/nats-demo-nats with chart nats@0.0.0+007744fb7fec: timeout waiting for: [HelmRelease/tenant-workshop00/nats-demo-nats-system status: 'InProgress']\n\nLast Helm logs:\n\n2026-08-30T06:14:54.037962185Z: performing update: {\"name\":\"nats-demo-nats\"}\n2026-08-30T06:14:54.073135493Z: creating upgraded release: {\"name\":\"nats-demo-nats\"}\n2026-08-30T06:14:54.123129308Z: using server-side apply for resource creation: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true}\n2026-08-30T06:14:54.123137158Z: using server-side apply for resource update: {\"dryRun\":false,\"fieldValidationDirective\":\"Strict\",\"forceConflicts\":true,\"upgradeClientSideFieldManager\":false}\n2026-08-30T06:14:54.123141478Z: checking resources for changes: {\"resources\":4}\n2026-08-30T06:14:54.130201573Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=Role\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:14:54.135368418Z: Patched resource: {\"gvk\":\"rbac.authorization.k8s.io/v1, Kind=RoleBinding\",\"name\":\"nats-demo-nats-dashboard-resources\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:14:54.143804037Z: Patched resource: {\"gvk\":\"helm.toolkit.fluxcd.io/v2, Kind=HelmRelease\",\"name\":\"nats-demo-nats-system\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:14:54.152291615Z: Patched resource: {\"gvk\":\"cozystack.io/v1alpha1, Kind=WorkloadMonitor\",\"name\":\"nats-demo-nats\",\"namespace\":\"tenant-workshop00\"}\n2026-08-30T06:24:54.184058391Z: warning: upgrade failed: {\"error\":{},\"name\":\"nats-demo-nats\"}", "metadata": {"annotations": {"helm.toolkit.fluxcd.io/app-version": "1.4.1", "helm.toolkit.fluxcd.io/oci-digest": "latest@sha256:007744fb7fecc35754c45b2bb5ceb21481be2d4ba13f08acf388db73879ababb", "helm.toolkit.fluxcd.io/revision": "0.0.0+007744fb7fec", "helm.toolkit.fluxcd.io/token": "sha256:675eeceaf99446ff753cadd2fef5461ccd78b402e5228b2c9cfb544c3dcb01e1"}, "creationTimestamp": "2026-08-30T06:24:54Z", "name": "nats-demo-nats.18d0812fc3f91a27", "namespace": "tenant-workshop00", "resourceVersion": "47161392", "uid": "5a7e0ff5-7af5-4132-9cb1-7b2e0f46b1a4"}, "reason": "UpgradeFailed", "reportingComponent": "helm-controller", "reportingInstance": "", "source": {"component": "helm-controller"}, "type": "Warning"}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/info.json b/demo-src/overlay/apps/console/src/demo/fixtures/info.json new file mode 100644 index 00000000..59a06ec5 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/info.json @@ -0,0 +1 @@ +{"apiVersion": "apps.cozystack.io/v1alpha1", "kind": "Info", "metadata": {"creationTimestamp": "2026-08-29T01:50:38Z", "name": "info", "namespace": "tenant-workshop00", "resourceVersion": "47417020", "uid": "7105c8d3-4ff0-4eeb-be02-bd192d13bec2"}, "spec": {}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T01:50:39Z", "message": "Helm install succeeded for release tenant-workshop00/info.v1 with chart info@0.0.0+19f5895647a2", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T01:50:39Z", "message": "Helm install succeeded for release tenant-workshop00/info.v1 with chart info@0.0.0+19f5895647a2", "reason": "InstallSucceeded", "status": "True", "type": "Released"}], "version": "0.0.0+19f5895647a2"}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/instances.json b/demo-src/overlay/apps/console/src/demo/fixtures/instances.json new file mode 100644 index 00000000..db5749a2 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/instances.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "apps.cozystack.io/v1alpha1", "kind": "Postgres", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps.cozystack.io/v1alpha1\",\"kind\":\"Postgres\",\"metadata\":{\"annotations\":{},\"name\":\"demo-postgres\",\"namespace\":\"tenant-workshop00\"},\"spec\":{\"databases\":{\"app\":{\"roles\":{\"admin\":[\"app\"]}}},\"replicas\":2,\"resourcesPreset\":\"nano\",\"size\":\"2Gi\",\"storageClass\":\"replicated\",\"users\":{\"app\":{\"password\":\"demo\"}}}}\n"}, "creationTimestamp": "2026-08-29T01:52:04Z", "name": "demo-postgres", "namespace": "tenant-workshop00", "resourceVersion": "44057255", "uid": "c9642007-affd-4ca5-97bf-d13460b0445a"}, "spec": {"backup": {"destinationPath": "s3://bucket/path/to/folder/", "enabled": false, "endpointCA": {"key": "", "name": ""}, "endpointURL": "http://minio-gateway-service:9000", "retentionPolicy": "30d", "s3AccessKey": "", "s3CredentialsSecret": {"accessKeyIDKey": "", "name": "", "secretAccessKeyKey": ""}, "s3SecretKey": "", "schedule": "", "useSystemBucket": false}, "bootstrap": {"enabled": false, "oldName": "", "recoveryTime": "", "serverName": ""}, "databases": {"app": {"roles": {"admin": ["app"]}}}, "external": false, "postgresql": {"parameters": {"max_connections": "100"}}, "quorum": {"maxSyncReplicas": 0, "minSyncReplicas": 0}, "replicas": 2, "resources": {}, "resourcesPreset": "nano", "size": "2Gi", "storageClass": "replicated", "tls": {}, "users": {"app": {"password": "demo"}}, "version": "v18"}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T01:54:16Z", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T01:54:16Z", "message": "Helm upgrade succeeded for release tenant-workshop00/postgres-demo-postgres.v2 with chart postgres@0.0.0+ebc4944b1a9e", "reason": "UpgradeSucceeded", "status": "True", "type": "Released"}, {"lastTransitionTime": "2026-08-29T01:54:16Z", "message": "All workloads are operational", "reason": "WorkloadMonitorCheck", "status": "True", "type": "WorkloadsReady"}], "version": "0.0.0+ebc4944b1a9e"}}, {"apiVersion": "apps.cozystack.io/v1alpha1", "kind": "Kafka", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps.cozystack.io/v1alpha1\",\"kind\":\"Kafka\",\"metadata\":{\"annotations\":{},\"name\":\"demo-kafka\",\"namespace\":\"tenant-workshop00\"},\"spec\":{\"replicas\":1,\"resourcesPreset\":\"small\",\"size\":\"2Gi\",\"storageClass\":\"replicated\",\"topics\":[{\"name\":\"events\",\"partitions\":3}]}}\n"}, "creationTimestamp": "2026-08-29T01:52:04Z", "name": "demo-kafka", "namespace": "tenant-workshop00", "resourceVersion": "44061996", "uid": "4b7e3eea-6fb0-46ce-84f4-9abe4d736ea6"}, "spec": {"external": false, "kafka": {"replicas": 3, "resources": {}, "resourcesPreset": "c1.small", "size": "10Gi", "storageClass": ""}, "replicas": 1, "resourcesPreset": "small", "size": "2Gi", "storageClass": "replicated", "tls": {}, "topics": [{"name": "events", "partitions": 3}], "zookeeper": {"replicas": 3, "resources": {}, "resourcesPreset": "c1.small", "size": "5Gi", "storageClass": ""}}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T02:51:53Z", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T01:52:05Z", "message": "Helm install failed for release tenant-workshop00/kafka-demo-kafka with chart kafka@0.0.0+744a68a3a447: values don't meet the specifications of the schema(s) in the following chart(s):\nkafka:\n- at '/topics/0': missing properties 'config', 'replicas'", "reason": "InstallFailed", "status": "False", "type": "Released"}], "version": "0.0.0+744a68a3a447"}}, {"apiVersion": "apps.cozystack.io/v1alpha1", "kind": "Redis", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps.cozystack.io/v1alpha1\",\"kind\":\"Redis\",\"metadata\":{\"annotations\":{},\"name\":\"demo-redis\",\"namespace\":\"tenant-workshop00\"},\"spec\":{\"authEnabled\":true,\"replicas\":1,\"resourcesPreset\":\"nano\",\"size\":\"1Gi\",\"storageClass\":\"replicated\",\"version\":\"v8\"}}\n"}, "creationTimestamp": "2026-08-29T01:52:04Z", "name": "demo-redis", "namespace": "tenant-workshop00", "resourceVersion": "44062402", "uid": "7bd842c4-707b-437b-8979-e13ce096626f"}, "spec": {"authEnabled": true, "external": false, "replicas": 1, "resources": {}, "resourcesPreset": "nano", "size": "1Gi", "storageClass": "replicated", "version": "v8"}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T01:52:06Z", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T01:52:06Z", "message": "Helm upgrade succeeded for release tenant-workshop00/redis-demo-redis.v2 with chart redis@0.0.0+a0db0b4ba6d4", "reason": "UpgradeSucceeded", "status": "True", "type": "Released"}, {"lastTransitionTime": "2026-08-29T01:52:06Z", "message": "All workloads are operational", "reason": "WorkloadMonitorCheck", "status": "True", "type": "WorkloadsReady"}], "version": "0.0.0+a0db0b4ba6d4"}}, {"apiVersion": "apps.cozystack.io/v1alpha1", "kind": "ClickHouse", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps.cozystack.io/v1alpha1\",\"kind\":\"ClickHouse\",\"metadata\":{\"annotations\":{},\"name\":\"demo-clickhouse\",\"namespace\":\"tenant-workshop00\"},\"spec\":{\"replicas\":1,\"resourcesPreset\":\"small\",\"size\":\"2Gi\",\"storageClass\":\"replicated\"}}\n"}, "creationTimestamp": "2026-08-29T01:52:04Z", "name": "demo-clickhouse", "namespace": "tenant-workshop00", "resourceVersion": "44056001", "uid": "c312d103-95dd-4416-b846-6813bf56adf2"}, "spec": {"backup": {"cleanupStrategy": "--keep-last=3 --keep-daily=3 --keep-within-weekly=1m", "enabled": false, "endpoint": "", "resticPassword": "", "s3AccessKey": "", "s3Bucket": "s3.example.org/clickhouse-backups", "s3CredentialsSecret": {"accessKeyIDKey": "", "bucketKey": "", "endpointKey": "", "name": "", "regionKey": "", "secretAccessKeyKey": ""}, "s3PathOverride": "", "s3Region": "us-east-1", "s3SecretKey": "", "schedule": "", "useSystemBucket": false}, "clickhouseKeeper": {"enabled": true, "replicas": 3, "resourcesPreset": "t1.micro", "size": "1Gi"}, "logStorageSize": "2Gi", "logTTL": 15, "replicas": 1, "resources": {}, "resourcesPreset": "small", "shards": 1, "size": "2Gi", "storageClass": "replicated", "users": {"app": {"password": "demo"}}}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T02:23:19Z", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T02:23:19Z", "message": "Helm upgrade succeeded for release tenant-workshop00/clickhouse-demo-clickhouse.v2 with chart clickhouse@0.0.0+ae545a8ab108", "reason": "UpgradeSucceeded", "status": "True", "type": "Released"}, {"lastTransitionTime": "2026-08-29T02:23:19Z", "message": "All workloads are operational", "reason": "WorkloadMonitorCheck", "status": "True", "type": "WorkloadsReady"}], "version": "0.0.0+ae545a8ab108"}}, {"apiVersion": "apps.cozystack.io/v1alpha1", "kind": "MongoDB", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps.cozystack.io/v1alpha1\",\"kind\":\"MongoDB\",\"metadata\":{\"annotations\":{},\"name\":\"demo-mongodb\",\"namespace\":\"tenant-workshop00\"},\"spec\":{\"replicas\":1,\"resourcesPreset\":\"nano\",\"size\":\"2Gi\",\"storageClass\":\"replicated\",\"users\":{\"app\":{\"password\":\"demo\"}}}}\n"}, "creationTimestamp": "2026-08-29T01:52:05Z", "name": "demo-mongodb", "namespace": "tenant-workshop00", "resourceVersion": "44062267", "uid": "8bcc43ad-f86c-4f21-8f05-00ecb448bef1"}, "spec": {"backup": {"destinationPath": "s3://bucket/path/to/folder/", "enabled": false, "endpointURL": "http://minio-gateway-service:9000", "retentionPolicy": "30d", "s3AccessKey": "", "s3SecretKey": "", "schedule": "0 2 * * *"}, "bootstrap": {"backupName": "", "enabled": false, "recoveryTime": ""}, "databases": {}, "external": false, "replicas": 1, "resources": {}, "resourcesPreset": "nano", "sharding": false, "shardingConfig": {"configServerSize": "3Gi", "configServers": 3, "mongos": 2, "shards": [{"name": "rs0", "replicas": 3, "size": "10Gi"}]}, "size": "2Gi", "storageClass": "replicated", "users": {"app": {"password": "demo"}}, "version": "v8"}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T02:52:01Z", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T01:52:05Z", "message": "Helm install failed for release tenant-workshop00/mongodb-demo-mongodb with chart mongodb@0.0.0+19071dba5eff: execution error at (mongodb/templates/mongodb.yaml:136:8): user 'app' is not assigned to any database role in databases.*.roles", "reason": "InstallFailed", "status": "False", "type": "Released"}], "version": "0.0.0+19071dba5eff"}}, {"apiVersion": "apps.cozystack.io/v1alpha1", "kind": "NATS", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps.cozystack.io/v1alpha1\",\"kind\":\"NATS\",\"metadata\":{\"annotations\":{},\"name\":\"demo-nats\",\"namespace\":\"tenant-workshop00\"},\"spec\":{\"replicas\":1,\"resourcesPreset\":\"nano\",\"size\":\"1Gi\",\"storageClass\":\"replicated\"}}\n"}, "creationTimestamp": "2026-08-29T01:52:05Z", "name": "demo-nats", "namespace": "tenant-workshop00", "resourceVersion": "44048735", "uid": "3a1717e1-96dd-4c82-9333-da664fceb454"}, "spec": {"config": {"merge": {}, "resolver": {}}, "external": false, "jetstream": {"enabled": true, "size": "10Gi"}, "replicas": 1, "resources": {}, "resourcesPreset": "nano", "size": "1Gi", "storageClass": "replicated", "tls": {}, "users": {}}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T02:44:39Z", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T02:12:37Z", "message": "Helm upgrade failed for release tenant-workshop00/nats-demo-nats with chart nats@0.0.0+007744fb7fec: timeout waiting for: [HelmRelease/tenant-workshop00/nats-demo-nats-system status: 'InProgress']", "reason": "UpgradeFailed", "status": "False", "type": "Released"}, {"lastTransitionTime": "2026-08-29T02:44:39Z", "message": "All workloads are operational", "reason": "WorkloadMonitorCheck", "status": "True", "type": "WorkloadsReady"}], "version": "0.0.0+007744fb7fec"}}, {"apiVersion": "apps.cozystack.io/v1alpha1", "kind": "Bucket", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps.cozystack.io/v1alpha1\",\"kind\":\"Bucket\",\"metadata\":{\"annotations\":{},\"name\":\"demo-bucket\",\"namespace\":\"tenant-workshop00\"},\"spec\":{\"users\":{\"app\":{}}}}\n"}, "creationTimestamp": "2026-08-29T01:52:05Z", "name": "demo-bucket", "namespace": "tenant-workshop00", "resourceVersion": "44062208", "uid": "1df98d14-28c6-4441-bf0d-609a5e55d40d"}, "spec": {"locking": false, "storagePool": "", "users": {"app": {}}}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T01:52:26Z", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T01:52:26Z", "message": "Helm upgrade succeeded for release tenant-workshop00/bucket-demo-bucket.v2 with chart bucket@0.0.0+e6ba931dbd1c", "reason": "UpgradeSucceeded", "status": "True", "type": "Released"}, {"lastTransitionTime": "2026-08-29T01:52:26Z", "message": "All workloads are operational", "reason": "WorkloadMonitorCheck", "status": "True", "type": "WorkloadsReady"}], "version": "0.0.0+e6ba931dbd1c"}}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/namespace.json b/demo-src/overlay/apps/console/src/demo/fixtures/namespace.json new file mode 100644 index 00000000..ffe18719 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/namespace.json @@ -0,0 +1,51 @@ +{ + "apiVersion": "v1", + "kind": "Namespace", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "tenant-workshop00", + "meta.helm.sh/release-namespace": "tenant-root", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/exclude_ips": "10.244.0.1", + "ovn.kubernetes.io/logical_switch": "ovn-default" + }, + "creationTimestamp": "2026-08-29T01:50:38Z", + "labels": { + "alpha.kubevirt.io/auto-memory-limits-ratio": "1.0", + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "tenant-workshop00", + "helm.toolkit.fluxcd.io/namespace": "tenant-root", + "internal.cozystack.io/flux-shard": "shard2", + "kubernetes.io/metadata.name": "tenant-workshop00", + "namespace.cozystack.io/etcd": "tenant-root", + "namespace.cozystack.io/gateway": "", + "namespace.cozystack.io/host": "workshop00.workshop.aenix.io", + "namespace.cozystack.io/ingress": "tenant-root", + "namespace.cozystack.io/monitoring": "tenant-root", + "namespace.cozystack.io/seaweedfs": "tenant-root", + "tenant.cozystack.io/tenant-root": "", + "tenant.cozystack.io/tenant-workshop00": "" + }, + "name": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Namespace", + "name": "tenant-root", + "uid": "4c78d651-6877-4e44-99b0-bbfdfaf361ab" + } + ], + "resourceVersion": "43948056", + "uid": "6efe43c1-1733-4ee8-bc58-b48627654971" + }, + "spec": { + "finalizers": [ + "kubernetes" + ] + }, + "status": { + "phase": "Active" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/node-metrics.json b/demo-src/overlay/apps/console/src/demo/fixtures/node-metrics.json new file mode 100644 index 00000000..c3aca01f --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/node-metrics.json @@ -0,0 +1 @@ +{"kind":"NodeMetricsList","apiVersion":"metrics.k8s.io/v1beta1","metadata":{},"items":[{"metadata":{"name":"cloudpool-4cbd33a5a5c37606","creationTimestamp":"2026-08-30T06:38:55Z","labels":{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","cpu-feature.node.kubevirt.io/3dnow":"true","cpu-feature.node.kubevirt.io/3dnowext":"true","cpu-feature.node.kubevirt.io/3dnowprefetch":"true","cpu-feature.node.kubevirt.io/abm":"true","cpu-feature.node.kubevirt.io/acpi":"true","cpu-feature.node.kubevirt.io/adx":"true","cpu-feature.node.kubevirt.io/aes":"true","cpu-feature.node.kubevirt.io/apic":"true","cpu-feature.node.kubevirt.io/arat":"true","cpu-feature.node.kubevirt.io/avx":"true","cpu-feature.node.kubevirt.io/avx2":"true","cpu-feature.node.kubevirt.io/bmi1":"true","cpu-feature.node.kubevirt.io/bmi2":"true","cpu-feature.node.kubevirt.io/clflush":"true","cpu-feature.node.kubevirt.io/clflushopt":"true","cpu-feature.node.kubevirt.io/clwb":"true","cpu-feature.node.kubevirt.io/cmov":"true","cpu-feature.node.kubevirt.io/cmp_legacy":"true","cpu-feature.node.kubevirt.io/cmpccxadd":"true","cpu-feature.node.kubevirt.io/cr8legacy":"true","cpu-feature.node.kubevirt.io/cx16":"true","cpu-feature.node.kubevirt.io/cx8":"true","cpu-feature.node.kubevirt.io/de":"true","cpu-feature.node.kubevirt.io/erms":"true","cpu-feature.node.kubevirt.io/f16c":"true","cpu-feature.node.kubevirt.io/fma":"true","cpu-feature.node.kubevirt.io/fpu":"true","cpu-feature.node.kubevirt.io/fsgsbase":"true","cpu-feature.node.kubevirt.io/fsrc":"true","cpu-feature.node.kubevirt.io/fsrm":"true","cpu-feature.node.kubevirt.io/fsrs":"true","cpu-feature.node.kubevirt.io/fxsr":"true","cpu-feature.node.kubevirt.io/fzrm":"true","cpu-feature.node.kubevirt.io/hypervisor":"true","cpu-feature.node.kubevirt.io/la57":"true","cpu-feature.node.kubevirt.io/lahf_lm":"true","cpu-feature.node.kubevirt.io/lm":"true","cpu-feature.node.kubevirt.io/mca":"true","cpu-feature.node.kubevirt.io/mce":"true","cpu-feature.node.kubevirt.io/mmx":"true","cpu-feature.node.kubevirt.io/mmxext":"true","cpu-feature.node.kubevirt.io/monitor":"true","cpu-feature.node.kubevirt.io/movbe":"true","cpu-feature.node.kubevirt.io/mpx":"true","cpu-feature.node.kubevirt.io/msr":"true","cpu-feature.node.kubevirt.io/mtrr":"true","cpu-feature.node.kubevirt.io/no-nested-data-bp":"true","cpu-feature.node.kubevirt.io/npt":"true","cpu-feature.node.kubevirt.io/null-sel-clr-base":"true","cpu-feature.node.kubevirt.io/nx":"true","cpu-feature.node.kubevirt.io/pae":"true","cpu-feature.node.kubevirt.io/pat":"true","cpu-feature.node.kubevirt.io/pclmuldq":"true","cpu-feature.node.kubevirt.io/pdpe1gb":"true","cpu-feature.node.kubevirt.io/pge":"true","cpu-feature.node.kubevirt.io/pks":"true","cpu-feature.node.kubevirt.io/pku":"true","cpu-feature.node.kubevirt.io/pni":"true","cpu-feature.node.kubevirt.io/popcnt":"true","cpu-feature.node.kubevirt.io/pse":"true","cpu-feature.node.kubevirt.io/pse36":"true","cpu-feature.node.kubevirt.io/rdpid":"true","cpu-feature.node.kubevirt.io/rdrand":"true","cpu-feature.node.kubevirt.io/rdseed":"true","cpu-feature.node.kubevirt.io/rdtscp":"true","cpu-feature.node.kubevirt.io/sep":"true","cpu-feature.node.kubevirt.io/sha-ni":"true","cpu-feature.node.kubevirt.io/smap":"true","cpu-feature.node.kubevirt.io/smep":"true","cpu-feature.node.kubevirt.io/ss":"true","cpu-feature.node.kubevirt.io/sse":"true","cpu-feature.node.kubevirt.io/sse2":"true","cpu-feature.node.kubevirt.io/sse4.1":"true","cpu-feature.node.kubevirt.io/sse4.2":"true","cpu-feature.node.kubevirt.io/sse4a":"true","cpu-feature.node.kubevirt.io/ssse3":"true","cpu-feature.node.kubevirt.io/svm":"true","cpu-feature.node.kubevirt.io/svme-addr-chk":"true","cpu-feature.node.kubevirt.io/syscall":"true","cpu-feature.node.kubevirt.io/tsc":"true","cpu-feature.node.kubevirt.io/umip":"true","cpu-feature.node.kubevirt.io/vaes":"true","cpu-feature.node.kubevirt.io/vgif":"true","cpu-feature.node.kubevirt.io/wbnoinvd":"true","cpu-feature.node.kubevirt.io/x2apic":"true","cpu-feature.node.kubevirt.io/xgetbv1":"true","cpu-feature.node.kubevirt.io/xsave":"true","cpu-feature.node.kubevirt.io/xsaveerptr":"true","cpu-feature.node.kubevirt.io/xsaveopt":"true","cpu-model-migration.node.kubevirt.io/Broadwell":"true","cpu-model-migration.node.kubevirt.io/Broadwell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v1":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v2":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v3":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Cooperlake":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v1":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton":"true","cpu-model-migration.node.kubevirt.io/Denverton-v1":"true","cpu-model-migration.node.kubevirt.io/Denverton-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton-v3":"true","cpu-model-migration.node.kubevirt.io/Dhyana":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v1":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-IBPB":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4":"true","cpu-model-migration.node.kubevirt.io/EPYC-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-v4":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v1":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell":"true","cpu-model-migration.node.kubevirt.io/Haswell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-v1":"true","cpu-model-migration.node.kubevirt.io/Haswell-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell-v3":"true","cpu-model-migration.node.kubevirt.io/Haswell-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v6":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v7":"true","cpu-model-migration.node.kubevirt.io/IvyBridge":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/KnightsMill":"true","cpu-model-migration.node.kubevirt.io/KnightsMill-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem":"true","cpu-model-migration.node.kubevirt.io/Nehalem-IBRS":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v2":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5-v1":"true","cpu-model-migration.node.kubevirt.io/Penryn":"true","cpu-model-migration.node.kubevirt.io/Penryn-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v1":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v3":"true","cpu-model-migration.node.kubevirt.io/SierraForest":"true","cpu-model-migration.node.kubevirt.io/SierraForest-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Snowridge":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v1":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v2":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v3":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v4":"true","cpu-model-migration.node.kubevirt.io/Westmere":"true","cpu-model-migration.node.kubevirt.io/Westmere-IBRS":"true","cpu-model-migration.node.kubevirt.io/Westmere-v1":"true","cpu-model-migration.node.kubevirt.io/Westmere-v2":"true","cpu-model.node.kubevirt.io/Nehalem":"true","cpu-model.node.kubevirt.io/Nehalem-v1":"true","cpu-model.node.kubevirt.io/Penryn":"true","cpu-model.node.kubevirt.io/Penryn-v1":"true","cpu-model.node.kubevirt.io/Westmere":"true","cpu-model.node.kubevirt.io/Westmere-v1":"true","cpu-vendor.node.kubevirt.io/AMD":"true","cpumanager":"true","extensions.talos.dev/drbd":"9.2.16-v1.12.6","extensions.talos.dev/modules.dep":"6.18.18-talos","extensions.talos.dev/qemu-guest-agent":"10.2.0","extensions.talos.dev/zfs":"2.4.1-v1.12.6","host-model-cpu.node.kubevirt.io/EPYC":"true","host-model-required-features.node.kubevirt.io/3dnow":"true","host-model-required-features.node.kubevirt.io/3dnowext":"true","host-model-required-features.node.kubevirt.io/acpi":"true","host-model-required-features.node.kubevirt.io/clwb":"true","host-model-required-features.node.kubevirt.io/cmp_legacy":"true","host-model-required-features.node.kubevirt.io/cmpccxadd":"true","host-model-required-features.node.kubevirt.io/erms":"true","host-model-required-features.node.kubevirt.io/fsrc":"true","host-model-required-features.node.kubevirt.io/fsrm":"true","host-model-required-features.node.kubevirt.io/fsrs":"true","host-model-required-features.node.kubevirt.io/fzrm":"true","host-model-required-features.node.kubevirt.io/hypervisor":"true","host-model-required-features.node.kubevirt.io/la57":"true","host-model-required-features.node.kubevirt.io/monitor":"true","host-model-required-features.node.kubevirt.io/mpx":"true","host-model-required-features.node.kubevirt.io/no-nested-data-bp":"true","host-model-required-features.node.kubevirt.io/npt":"true","host-model-required-features.node.kubevirt.io/null-sel-clr-base":"true","host-model-required-features.node.kubevirt.io/pks":"true","host-model-required-features.node.kubevirt.io/pku":"true","host-model-required-features.node.kubevirt.io/rdpid":"true","host-model-required-features.node.kubevirt.io/ss":"true","host-model-required-features.node.kubevirt.io/svme-addr-chk":"true","host-model-required-features.node.kubevirt.io/umip":"true","host-model-required-features.node.kubevirt.io/vaes":"true","host-model-required-features.node.kubevirt.io/vgif":"true","host-model-required-features.node.kubevirt.io/wbnoinvd":"true","host-model-required-features.node.kubevirt.io/x2apic":"true","host-model-required-features.node.kubevirt.io/xsaveerptr":"true","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"cloudpool-4cbd33a5a5c37606","kubernetes.io/os":"linux","kubevirt.io/cpumanager":"true","kubevirt.io/ksm-enabled":"false","kubevirt.io/schedulable":"true","linbit.com/hostname":"cloudpool-4cbd33a5a5c37606","machine-type.node.kubevirt.io/pc":"true","machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.1.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.3.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.5.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.8.0":"true","machine-type.node.kubevirt.io/q35":"true"}},"timestamp":"2026-08-30T06:38:49Z","window":"10.116s","usage":{"cpu":"1093712930n","memory":"4138644Ki"}},{"metadata":{"name":"cloudpool-4e655bd57ef87f15","creationTimestamp":"2026-08-30T06:38:55Z","labels":{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","cpu-feature.node.kubevirt.io/3dnow":"true","cpu-feature.node.kubevirt.io/3dnowext":"true","cpu-feature.node.kubevirt.io/3dnowprefetch":"true","cpu-feature.node.kubevirt.io/abm":"true","cpu-feature.node.kubevirt.io/acpi":"true","cpu-feature.node.kubevirt.io/adx":"true","cpu-feature.node.kubevirt.io/aes":"true","cpu-feature.node.kubevirt.io/apic":"true","cpu-feature.node.kubevirt.io/arat":"true","cpu-feature.node.kubevirt.io/avx":"true","cpu-feature.node.kubevirt.io/avx2":"true","cpu-feature.node.kubevirt.io/bmi1":"true","cpu-feature.node.kubevirt.io/bmi2":"true","cpu-feature.node.kubevirt.io/clflush":"true","cpu-feature.node.kubevirt.io/clflushopt":"true","cpu-feature.node.kubevirt.io/clwb":"true","cpu-feature.node.kubevirt.io/cmov":"true","cpu-feature.node.kubevirt.io/cmp_legacy":"true","cpu-feature.node.kubevirt.io/cmpccxadd":"true","cpu-feature.node.kubevirt.io/cr8legacy":"true","cpu-feature.node.kubevirt.io/cx16":"true","cpu-feature.node.kubevirt.io/cx8":"true","cpu-feature.node.kubevirt.io/de":"true","cpu-feature.node.kubevirt.io/erms":"true","cpu-feature.node.kubevirt.io/f16c":"true","cpu-feature.node.kubevirt.io/fma":"true","cpu-feature.node.kubevirt.io/fpu":"true","cpu-feature.node.kubevirt.io/fsgsbase":"true","cpu-feature.node.kubevirt.io/fsrc":"true","cpu-feature.node.kubevirt.io/fsrm":"true","cpu-feature.node.kubevirt.io/fsrs":"true","cpu-feature.node.kubevirt.io/fxsr":"true","cpu-feature.node.kubevirt.io/fzrm":"true","cpu-feature.node.kubevirt.io/hypervisor":"true","cpu-feature.node.kubevirt.io/la57":"true","cpu-feature.node.kubevirt.io/lahf_lm":"true","cpu-feature.node.kubevirt.io/lm":"true","cpu-feature.node.kubevirt.io/mca":"true","cpu-feature.node.kubevirt.io/mce":"true","cpu-feature.node.kubevirt.io/mmx":"true","cpu-feature.node.kubevirt.io/mmxext":"true","cpu-feature.node.kubevirt.io/monitor":"true","cpu-feature.node.kubevirt.io/movbe":"true","cpu-feature.node.kubevirt.io/mpx":"true","cpu-feature.node.kubevirt.io/msr":"true","cpu-feature.node.kubevirt.io/mtrr":"true","cpu-feature.node.kubevirt.io/no-nested-data-bp":"true","cpu-feature.node.kubevirt.io/npt":"true","cpu-feature.node.kubevirt.io/null-sel-clr-base":"true","cpu-feature.node.kubevirt.io/nx":"true","cpu-feature.node.kubevirt.io/pae":"true","cpu-feature.node.kubevirt.io/pat":"true","cpu-feature.node.kubevirt.io/pclmuldq":"true","cpu-feature.node.kubevirt.io/pdpe1gb":"true","cpu-feature.node.kubevirt.io/pge":"true","cpu-feature.node.kubevirt.io/pks":"true","cpu-feature.node.kubevirt.io/pku":"true","cpu-feature.node.kubevirt.io/pni":"true","cpu-feature.node.kubevirt.io/popcnt":"true","cpu-feature.node.kubevirt.io/pse":"true","cpu-feature.node.kubevirt.io/pse36":"true","cpu-feature.node.kubevirt.io/rdpid":"true","cpu-feature.node.kubevirt.io/rdrand":"true","cpu-feature.node.kubevirt.io/rdseed":"true","cpu-feature.node.kubevirt.io/rdtscp":"true","cpu-feature.node.kubevirt.io/sep":"true","cpu-feature.node.kubevirt.io/sha-ni":"true","cpu-feature.node.kubevirt.io/smap":"true","cpu-feature.node.kubevirt.io/smep":"true","cpu-feature.node.kubevirt.io/ss":"true","cpu-feature.node.kubevirt.io/sse":"true","cpu-feature.node.kubevirt.io/sse2":"true","cpu-feature.node.kubevirt.io/sse4.1":"true","cpu-feature.node.kubevirt.io/sse4.2":"true","cpu-feature.node.kubevirt.io/sse4a":"true","cpu-feature.node.kubevirt.io/ssse3":"true","cpu-feature.node.kubevirt.io/svm":"true","cpu-feature.node.kubevirt.io/svme-addr-chk":"true","cpu-feature.node.kubevirt.io/syscall":"true","cpu-feature.node.kubevirt.io/tsc":"true","cpu-feature.node.kubevirt.io/umip":"true","cpu-feature.node.kubevirt.io/vaes":"true","cpu-feature.node.kubevirt.io/vgif":"true","cpu-feature.node.kubevirt.io/wbnoinvd":"true","cpu-feature.node.kubevirt.io/x2apic":"true","cpu-feature.node.kubevirt.io/xgetbv1":"true","cpu-feature.node.kubevirt.io/xsave":"true","cpu-feature.node.kubevirt.io/xsaveerptr":"true","cpu-feature.node.kubevirt.io/xsaveopt":"true","cpu-model-migration.node.kubevirt.io/Broadwell":"true","cpu-model-migration.node.kubevirt.io/Broadwell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v1":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v2":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v3":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Cooperlake":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v1":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton":"true","cpu-model-migration.node.kubevirt.io/Denverton-v1":"true","cpu-model-migration.node.kubevirt.io/Denverton-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton-v3":"true","cpu-model-migration.node.kubevirt.io/Dhyana":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v1":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-IBPB":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4":"true","cpu-model-migration.node.kubevirt.io/EPYC-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-v4":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v1":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell":"true","cpu-model-migration.node.kubevirt.io/Haswell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-v1":"true","cpu-model-migration.node.kubevirt.io/Haswell-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell-v3":"true","cpu-model-migration.node.kubevirt.io/Haswell-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v6":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v7":"true","cpu-model-migration.node.kubevirt.io/IvyBridge":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/KnightsMill":"true","cpu-model-migration.node.kubevirt.io/KnightsMill-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem":"true","cpu-model-migration.node.kubevirt.io/Nehalem-IBRS":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v2":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5-v1":"true","cpu-model-migration.node.kubevirt.io/Penryn":"true","cpu-model-migration.node.kubevirt.io/Penryn-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v1":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v3":"true","cpu-model-migration.node.kubevirt.io/SierraForest":"true","cpu-model-migration.node.kubevirt.io/SierraForest-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Snowridge":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v1":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v2":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v3":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v4":"true","cpu-model-migration.node.kubevirt.io/Westmere":"true","cpu-model-migration.node.kubevirt.io/Westmere-IBRS":"true","cpu-model-migration.node.kubevirt.io/Westmere-v1":"true","cpu-model-migration.node.kubevirt.io/Westmere-v2":"true","cpu-model.node.kubevirt.io/Nehalem":"true","cpu-model.node.kubevirt.io/Nehalem-v1":"true","cpu-model.node.kubevirt.io/Penryn":"true","cpu-model.node.kubevirt.io/Penryn-v1":"true","cpu-model.node.kubevirt.io/Westmere":"true","cpu-model.node.kubevirt.io/Westmere-v1":"true","cpu-vendor.node.kubevirt.io/AMD":"true","cpumanager":"true","extensions.talos.dev/drbd":"9.2.16-v1.12.6","extensions.talos.dev/modules.dep":"6.18.18-talos","extensions.talos.dev/qemu-guest-agent":"10.2.0","extensions.talos.dev/zfs":"2.4.1-v1.12.6","host-model-cpu.node.kubevirt.io/EPYC":"true","host-model-required-features.node.kubevirt.io/3dnow":"true","host-model-required-features.node.kubevirt.io/3dnowext":"true","host-model-required-features.node.kubevirt.io/acpi":"true","host-model-required-features.node.kubevirt.io/clwb":"true","host-model-required-features.node.kubevirt.io/cmp_legacy":"true","host-model-required-features.node.kubevirt.io/cmpccxadd":"true","host-model-required-features.node.kubevirt.io/erms":"true","host-model-required-features.node.kubevirt.io/fsrc":"true","host-model-required-features.node.kubevirt.io/fsrm":"true","host-model-required-features.node.kubevirt.io/fsrs":"true","host-model-required-features.node.kubevirt.io/fzrm":"true","host-model-required-features.node.kubevirt.io/hypervisor":"true","host-model-required-features.node.kubevirt.io/la57":"true","host-model-required-features.node.kubevirt.io/monitor":"true","host-model-required-features.node.kubevirt.io/mpx":"true","host-model-required-features.node.kubevirt.io/no-nested-data-bp":"true","host-model-required-features.node.kubevirt.io/npt":"true","host-model-required-features.node.kubevirt.io/null-sel-clr-base":"true","host-model-required-features.node.kubevirt.io/pks":"true","host-model-required-features.node.kubevirt.io/pku":"true","host-model-required-features.node.kubevirt.io/rdpid":"true","host-model-required-features.node.kubevirt.io/ss":"true","host-model-required-features.node.kubevirt.io/svme-addr-chk":"true","host-model-required-features.node.kubevirt.io/umip":"true","host-model-required-features.node.kubevirt.io/vaes":"true","host-model-required-features.node.kubevirt.io/vgif":"true","host-model-required-features.node.kubevirt.io/wbnoinvd":"true","host-model-required-features.node.kubevirt.io/x2apic":"true","host-model-required-features.node.kubevirt.io/xsaveerptr":"true","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"cloudpool-4e655bd57ef87f15","kubernetes.io/os":"linux","kubevirt.io/cpumanager":"true","kubevirt.io/ksm-enabled":"false","kubevirt.io/schedulable":"true","linbit.com/hostname":"cloudpool-4e655bd57ef87f15","machine-type.node.kubevirt.io/pc":"true","machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.1.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.3.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.5.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.8.0":"true","machine-type.node.kubevirt.io/q35":"true"}},"timestamp":"2026-08-30T06:38:45Z","window":"10.161s","usage":{"cpu":"848341698n","memory":"3648772Ki"}},{"metadata":{"name":"ws1","creationTimestamp":"2026-08-30T06:38:55Z","labels":{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","cpu-feature.node.kubevirt.io/3dnowprefetch":"true","cpu-feature.node.kubevirt.io/abm":"true","cpu-feature.node.kubevirt.io/adx":"true","cpu-feature.node.kubevirt.io/aes":"true","cpu-feature.node.kubevirt.io/amd-psfd":"true","cpu-feature.node.kubevirt.io/amd-ssbd":"true","cpu-feature.node.kubevirt.io/amd-stibp":"true","cpu-feature.node.kubevirt.io/apic":"true","cpu-feature.node.kubevirt.io/arat":"true","cpu-feature.node.kubevirt.io/auto-ibrs":"true","cpu-feature.node.kubevirt.io/avx":"true","cpu-feature.node.kubevirt.io/avx2":"true","cpu-feature.node.kubevirt.io/avx512-bf16":"true","cpu-feature.node.kubevirt.io/avx512-vpopcntdq":"true","cpu-feature.node.kubevirt.io/avx512bitalg":"true","cpu-feature.node.kubevirt.io/avx512bw":"true","cpu-feature.node.kubevirt.io/avx512cd":"true","cpu-feature.node.kubevirt.io/avx512dq":"true","cpu-feature.node.kubevirt.io/avx512f":"true","cpu-feature.node.kubevirt.io/avx512ifma":"true","cpu-feature.node.kubevirt.io/avx512vbmi":"true","cpu-feature.node.kubevirt.io/avx512vbmi2":"true","cpu-feature.node.kubevirt.io/avx512vl":"true","cpu-feature.node.kubevirt.io/avx512vnni":"true","cpu-feature.node.kubevirt.io/bmi1":"true","cpu-feature.node.kubevirt.io/bmi2":"true","cpu-feature.node.kubevirt.io/clflush":"true","cpu-feature.node.kubevirt.io/clflushopt":"true","cpu-feature.node.kubevirt.io/clwb":"true","cpu-feature.node.kubevirt.io/clzero":"true","cpu-feature.node.kubevirt.io/cmov":"true","cpu-feature.node.kubevirt.io/cmp_legacy":"true","cpu-feature.node.kubevirt.io/cr8legacy":"true","cpu-feature.node.kubevirt.io/cx16":"true","cpu-feature.node.kubevirt.io/cx8":"true","cpu-feature.node.kubevirt.io/de":"true","cpu-feature.node.kubevirt.io/erms":"true","cpu-feature.node.kubevirt.io/f16c":"true","cpu-feature.node.kubevirt.io/flush-l1d":"true","cpu-feature.node.kubevirt.io/flushbyasid":"true","cpu-feature.node.kubevirt.io/fma":"true","cpu-feature.node.kubevirt.io/fpu":"true","cpu-feature.node.kubevirt.io/fsgsbase":"true","cpu-feature.node.kubevirt.io/fsrm":"true","cpu-feature.node.kubevirt.io/fxsr":"true","cpu-feature.node.kubevirt.io/fxsr_opt":"true","cpu-feature.node.kubevirt.io/gfni":"true","cpu-feature.node.kubevirt.io/hypervisor":"true","cpu-feature.node.kubevirt.io/ibpb":"true","cpu-feature.node.kubevirt.io/ibpb-brtype":"true","cpu-feature.node.kubevirt.io/ibrs":"true","cpu-feature.node.kubevirt.io/invpcid":"true","cpu-feature.node.kubevirt.io/invtsc":"true","cpu-feature.node.kubevirt.io/la57":"true","cpu-feature.node.kubevirt.io/lahf_lm":"true","cpu-feature.node.kubevirt.io/lbrv":"true","cpu-feature.node.kubevirt.io/lfence-always-serializing":"true","cpu-feature.node.kubevirt.io/lm":"true","cpu-feature.node.kubevirt.io/mca":"true","cpu-feature.node.kubevirt.io/mce":"true","cpu-feature.node.kubevirt.io/misalignsse":"true","cpu-feature.node.kubevirt.io/mmx":"true","cpu-feature.node.kubevirt.io/mmxext":"true","cpu-feature.node.kubevirt.io/movbe":"true","cpu-feature.node.kubevirt.io/msr":"true","cpu-feature.node.kubevirt.io/mtrr":"true","cpu-feature.node.kubevirt.io/no-nested-data-bp":"true","cpu-feature.node.kubevirt.io/npt":"true","cpu-feature.node.kubevirt.io/nrip-save":"true","cpu-feature.node.kubevirt.io/null-sel-clr-base":"true","cpu-feature.node.kubevirt.io/nx":"true","cpu-feature.node.kubevirt.io/osvw":"true","cpu-feature.node.kubevirt.io/overflow-recov":"true","cpu-feature.node.kubevirt.io/pae":"true","cpu-feature.node.kubevirt.io/pat":"true","cpu-feature.node.kubevirt.io/pause-filter":"true","cpu-feature.node.kubevirt.io/pcid":"true","cpu-feature.node.kubevirt.io/pclmuldq":"true","cpu-feature.node.kubevirt.io/pdpe1gb":"true","cpu-feature.node.kubevirt.io/perfctr_core":"true","cpu-feature.node.kubevirt.io/perfmon-v2":"true","cpu-feature.node.kubevirt.io/pfthreshold":"true","cpu-feature.node.kubevirt.io/pge":"true","cpu-feature.node.kubevirt.io/pku":"true","cpu-feature.node.kubevirt.io/pni":"true","cpu-feature.node.kubevirt.io/popcnt":"true","cpu-feature.node.kubevirt.io/pse":"true","cpu-feature.node.kubevirt.io/pse36":"true","cpu-feature.node.kubevirt.io/rdpid":"true","cpu-feature.node.kubevirt.io/rdrand":"true","cpu-feature.node.kubevirt.io/rdseed":"true","cpu-feature.node.kubevirt.io/rdtscp":"true","cpu-feature.node.kubevirt.io/sbpb":"true","cpu-feature.node.kubevirt.io/sep":"true","cpu-feature.node.kubevirt.io/sha-ni":"true","cpu-feature.node.kubevirt.io/smap":"true","cpu-feature.node.kubevirt.io/smep":"true","cpu-feature.node.kubevirt.io/spec-ctrl":"true","cpu-feature.node.kubevirt.io/ssbd":"true","cpu-feature.node.kubevirt.io/sse":"true","cpu-feature.node.kubevirt.io/sse2":"true","cpu-feature.node.kubevirt.io/sse4.1":"true","cpu-feature.node.kubevirt.io/sse4.2":"true","cpu-feature.node.kubevirt.io/sse4a":"true","cpu-feature.node.kubevirt.io/ssse3":"true","cpu-feature.node.kubevirt.io/stibp":"true","cpu-feature.node.kubevirt.io/stibp-always-on":"true","cpu-feature.node.kubevirt.io/succor":"true","cpu-feature.node.kubevirt.io/svm":"true","cpu-feature.node.kubevirt.io/svme-addr-chk":"true","cpu-feature.node.kubevirt.io/syscall":"true","cpu-feature.node.kubevirt.io/tsc":"true","cpu-feature.node.kubevirt.io/tsc-deadline":"true","cpu-feature.node.kubevirt.io/tsc-scale":"true","cpu-feature.node.kubevirt.io/tsc_adjust":"true","cpu-feature.node.kubevirt.io/umip":"true","cpu-feature.node.kubevirt.io/v-vmsave-vmload":"true","cpu-feature.node.kubevirt.io/vaes":"true","cpu-feature.node.kubevirt.io/vgif":"true","cpu-feature.node.kubevirt.io/virt-ssbd":"true","cpu-feature.node.kubevirt.io/vmcb-clean":"true","cpu-feature.node.kubevirt.io/vme":"true","cpu-feature.node.kubevirt.io/vnmi":"true","cpu-feature.node.kubevirt.io/vpclmulqdq":"true","cpu-feature.node.kubevirt.io/wbnoinvd":"true","cpu-feature.node.kubevirt.io/x2apic":"true","cpu-feature.node.kubevirt.io/xgetbv1":"true","cpu-feature.node.kubevirt.io/xsave":"true","cpu-feature.node.kubevirt.io/xsavec":"true","cpu-feature.node.kubevirt.io/xsaveerptr":"true","cpu-feature.node.kubevirt.io/xsaveopt":"true","cpu-feature.node.kubevirt.io/xsaves":"true","cpu-model-migration.node.kubevirt.io/Broadwell":"true","cpu-model-migration.node.kubevirt.io/Broadwell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v1":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v2":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v3":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Cooperlake":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v1":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton":"true","cpu-model-migration.node.kubevirt.io/Denverton-v1":"true","cpu-model-migration.node.kubevirt.io/Denverton-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton-v3":"true","cpu-model-migration.node.kubevirt.io/Dhyana":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v1":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-IBPB":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4":"true","cpu-model-migration.node.kubevirt.io/EPYC-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-v4":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v1":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell":"true","cpu-model-migration.node.kubevirt.io/Haswell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-v1":"true","cpu-model-migration.node.kubevirt.io/Haswell-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell-v3":"true","cpu-model-migration.node.kubevirt.io/Haswell-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v6":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v7":"true","cpu-model-migration.node.kubevirt.io/IvyBridge":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/KnightsMill":"true","cpu-model-migration.node.kubevirt.io/KnightsMill-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem":"true","cpu-model-migration.node.kubevirt.io/Nehalem-IBRS":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v2":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5-v1":"true","cpu-model-migration.node.kubevirt.io/Penryn":"true","cpu-model-migration.node.kubevirt.io/Penryn-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v1":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v3":"true","cpu-model-migration.node.kubevirt.io/SierraForest":"true","cpu-model-migration.node.kubevirt.io/SierraForest-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Snowridge":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v1":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v2":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v3":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v4":"true","cpu-model-migration.node.kubevirt.io/Westmere":"true","cpu-model-migration.node.kubevirt.io/Westmere-IBRS":"true","cpu-model-migration.node.kubevirt.io/Westmere-v1":"true","cpu-model-migration.node.kubevirt.io/Westmere-v2":"true","cpu-model.node.kubevirt.io/Broadwell-noTSX":"true","cpu-model.node.kubevirt.io/Broadwell-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Broadwell-v2":"true","cpu-model.node.kubevirt.io/Broadwell-v4":"true","cpu-model.node.kubevirt.io/Denverton-v2":"true","cpu-model.node.kubevirt.io/Denverton-v3":"true","cpu-model.node.kubevirt.io/Dhyana":"true","cpu-model.node.kubevirt.io/Dhyana-v1":"true","cpu-model.node.kubevirt.io/Dhyana-v2":"true","cpu-model.node.kubevirt.io/EPYC":"true","cpu-model.node.kubevirt.io/EPYC-Genoa":"true","cpu-model.node.kubevirt.io/EPYC-Genoa-v1":"true","cpu-model.node.kubevirt.io/EPYC-IBPB":"true","cpu-model.node.kubevirt.io/EPYC-Milan":"true","cpu-model.node.kubevirt.io/EPYC-Milan-v1":"true","cpu-model.node.kubevirt.io/EPYC-Milan-v2":"true","cpu-model.node.kubevirt.io/EPYC-Rome":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v1":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v2":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v3":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v4":"true","cpu-model.node.kubevirt.io/EPYC-v1":"true","cpu-model.node.kubevirt.io/EPYC-v2":"true","cpu-model.node.kubevirt.io/EPYC-v3":"true","cpu-model.node.kubevirt.io/EPYC-v4":"true","cpu-model.node.kubevirt.io/Haswell-noTSX":"true","cpu-model.node.kubevirt.io/Haswell-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Haswell-v2":"true","cpu-model.node.kubevirt.io/Haswell-v4":"true","cpu-model.node.kubevirt.io/Icelake-Server-noTSX":"true","cpu-model.node.kubevirt.io/Icelake-Server-v2":"true","cpu-model.node.kubevirt.io/IvyBridge":"true","cpu-model.node.kubevirt.io/IvyBridge-IBRS":"true","cpu-model.node.kubevirt.io/IvyBridge-v1":"true","cpu-model.node.kubevirt.io/IvyBridge-v2":"true","cpu-model.node.kubevirt.io/Nehalem":"true","cpu-model.node.kubevirt.io/Nehalem-IBRS":"true","cpu-model.node.kubevirt.io/Nehalem-v1":"true","cpu-model.node.kubevirt.io/Nehalem-v2":"true","cpu-model.node.kubevirt.io/Opteron_G3":"true","cpu-model.node.kubevirt.io/Opteron_G3-v1":"true","cpu-model.node.kubevirt.io/Penryn":"true","cpu-model.node.kubevirt.io/Penryn-v1":"true","cpu-model.node.kubevirt.io/SandyBridge":"true","cpu-model.node.kubevirt.io/SandyBridge-IBRS":"true","cpu-model.node.kubevirt.io/SandyBridge-v1":"true","cpu-model.node.kubevirt.io/SandyBridge-v2":"true","cpu-model.node.kubevirt.io/Skylake-Client-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Skylake-Client-v3":"true","cpu-model.node.kubevirt.io/Skylake-Client-v4":"true","cpu-model.node.kubevirt.io/Skylake-Server-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Skylake-Server-v3":"true","cpu-model.node.kubevirt.io/Skylake-Server-v4":"true","cpu-model.node.kubevirt.io/Skylake-Server-v5":"true","cpu-model.node.kubevirt.io/Westmere":"true","cpu-model.node.kubevirt.io/Westmere-IBRS":"true","cpu-model.node.kubevirt.io/Westmere-v1":"true","cpu-model.node.kubevirt.io/Westmere-v2":"true","cpu-timer.node.kubevirt.io/tsc-frequency":"2749998000","cpu-timer.node.kubevirt.io/tsc-scalable":"true","cpu-vendor.node.kubevirt.io/AMD":"true","cpumanager":"true","extensions.talos.dev/amd-ucode":"20260309","extensions.talos.dev/amdgpu":"20260309-v1.12.6","extensions.talos.dev/bnx2-bnx2x":"20260309","extensions.talos.dev/drbd":"9.2.16-v1.12.6","extensions.talos.dev/i915":"20260309-v1.12.6","extensions.talos.dev/intel-ice-firmware":"20260309","extensions.talos.dev/intel-ucode":"20260227","extensions.talos.dev/modules.dep":"6.18.18-talos","extensions.talos.dev/qlogic-firmware":"20260309","extensions.talos.dev/zfs":"2.4.1-v1.12.6","host-model-cpu.node.kubevirt.io/EPYC-Genoa":"true","host-model-required-features.node.kubevirt.io/cmp_legacy":"true","host-model-required-features.node.kubevirt.io/flush-l1d":"true","host-model-required-features.node.kubevirt.io/flushbyasid":"true","host-model-required-features.node.kubevirt.io/hypervisor":"true","host-model-required-features.node.kubevirt.io/ibpb-brtype":"true","host-model-required-features.node.kubevirt.io/invtsc":"true","host-model-required-features.node.kubevirt.io/lbrv":"true","host-model-required-features.node.kubevirt.io/overflow-recov":"true","host-model-required-features.node.kubevirt.io/pause-filter":"true","host-model-required-features.node.kubevirt.io/perfmon-v2":"true","host-model-required-features.node.kubevirt.io/pfthreshold":"true","host-model-required-features.node.kubevirt.io/sbpb":"true","host-model-required-features.node.kubevirt.io/spec-ctrl":"true","host-model-required-features.node.kubevirt.io/ssbd":"true","host-model-required-features.node.kubevirt.io/stibp":"true","host-model-required-features.node.kubevirt.io/succor":"true","host-model-required-features.node.kubevirt.io/tsc-deadline":"true","host-model-required-features.node.kubevirt.io/tsc-scale":"true","host-model-required-features.node.kubevirt.io/tsc_adjust":"true","host-model-required-features.node.kubevirt.io/v-vmsave-vmload":"true","host-model-required-features.node.kubevirt.io/vgif":"true","host-model-required-features.node.kubevirt.io/virt-ssbd":"true","host-model-required-features.node.kubevirt.io/vmcb-clean":"true","host-model-required-features.node.kubevirt.io/x2apic":"true","hyperv.node.kubevirt.io/base":"true","hyperv.node.kubevirt.io/frequencies":"true","hyperv.node.kubevirt.io/ipi":"true","hyperv.node.kubevirt.io/reenlightenment":"true","hyperv.node.kubevirt.io/reset":"true","hyperv.node.kubevirt.io/runtime":"true","hyperv.node.kubevirt.io/synic":"true","hyperv.node.kubevirt.io/synic2":"true","hyperv.node.kubevirt.io/synictimer":"true","hyperv.node.kubevirt.io/time":"true","hyperv.node.kubevirt.io/tlbflush":"true","hyperv.node.kubevirt.io/vpindex":"true","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"ws1","kubernetes.io/os":"linux","kubevirt.io/cpumanager":"true","kubevirt.io/ksm-enabled":"false","kubevirt.io/schedulable":"true","linbit.com/hostname":"ws1","machine-type.node.kubevirt.io/pc":"true","machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.1.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.3.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.5.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.8.0":"true","machine-type.node.kubevirt.io/q35":"true","node-role.kubernetes.io/control-plane":"","scheduling.node.kubevirt.io/tsc-frequency-2749998000":"true"}},"timestamp":"2026-08-30T06:38:47Z","window":"10.174s","usage":{"cpu":"3448791035n","memory":"53373052Ki"}},{"metadata":{"name":"ws2","creationTimestamp":"2026-08-30T06:38:55Z","labels":{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","cpu-feature.node.kubevirt.io/3dnowprefetch":"true","cpu-feature.node.kubevirt.io/abm":"true","cpu-feature.node.kubevirt.io/adx":"true","cpu-feature.node.kubevirt.io/aes":"true","cpu-feature.node.kubevirt.io/amd-psfd":"true","cpu-feature.node.kubevirt.io/amd-ssbd":"true","cpu-feature.node.kubevirt.io/amd-stibp":"true","cpu-feature.node.kubevirt.io/apic":"true","cpu-feature.node.kubevirt.io/arat":"true","cpu-feature.node.kubevirt.io/auto-ibrs":"true","cpu-feature.node.kubevirt.io/avx":"true","cpu-feature.node.kubevirt.io/avx2":"true","cpu-feature.node.kubevirt.io/avx512-bf16":"true","cpu-feature.node.kubevirt.io/avx512-vpopcntdq":"true","cpu-feature.node.kubevirt.io/avx512bitalg":"true","cpu-feature.node.kubevirt.io/avx512bw":"true","cpu-feature.node.kubevirt.io/avx512cd":"true","cpu-feature.node.kubevirt.io/avx512dq":"true","cpu-feature.node.kubevirt.io/avx512f":"true","cpu-feature.node.kubevirt.io/avx512ifma":"true","cpu-feature.node.kubevirt.io/avx512vbmi":"true","cpu-feature.node.kubevirt.io/avx512vbmi2":"true","cpu-feature.node.kubevirt.io/avx512vl":"true","cpu-feature.node.kubevirt.io/avx512vnni":"true","cpu-feature.node.kubevirt.io/bmi1":"true","cpu-feature.node.kubevirt.io/bmi2":"true","cpu-feature.node.kubevirt.io/clflush":"true","cpu-feature.node.kubevirt.io/clflushopt":"true","cpu-feature.node.kubevirt.io/clwb":"true","cpu-feature.node.kubevirt.io/clzero":"true","cpu-feature.node.kubevirt.io/cmov":"true","cpu-feature.node.kubevirt.io/cmp_legacy":"true","cpu-feature.node.kubevirt.io/cr8legacy":"true","cpu-feature.node.kubevirt.io/cx16":"true","cpu-feature.node.kubevirt.io/cx8":"true","cpu-feature.node.kubevirt.io/de":"true","cpu-feature.node.kubevirt.io/erms":"true","cpu-feature.node.kubevirt.io/f16c":"true","cpu-feature.node.kubevirt.io/flush-l1d":"true","cpu-feature.node.kubevirt.io/flushbyasid":"true","cpu-feature.node.kubevirt.io/fma":"true","cpu-feature.node.kubevirt.io/fpu":"true","cpu-feature.node.kubevirt.io/fsgsbase":"true","cpu-feature.node.kubevirt.io/fsrm":"true","cpu-feature.node.kubevirt.io/fxsr":"true","cpu-feature.node.kubevirt.io/fxsr_opt":"true","cpu-feature.node.kubevirt.io/gfni":"true","cpu-feature.node.kubevirt.io/hypervisor":"true","cpu-feature.node.kubevirt.io/ibpb":"true","cpu-feature.node.kubevirt.io/ibpb-brtype":"true","cpu-feature.node.kubevirt.io/ibrs":"true","cpu-feature.node.kubevirt.io/invpcid":"true","cpu-feature.node.kubevirt.io/invtsc":"true","cpu-feature.node.kubevirt.io/la57":"true","cpu-feature.node.kubevirt.io/lahf_lm":"true","cpu-feature.node.kubevirt.io/lbrv":"true","cpu-feature.node.kubevirt.io/lfence-always-serializing":"true","cpu-feature.node.kubevirt.io/lm":"true","cpu-feature.node.kubevirt.io/mca":"true","cpu-feature.node.kubevirt.io/mce":"true","cpu-feature.node.kubevirt.io/misalignsse":"true","cpu-feature.node.kubevirt.io/mmx":"true","cpu-feature.node.kubevirt.io/mmxext":"true","cpu-feature.node.kubevirt.io/movbe":"true","cpu-feature.node.kubevirt.io/msr":"true","cpu-feature.node.kubevirt.io/mtrr":"true","cpu-feature.node.kubevirt.io/no-nested-data-bp":"true","cpu-feature.node.kubevirt.io/npt":"true","cpu-feature.node.kubevirt.io/nrip-save":"true","cpu-feature.node.kubevirt.io/null-sel-clr-base":"true","cpu-feature.node.kubevirt.io/nx":"true","cpu-feature.node.kubevirt.io/osvw":"true","cpu-feature.node.kubevirt.io/overflow-recov":"true","cpu-feature.node.kubevirt.io/pae":"true","cpu-feature.node.kubevirt.io/pat":"true","cpu-feature.node.kubevirt.io/pause-filter":"true","cpu-feature.node.kubevirt.io/pcid":"true","cpu-feature.node.kubevirt.io/pclmuldq":"true","cpu-feature.node.kubevirt.io/pdpe1gb":"true","cpu-feature.node.kubevirt.io/perfctr_core":"true","cpu-feature.node.kubevirt.io/perfmon-v2":"true","cpu-feature.node.kubevirt.io/pfthreshold":"true","cpu-feature.node.kubevirt.io/pge":"true","cpu-feature.node.kubevirt.io/pku":"true","cpu-feature.node.kubevirt.io/pni":"true","cpu-feature.node.kubevirt.io/popcnt":"true","cpu-feature.node.kubevirt.io/pse":"true","cpu-feature.node.kubevirt.io/pse36":"true","cpu-feature.node.kubevirt.io/rdpid":"true","cpu-feature.node.kubevirt.io/rdrand":"true","cpu-feature.node.kubevirt.io/rdseed":"true","cpu-feature.node.kubevirt.io/rdtscp":"true","cpu-feature.node.kubevirt.io/sbpb":"true","cpu-feature.node.kubevirt.io/sep":"true","cpu-feature.node.kubevirt.io/sha-ni":"true","cpu-feature.node.kubevirt.io/smap":"true","cpu-feature.node.kubevirt.io/smep":"true","cpu-feature.node.kubevirt.io/spec-ctrl":"true","cpu-feature.node.kubevirt.io/ssbd":"true","cpu-feature.node.kubevirt.io/sse":"true","cpu-feature.node.kubevirt.io/sse2":"true","cpu-feature.node.kubevirt.io/sse4.1":"true","cpu-feature.node.kubevirt.io/sse4.2":"true","cpu-feature.node.kubevirt.io/sse4a":"true","cpu-feature.node.kubevirt.io/ssse3":"true","cpu-feature.node.kubevirt.io/stibp":"true","cpu-feature.node.kubevirt.io/stibp-always-on":"true","cpu-feature.node.kubevirt.io/succor":"true","cpu-feature.node.kubevirt.io/svm":"true","cpu-feature.node.kubevirt.io/svme-addr-chk":"true","cpu-feature.node.kubevirt.io/syscall":"true","cpu-feature.node.kubevirt.io/tsc":"true","cpu-feature.node.kubevirt.io/tsc-deadline":"true","cpu-feature.node.kubevirt.io/tsc-scale":"true","cpu-feature.node.kubevirt.io/tsc_adjust":"true","cpu-feature.node.kubevirt.io/umip":"true","cpu-feature.node.kubevirt.io/v-vmsave-vmload":"true","cpu-feature.node.kubevirt.io/vaes":"true","cpu-feature.node.kubevirt.io/vgif":"true","cpu-feature.node.kubevirt.io/virt-ssbd":"true","cpu-feature.node.kubevirt.io/vmcb-clean":"true","cpu-feature.node.kubevirt.io/vme":"true","cpu-feature.node.kubevirt.io/vnmi":"true","cpu-feature.node.kubevirt.io/vpclmulqdq":"true","cpu-feature.node.kubevirt.io/wbnoinvd":"true","cpu-feature.node.kubevirt.io/x2apic":"true","cpu-feature.node.kubevirt.io/xgetbv1":"true","cpu-feature.node.kubevirt.io/xsave":"true","cpu-feature.node.kubevirt.io/xsavec":"true","cpu-feature.node.kubevirt.io/xsaveerptr":"true","cpu-feature.node.kubevirt.io/xsaveopt":"true","cpu-feature.node.kubevirt.io/xsaves":"true","cpu-model-migration.node.kubevirt.io/Broadwell":"true","cpu-model-migration.node.kubevirt.io/Broadwell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v1":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v2":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v3":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Cooperlake":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v1":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton":"true","cpu-model-migration.node.kubevirt.io/Denverton-v1":"true","cpu-model-migration.node.kubevirt.io/Denverton-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton-v3":"true","cpu-model-migration.node.kubevirt.io/Dhyana":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v1":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-IBPB":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4":"true","cpu-model-migration.node.kubevirt.io/EPYC-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-v4":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v1":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell":"true","cpu-model-migration.node.kubevirt.io/Haswell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-v1":"true","cpu-model-migration.node.kubevirt.io/Haswell-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell-v3":"true","cpu-model-migration.node.kubevirt.io/Haswell-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v6":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v7":"true","cpu-model-migration.node.kubevirt.io/IvyBridge":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/KnightsMill":"true","cpu-model-migration.node.kubevirt.io/KnightsMill-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem":"true","cpu-model-migration.node.kubevirt.io/Nehalem-IBRS":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v2":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5-v1":"true","cpu-model-migration.node.kubevirt.io/Penryn":"true","cpu-model-migration.node.kubevirt.io/Penryn-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v1":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v3":"true","cpu-model-migration.node.kubevirt.io/SierraForest":"true","cpu-model-migration.node.kubevirt.io/SierraForest-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Snowridge":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v1":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v2":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v3":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v4":"true","cpu-model-migration.node.kubevirt.io/Westmere":"true","cpu-model-migration.node.kubevirt.io/Westmere-IBRS":"true","cpu-model-migration.node.kubevirt.io/Westmere-v1":"true","cpu-model-migration.node.kubevirt.io/Westmere-v2":"true","cpu-model.node.kubevirt.io/Broadwell-noTSX":"true","cpu-model.node.kubevirt.io/Broadwell-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Broadwell-v2":"true","cpu-model.node.kubevirt.io/Broadwell-v4":"true","cpu-model.node.kubevirt.io/Denverton-v2":"true","cpu-model.node.kubevirt.io/Denverton-v3":"true","cpu-model.node.kubevirt.io/Dhyana":"true","cpu-model.node.kubevirt.io/Dhyana-v1":"true","cpu-model.node.kubevirt.io/Dhyana-v2":"true","cpu-model.node.kubevirt.io/EPYC":"true","cpu-model.node.kubevirt.io/EPYC-Genoa":"true","cpu-model.node.kubevirt.io/EPYC-Genoa-v1":"true","cpu-model.node.kubevirt.io/EPYC-IBPB":"true","cpu-model.node.kubevirt.io/EPYC-Milan":"true","cpu-model.node.kubevirt.io/EPYC-Milan-v1":"true","cpu-model.node.kubevirt.io/EPYC-Milan-v2":"true","cpu-model.node.kubevirt.io/EPYC-Rome":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v1":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v2":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v3":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v4":"true","cpu-model.node.kubevirt.io/EPYC-v1":"true","cpu-model.node.kubevirt.io/EPYC-v2":"true","cpu-model.node.kubevirt.io/EPYC-v3":"true","cpu-model.node.kubevirt.io/EPYC-v4":"true","cpu-model.node.kubevirt.io/Haswell-noTSX":"true","cpu-model.node.kubevirt.io/Haswell-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Haswell-v2":"true","cpu-model.node.kubevirt.io/Haswell-v4":"true","cpu-model.node.kubevirt.io/Icelake-Server-noTSX":"true","cpu-model.node.kubevirt.io/Icelake-Server-v2":"true","cpu-model.node.kubevirt.io/IvyBridge":"true","cpu-model.node.kubevirt.io/IvyBridge-IBRS":"true","cpu-model.node.kubevirt.io/IvyBridge-v1":"true","cpu-model.node.kubevirt.io/IvyBridge-v2":"true","cpu-model.node.kubevirt.io/Nehalem":"true","cpu-model.node.kubevirt.io/Nehalem-IBRS":"true","cpu-model.node.kubevirt.io/Nehalem-v1":"true","cpu-model.node.kubevirt.io/Nehalem-v2":"true","cpu-model.node.kubevirt.io/Opteron_G3":"true","cpu-model.node.kubevirt.io/Opteron_G3-v1":"true","cpu-model.node.kubevirt.io/Penryn":"true","cpu-model.node.kubevirt.io/Penryn-v1":"true","cpu-model.node.kubevirt.io/SandyBridge":"true","cpu-model.node.kubevirt.io/SandyBridge-IBRS":"true","cpu-model.node.kubevirt.io/SandyBridge-v1":"true","cpu-model.node.kubevirt.io/SandyBridge-v2":"true","cpu-model.node.kubevirt.io/Skylake-Client-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Skylake-Client-v3":"true","cpu-model.node.kubevirt.io/Skylake-Client-v4":"true","cpu-model.node.kubevirt.io/Skylake-Server-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Skylake-Server-v3":"true","cpu-model.node.kubevirt.io/Skylake-Server-v4":"true","cpu-model.node.kubevirt.io/Skylake-Server-v5":"true","cpu-model.node.kubevirt.io/Westmere":"true","cpu-model.node.kubevirt.io/Westmere-IBRS":"true","cpu-model.node.kubevirt.io/Westmere-v1":"true","cpu-model.node.kubevirt.io/Westmere-v2":"true","cpu-timer.node.kubevirt.io/tsc-frequency":"2750000000","cpu-timer.node.kubevirt.io/tsc-scalable":"true","cpu-vendor.node.kubevirt.io/AMD":"true","cpumanager":"true","extensions.talos.dev/amd-ucode":"20260309","extensions.talos.dev/amdgpu":"20260309-v1.12.6","extensions.talos.dev/bnx2-bnx2x":"20260309","extensions.talos.dev/drbd":"9.2.16-v1.12.6","extensions.talos.dev/i915":"20260309-v1.12.6","extensions.talos.dev/intel-ice-firmware":"20260309","extensions.talos.dev/intel-ucode":"20260227","extensions.talos.dev/modules.dep":"6.18.18-talos","extensions.talos.dev/qlogic-firmware":"20260309","extensions.talos.dev/zfs":"2.4.1-v1.12.6","host-model-cpu.node.kubevirt.io/EPYC-Genoa":"true","host-model-required-features.node.kubevirt.io/cmp_legacy":"true","host-model-required-features.node.kubevirt.io/flush-l1d":"true","host-model-required-features.node.kubevirt.io/flushbyasid":"true","host-model-required-features.node.kubevirt.io/hypervisor":"true","host-model-required-features.node.kubevirt.io/ibpb-brtype":"true","host-model-required-features.node.kubevirt.io/invtsc":"true","host-model-required-features.node.kubevirt.io/lbrv":"true","host-model-required-features.node.kubevirt.io/overflow-recov":"true","host-model-required-features.node.kubevirt.io/pause-filter":"true","host-model-required-features.node.kubevirt.io/perfmon-v2":"true","host-model-required-features.node.kubevirt.io/pfthreshold":"true","host-model-required-features.node.kubevirt.io/sbpb":"true","host-model-required-features.node.kubevirt.io/spec-ctrl":"true","host-model-required-features.node.kubevirt.io/ssbd":"true","host-model-required-features.node.kubevirt.io/stibp":"true","host-model-required-features.node.kubevirt.io/succor":"true","host-model-required-features.node.kubevirt.io/tsc-deadline":"true","host-model-required-features.node.kubevirt.io/tsc-scale":"true","host-model-required-features.node.kubevirt.io/tsc_adjust":"true","host-model-required-features.node.kubevirt.io/v-vmsave-vmload":"true","host-model-required-features.node.kubevirt.io/vgif":"true","host-model-required-features.node.kubevirt.io/virt-ssbd":"true","host-model-required-features.node.kubevirt.io/vmcb-clean":"true","host-model-required-features.node.kubevirt.io/x2apic":"true","hyperv.node.kubevirt.io/base":"true","hyperv.node.kubevirt.io/frequencies":"true","hyperv.node.kubevirt.io/ipi":"true","hyperv.node.kubevirt.io/reenlightenment":"true","hyperv.node.kubevirt.io/reset":"true","hyperv.node.kubevirt.io/runtime":"true","hyperv.node.kubevirt.io/synic":"true","hyperv.node.kubevirt.io/synic2":"true","hyperv.node.kubevirt.io/synictimer":"true","hyperv.node.kubevirt.io/time":"true","hyperv.node.kubevirt.io/tlbflush":"true","hyperv.node.kubevirt.io/vpindex":"true","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"ws2","kubernetes.io/os":"linux","kubevirt.io/cpumanager":"true","kubevirt.io/ksm-enabled":"false","kubevirt.io/schedulable":"true","linbit.com/hostname":"ws2","machine-type.node.kubevirt.io/pc":"true","machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.1.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.3.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.5.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.8.0":"true","machine-type.node.kubevirt.io/q35":"true","node-role.kubernetes.io/control-plane":"","scheduling.node.kubevirt.io/tsc-frequency-2749998000":"true","scheduling.node.kubevirt.io/tsc-frequency-2750000000":"true"}},"timestamp":"2026-08-30T06:38:45Z","window":"10.396s","usage":{"cpu":"3478645632n","memory":"54857368Ki"}},{"metadata":{"name":"ws3","creationTimestamp":"2026-08-30T06:38:55Z","labels":{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","cpu-feature.node.kubevirt.io/3dnowprefetch":"true","cpu-feature.node.kubevirt.io/abm":"true","cpu-feature.node.kubevirt.io/adx":"true","cpu-feature.node.kubevirt.io/aes":"true","cpu-feature.node.kubevirt.io/amd-psfd":"true","cpu-feature.node.kubevirt.io/amd-ssbd":"true","cpu-feature.node.kubevirt.io/amd-stibp":"true","cpu-feature.node.kubevirt.io/apic":"true","cpu-feature.node.kubevirt.io/arat":"true","cpu-feature.node.kubevirt.io/auto-ibrs":"true","cpu-feature.node.kubevirt.io/avx":"true","cpu-feature.node.kubevirt.io/avx2":"true","cpu-feature.node.kubevirt.io/avx512-bf16":"true","cpu-feature.node.kubevirt.io/avx512-vpopcntdq":"true","cpu-feature.node.kubevirt.io/avx512bitalg":"true","cpu-feature.node.kubevirt.io/avx512bw":"true","cpu-feature.node.kubevirt.io/avx512cd":"true","cpu-feature.node.kubevirt.io/avx512dq":"true","cpu-feature.node.kubevirt.io/avx512f":"true","cpu-feature.node.kubevirt.io/avx512ifma":"true","cpu-feature.node.kubevirt.io/avx512vbmi":"true","cpu-feature.node.kubevirt.io/avx512vbmi2":"true","cpu-feature.node.kubevirt.io/avx512vl":"true","cpu-feature.node.kubevirt.io/avx512vnni":"true","cpu-feature.node.kubevirt.io/bmi1":"true","cpu-feature.node.kubevirt.io/bmi2":"true","cpu-feature.node.kubevirt.io/clflush":"true","cpu-feature.node.kubevirt.io/clflushopt":"true","cpu-feature.node.kubevirt.io/clwb":"true","cpu-feature.node.kubevirt.io/clzero":"true","cpu-feature.node.kubevirt.io/cmov":"true","cpu-feature.node.kubevirt.io/cmp_legacy":"true","cpu-feature.node.kubevirt.io/cr8legacy":"true","cpu-feature.node.kubevirt.io/cx16":"true","cpu-feature.node.kubevirt.io/cx8":"true","cpu-feature.node.kubevirt.io/de":"true","cpu-feature.node.kubevirt.io/erms":"true","cpu-feature.node.kubevirt.io/f16c":"true","cpu-feature.node.kubevirt.io/flush-l1d":"true","cpu-feature.node.kubevirt.io/flushbyasid":"true","cpu-feature.node.kubevirt.io/fma":"true","cpu-feature.node.kubevirt.io/fpu":"true","cpu-feature.node.kubevirt.io/fsgsbase":"true","cpu-feature.node.kubevirt.io/fsrm":"true","cpu-feature.node.kubevirt.io/fxsr":"true","cpu-feature.node.kubevirt.io/fxsr_opt":"true","cpu-feature.node.kubevirt.io/gfni":"true","cpu-feature.node.kubevirt.io/hypervisor":"true","cpu-feature.node.kubevirt.io/ibpb":"true","cpu-feature.node.kubevirt.io/ibpb-brtype":"true","cpu-feature.node.kubevirt.io/ibrs":"true","cpu-feature.node.kubevirt.io/invpcid":"true","cpu-feature.node.kubevirt.io/invtsc":"true","cpu-feature.node.kubevirt.io/la57":"true","cpu-feature.node.kubevirt.io/lahf_lm":"true","cpu-feature.node.kubevirt.io/lbrv":"true","cpu-feature.node.kubevirt.io/lfence-always-serializing":"true","cpu-feature.node.kubevirt.io/lm":"true","cpu-feature.node.kubevirt.io/mca":"true","cpu-feature.node.kubevirt.io/mce":"true","cpu-feature.node.kubevirt.io/misalignsse":"true","cpu-feature.node.kubevirt.io/mmx":"true","cpu-feature.node.kubevirt.io/mmxext":"true","cpu-feature.node.kubevirt.io/movbe":"true","cpu-feature.node.kubevirt.io/msr":"true","cpu-feature.node.kubevirt.io/mtrr":"true","cpu-feature.node.kubevirt.io/no-nested-data-bp":"true","cpu-feature.node.kubevirt.io/npt":"true","cpu-feature.node.kubevirt.io/nrip-save":"true","cpu-feature.node.kubevirt.io/null-sel-clr-base":"true","cpu-feature.node.kubevirt.io/nx":"true","cpu-feature.node.kubevirt.io/osvw":"true","cpu-feature.node.kubevirt.io/overflow-recov":"true","cpu-feature.node.kubevirt.io/pae":"true","cpu-feature.node.kubevirt.io/pat":"true","cpu-feature.node.kubevirt.io/pause-filter":"true","cpu-feature.node.kubevirt.io/pcid":"true","cpu-feature.node.kubevirt.io/pclmuldq":"true","cpu-feature.node.kubevirt.io/pdpe1gb":"true","cpu-feature.node.kubevirt.io/perfctr_core":"true","cpu-feature.node.kubevirt.io/perfmon-v2":"true","cpu-feature.node.kubevirt.io/pfthreshold":"true","cpu-feature.node.kubevirt.io/pge":"true","cpu-feature.node.kubevirt.io/pku":"true","cpu-feature.node.kubevirt.io/pni":"true","cpu-feature.node.kubevirt.io/popcnt":"true","cpu-feature.node.kubevirt.io/pse":"true","cpu-feature.node.kubevirt.io/pse36":"true","cpu-feature.node.kubevirt.io/rdpid":"true","cpu-feature.node.kubevirt.io/rdrand":"true","cpu-feature.node.kubevirt.io/rdseed":"true","cpu-feature.node.kubevirt.io/rdtscp":"true","cpu-feature.node.kubevirt.io/sbpb":"true","cpu-feature.node.kubevirt.io/sep":"true","cpu-feature.node.kubevirt.io/sha-ni":"true","cpu-feature.node.kubevirt.io/smap":"true","cpu-feature.node.kubevirt.io/smep":"true","cpu-feature.node.kubevirt.io/spec-ctrl":"true","cpu-feature.node.kubevirt.io/ssbd":"true","cpu-feature.node.kubevirt.io/sse":"true","cpu-feature.node.kubevirt.io/sse2":"true","cpu-feature.node.kubevirt.io/sse4.1":"true","cpu-feature.node.kubevirt.io/sse4.2":"true","cpu-feature.node.kubevirt.io/sse4a":"true","cpu-feature.node.kubevirt.io/ssse3":"true","cpu-feature.node.kubevirt.io/stibp":"true","cpu-feature.node.kubevirt.io/stibp-always-on":"true","cpu-feature.node.kubevirt.io/succor":"true","cpu-feature.node.kubevirt.io/svm":"true","cpu-feature.node.kubevirt.io/svme-addr-chk":"true","cpu-feature.node.kubevirt.io/syscall":"true","cpu-feature.node.kubevirt.io/tsc":"true","cpu-feature.node.kubevirt.io/tsc-deadline":"true","cpu-feature.node.kubevirt.io/tsc-scale":"true","cpu-feature.node.kubevirt.io/tsc_adjust":"true","cpu-feature.node.kubevirt.io/umip":"true","cpu-feature.node.kubevirt.io/v-vmsave-vmload":"true","cpu-feature.node.kubevirt.io/vaes":"true","cpu-feature.node.kubevirt.io/vgif":"true","cpu-feature.node.kubevirt.io/virt-ssbd":"true","cpu-feature.node.kubevirt.io/vmcb-clean":"true","cpu-feature.node.kubevirt.io/vme":"true","cpu-feature.node.kubevirt.io/vnmi":"true","cpu-feature.node.kubevirt.io/vpclmulqdq":"true","cpu-feature.node.kubevirt.io/wbnoinvd":"true","cpu-feature.node.kubevirt.io/x2apic":"true","cpu-feature.node.kubevirt.io/xgetbv1":"true","cpu-feature.node.kubevirt.io/xsave":"true","cpu-feature.node.kubevirt.io/xsavec":"true","cpu-feature.node.kubevirt.io/xsaveerptr":"true","cpu-feature.node.kubevirt.io/xsaveopt":"true","cpu-feature.node.kubevirt.io/xsaves":"true","cpu-model-migration.node.kubevirt.io/Broadwell":"true","cpu-model-migration.node.kubevirt.io/Broadwell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v1":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v2":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v3":"true","cpu-model-migration.node.kubevirt.io/Broadwell-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Cooperlake":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v1":"true","cpu-model-migration.node.kubevirt.io/Cooperlake-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton":"true","cpu-model-migration.node.kubevirt.io/Denverton-v1":"true","cpu-model-migration.node.kubevirt.io/Denverton-v2":"true","cpu-model-migration.node.kubevirt.io/Denverton-v3":"true","cpu-model-migration.node.kubevirt.io/Dhyana":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v1":"true","cpu-model-migration.node.kubevirt.io/Dhyana-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa":"true","cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-IBPB":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4":"true","cpu-model-migration.node.kubevirt.io/EPYC-v1":"true","cpu-model-migration.node.kubevirt.io/EPYC-v2":"true","cpu-model-migration.node.kubevirt.io/EPYC-v3":"true","cpu-model-migration.node.kubevirt.io/EPYC-v4":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v1":"true","cpu-model-migration.node.kubevirt.io/GraniteRapids-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell":"true","cpu-model-migration.node.kubevirt.io/Haswell-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX":"true","cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Haswell-v1":"true","cpu-model-migration.node.kubevirt.io/Haswell-v2":"true","cpu-model-migration.node.kubevirt.io/Haswell-v3":"true","cpu-model-migration.node.kubevirt.io/Haswell-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v6":"true","cpu-model-migration.node.kubevirt.io/Icelake-Server-v7":"true","cpu-model-migration.node.kubevirt.io/IvyBridge":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/IvyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/KnightsMill":"true","cpu-model-migration.node.kubevirt.io/KnightsMill-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem":"true","cpu-model-migration.node.kubevirt.io/Nehalem-IBRS":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v1":"true","cpu-model-migration.node.kubevirt.io/Nehalem-v2":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3":"true","cpu-model-migration.node.kubevirt.io/Opteron_G3-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4":"true","cpu-model-migration.node.kubevirt.io/Opteron_G4-v1":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5":"true","cpu-model-migration.node.kubevirt.io/Opteron_G5-v1":"true","cpu-model-migration.node.kubevirt.io/Penryn":"true","cpu-model-migration.node.kubevirt.io/Penryn-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v1":"true","cpu-model-migration.node.kubevirt.io/SandyBridge-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v1":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v2":"true","cpu-model-migration.node.kubevirt.io/SapphireRapids-v3":"true","cpu-model-migration.node.kubevirt.io/SierraForest":"true","cpu-model-migration.node.kubevirt.io/SierraForest-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Client-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v1":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v2":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v3":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v4":"true","cpu-model-migration.node.kubevirt.io/Skylake-Server-v5":"true","cpu-model-migration.node.kubevirt.io/Snowridge":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v1":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v2":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v3":"true","cpu-model-migration.node.kubevirt.io/Snowridge-v4":"true","cpu-model-migration.node.kubevirt.io/Westmere":"true","cpu-model-migration.node.kubevirt.io/Westmere-IBRS":"true","cpu-model-migration.node.kubevirt.io/Westmere-v1":"true","cpu-model-migration.node.kubevirt.io/Westmere-v2":"true","cpu-model.node.kubevirt.io/Broadwell-noTSX":"true","cpu-model.node.kubevirt.io/Broadwell-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Broadwell-v2":"true","cpu-model.node.kubevirt.io/Broadwell-v4":"true","cpu-model.node.kubevirt.io/Denverton-v2":"true","cpu-model.node.kubevirt.io/Denverton-v3":"true","cpu-model.node.kubevirt.io/Dhyana":"true","cpu-model.node.kubevirt.io/Dhyana-v1":"true","cpu-model.node.kubevirt.io/Dhyana-v2":"true","cpu-model.node.kubevirt.io/EPYC":"true","cpu-model.node.kubevirt.io/EPYC-Genoa":"true","cpu-model.node.kubevirt.io/EPYC-Genoa-v1":"true","cpu-model.node.kubevirt.io/EPYC-IBPB":"true","cpu-model.node.kubevirt.io/EPYC-Milan":"true","cpu-model.node.kubevirt.io/EPYC-Milan-v1":"true","cpu-model.node.kubevirt.io/EPYC-Milan-v2":"true","cpu-model.node.kubevirt.io/EPYC-Rome":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v1":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v2":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v3":"true","cpu-model.node.kubevirt.io/EPYC-Rome-v4":"true","cpu-model.node.kubevirt.io/EPYC-v1":"true","cpu-model.node.kubevirt.io/EPYC-v2":"true","cpu-model.node.kubevirt.io/EPYC-v3":"true","cpu-model.node.kubevirt.io/EPYC-v4":"true","cpu-model.node.kubevirt.io/Haswell-noTSX":"true","cpu-model.node.kubevirt.io/Haswell-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Haswell-v2":"true","cpu-model.node.kubevirt.io/Haswell-v4":"true","cpu-model.node.kubevirt.io/Icelake-Server-noTSX":"true","cpu-model.node.kubevirt.io/Icelake-Server-v2":"true","cpu-model.node.kubevirt.io/IvyBridge":"true","cpu-model.node.kubevirt.io/IvyBridge-IBRS":"true","cpu-model.node.kubevirt.io/IvyBridge-v1":"true","cpu-model.node.kubevirt.io/IvyBridge-v2":"true","cpu-model.node.kubevirt.io/Nehalem":"true","cpu-model.node.kubevirt.io/Nehalem-IBRS":"true","cpu-model.node.kubevirt.io/Nehalem-v1":"true","cpu-model.node.kubevirt.io/Nehalem-v2":"true","cpu-model.node.kubevirt.io/Opteron_G3":"true","cpu-model.node.kubevirt.io/Opteron_G3-v1":"true","cpu-model.node.kubevirt.io/Penryn":"true","cpu-model.node.kubevirt.io/Penryn-v1":"true","cpu-model.node.kubevirt.io/SandyBridge":"true","cpu-model.node.kubevirt.io/SandyBridge-IBRS":"true","cpu-model.node.kubevirt.io/SandyBridge-v1":"true","cpu-model.node.kubevirt.io/SandyBridge-v2":"true","cpu-model.node.kubevirt.io/Skylake-Client-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Skylake-Client-v3":"true","cpu-model.node.kubevirt.io/Skylake-Client-v4":"true","cpu-model.node.kubevirt.io/Skylake-Server-noTSX-IBRS":"true","cpu-model.node.kubevirt.io/Skylake-Server-v3":"true","cpu-model.node.kubevirt.io/Skylake-Server-v4":"true","cpu-model.node.kubevirt.io/Skylake-Server-v5":"true","cpu-model.node.kubevirt.io/Westmere":"true","cpu-model.node.kubevirt.io/Westmere-IBRS":"true","cpu-model.node.kubevirt.io/Westmere-v1":"true","cpu-model.node.kubevirt.io/Westmere-v2":"true","cpu-timer.node.kubevirt.io/tsc-frequency":"2749999000","cpu-timer.node.kubevirt.io/tsc-scalable":"true","cpu-vendor.node.kubevirt.io/AMD":"true","cpumanager":"true","extensions.talos.dev/amd-ucode":"20260309","extensions.talos.dev/amdgpu":"20260309-v1.12.6","extensions.talos.dev/bnx2-bnx2x":"20260309","extensions.talos.dev/drbd":"9.2.16-v1.12.6","extensions.talos.dev/i915":"20260309-v1.12.6","extensions.talos.dev/intel-ice-firmware":"20260309","extensions.talos.dev/intel-ucode":"20260227","extensions.talos.dev/modules.dep":"6.18.18-talos","extensions.talos.dev/qlogic-firmware":"20260309","extensions.talos.dev/zfs":"2.4.1-v1.12.6","host-model-cpu.node.kubevirt.io/EPYC-Genoa":"true","host-model-required-features.node.kubevirt.io/cmp_legacy":"true","host-model-required-features.node.kubevirt.io/flush-l1d":"true","host-model-required-features.node.kubevirt.io/flushbyasid":"true","host-model-required-features.node.kubevirt.io/hypervisor":"true","host-model-required-features.node.kubevirt.io/ibpb-brtype":"true","host-model-required-features.node.kubevirt.io/invtsc":"true","host-model-required-features.node.kubevirt.io/lbrv":"true","host-model-required-features.node.kubevirt.io/overflow-recov":"true","host-model-required-features.node.kubevirt.io/pause-filter":"true","host-model-required-features.node.kubevirt.io/perfmon-v2":"true","host-model-required-features.node.kubevirt.io/pfthreshold":"true","host-model-required-features.node.kubevirt.io/sbpb":"true","host-model-required-features.node.kubevirt.io/spec-ctrl":"true","host-model-required-features.node.kubevirt.io/ssbd":"true","host-model-required-features.node.kubevirt.io/stibp":"true","host-model-required-features.node.kubevirt.io/succor":"true","host-model-required-features.node.kubevirt.io/tsc-deadline":"true","host-model-required-features.node.kubevirt.io/tsc-scale":"true","host-model-required-features.node.kubevirt.io/tsc_adjust":"true","host-model-required-features.node.kubevirt.io/v-vmsave-vmload":"true","host-model-required-features.node.kubevirt.io/vgif":"true","host-model-required-features.node.kubevirt.io/virt-ssbd":"true","host-model-required-features.node.kubevirt.io/vmcb-clean":"true","host-model-required-features.node.kubevirt.io/x2apic":"true","hyperv.node.kubevirt.io/base":"true","hyperv.node.kubevirt.io/frequencies":"true","hyperv.node.kubevirt.io/ipi":"true","hyperv.node.kubevirt.io/reenlightenment":"true","hyperv.node.kubevirt.io/reset":"true","hyperv.node.kubevirt.io/runtime":"true","hyperv.node.kubevirt.io/synic":"true","hyperv.node.kubevirt.io/synic2":"true","hyperv.node.kubevirt.io/synictimer":"true","hyperv.node.kubevirt.io/time":"true","hyperv.node.kubevirt.io/tlbflush":"true","hyperv.node.kubevirt.io/vpindex":"true","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"ws3","kubernetes.io/os":"linux","kubevirt.io/cpumanager":"true","kubevirt.io/ksm-enabled":"false","kubevirt.io/schedulable":"true","linbit.com/hostname":"ws3","machine-type.node.kubevirt.io/pc":"true","machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel7.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.1.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.3.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.5.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel8.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.0.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.2.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.4.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.6.0":"true","machine-type.node.kubevirt.io/pc-q35-rhel9.8.0":"true","machine-type.node.kubevirt.io/q35":"true","node-role.kubernetes.io/control-plane":"","scheduling.node.kubevirt.io/tsc-frequency-2749998000":"true","scheduling.node.kubevirt.io/tsc-frequency-2749999000":"true"}},"timestamp":"2026-08-30T06:38:47Z","window":"10.488s","usage":{"cpu":"5923722349n","memory":"50940004Ki"}}]} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/nodes.json b/demo-src/overlay/apps/console/src/demo/fixtures/nodes.json new file mode 100644 index 00000000..d66076f9 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/nodes.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "v1", "kind": "Node", "metadata": {"creationTimestamp": "2026-08-13T01:36:36Z", "labels": {"beta.kubernetes.io/arch": "amd64", "beta.kubernetes.io/os": "linux", "cpu-feature.node.kubevirt.io/3dnow": "true", "cpu-feature.node.kubevirt.io/3dnowext": "true", "cpu-feature.node.kubevirt.io/3dnowprefetch": "true", "cpu-feature.node.kubevirt.io/abm": "true", "cpu-feature.node.kubevirt.io/acpi": "true", "cpu-feature.node.kubevirt.io/adx": "true", "cpu-feature.node.kubevirt.io/aes": "true", "cpu-feature.node.kubevirt.io/apic": "true", "cpu-feature.node.kubevirt.io/arat": "true", "cpu-feature.node.kubevirt.io/avx": "true", "cpu-feature.node.kubevirt.io/avx2": "true", "cpu-feature.node.kubevirt.io/bmi1": "true", "cpu-feature.node.kubevirt.io/bmi2": "true", "cpu-feature.node.kubevirt.io/clflush": "true", "cpu-feature.node.kubevirt.io/clflushopt": "true", "cpu-feature.node.kubevirt.io/clwb": "true", "cpu-feature.node.kubevirt.io/cmov": "true", "cpu-feature.node.kubevirt.io/cmp_legacy": "true", "cpu-feature.node.kubevirt.io/cmpccxadd": "true", "cpu-feature.node.kubevirt.io/cr8legacy": "true", "cpu-feature.node.kubevirt.io/cx16": "true", "cpu-feature.node.kubevirt.io/cx8": "true", "cpu-feature.node.kubevirt.io/de": "true", "cpu-feature.node.kubevirt.io/erms": "true", "cpu-feature.node.kubevirt.io/f16c": "true", "cpu-feature.node.kubevirt.io/fma": "true", "cpu-feature.node.kubevirt.io/fpu": "true", "cpu-feature.node.kubevirt.io/fsgsbase": "true", "cpu-feature.node.kubevirt.io/fsrc": "true", "cpu-feature.node.kubevirt.io/fsrm": "true", "cpu-feature.node.kubevirt.io/fsrs": "true", "cpu-feature.node.kubevirt.io/fxsr": "true", "cpu-feature.node.kubevirt.io/fzrm": "true", "cpu-feature.node.kubevirt.io/hypervisor": "true", "cpu-feature.node.kubevirt.io/la57": "true", "cpu-feature.node.kubevirt.io/lahf_lm": "true", "cpu-feature.node.kubevirt.io/lm": "true", "cpu-feature.node.kubevirt.io/mca": "true", "cpu-feature.node.kubevirt.io/mce": "true", "cpu-feature.node.kubevirt.io/mmx": "true", "cpu-feature.node.kubevirt.io/mmxext": "true", "cpu-feature.node.kubevirt.io/monitor": "true", "cpu-feature.node.kubevirt.io/movbe": "true", "cpu-feature.node.kubevirt.io/mpx": "true", "cpu-feature.node.kubevirt.io/msr": "true", "cpu-feature.node.kubevirt.io/mtrr": "true", "cpu-feature.node.kubevirt.io/no-nested-data-bp": "true", "cpu-feature.node.kubevirt.io/npt": "true", "cpu-feature.node.kubevirt.io/null-sel-clr-base": "true", "cpu-feature.node.kubevirt.io/nx": "true", "cpu-feature.node.kubevirt.io/pae": "true", "cpu-feature.node.kubevirt.io/pat": "true", "cpu-feature.node.kubevirt.io/pclmuldq": "true", "cpu-feature.node.kubevirt.io/pdpe1gb": "true", "cpu-feature.node.kubevirt.io/pge": "true", "cpu-feature.node.kubevirt.io/pks": "true", "cpu-feature.node.kubevirt.io/pku": "true", "cpu-feature.node.kubevirt.io/pni": "true", "cpu-feature.node.kubevirt.io/popcnt": "true", "cpu-feature.node.kubevirt.io/pse": "true", "cpu-feature.node.kubevirt.io/pse36": "true", "cpu-feature.node.kubevirt.io/rdpid": "true", "cpu-feature.node.kubevirt.io/rdrand": "true", "cpu-feature.node.kubevirt.io/rdseed": "true", "cpu-feature.node.kubevirt.io/rdtscp": "true", "cpu-feature.node.kubevirt.io/sep": "true", "cpu-feature.node.kubevirt.io/sha-ni": "true", "cpu-feature.node.kubevirt.io/smap": "true", "cpu-feature.node.kubevirt.io/smep": "true", "cpu-feature.node.kubevirt.io/ss": "true", "cpu-feature.node.kubevirt.io/sse": "true", "cpu-feature.node.kubevirt.io/sse2": "true", "cpu-feature.node.kubevirt.io/sse4.1": "true", "cpu-feature.node.kubevirt.io/sse4.2": "true", "cpu-feature.node.kubevirt.io/sse4a": "true", "cpu-feature.node.kubevirt.io/ssse3": "true", "cpu-feature.node.kubevirt.io/svm": "true", "cpu-feature.node.kubevirt.io/svme-addr-chk": "true", "cpu-feature.node.kubevirt.io/syscall": "true", "cpu-feature.node.kubevirt.io/tsc": "true", "cpu-feature.node.kubevirt.io/umip": "true", "cpu-feature.node.kubevirt.io/vaes": "true", "cpu-feature.node.kubevirt.io/vgif": "true", "cpu-feature.node.kubevirt.io/wbnoinvd": "true", "cpu-feature.node.kubevirt.io/x2apic": "true", "cpu-feature.node.kubevirt.io/xgetbv1": "true", "cpu-feature.node.kubevirt.io/xsave": "true", "cpu-feature.node.kubevirt.io/xsaveerptr": "true", "cpu-feature.node.kubevirt.io/xsaveopt": "true", "cpu-model-migration.node.kubevirt.io/Broadwell": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v1": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v2": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v3": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v1": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v1": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v3": "true", "cpu-model-migration.node.kubevirt.io/Dhyana": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v1": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-IBPB": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v4": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell": "true", "cpu-model-migration.node.kubevirt.io/Haswell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v1": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v3": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v6": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v7": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v2": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5-v1": "true", "cpu-model-migration.node.kubevirt.io/Penryn": "true", "cpu-model-migration.node.kubevirt.io/Penryn-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v3": "true", "cpu-model-migration.node.kubevirt.io/SierraForest": "true", "cpu-model-migration.node.kubevirt.io/SierraForest-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Snowridge": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v1": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v2": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v3": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v4": "true", "cpu-model-migration.node.kubevirt.io/Westmere": "true", "cpu-model-migration.node.kubevirt.io/Westmere-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v1": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v2": "true", "cpu-model.node.kubevirt.io/Nehalem": "true", "cpu-model.node.kubevirt.io/Nehalem-v1": "true", "cpu-model.node.kubevirt.io/Penryn": "true", "cpu-model.node.kubevirt.io/Penryn-v1": "true", "cpu-model.node.kubevirt.io/Westmere": "true", "cpu-model.node.kubevirt.io/Westmere-v1": "true", "cpu-vendor.node.kubevirt.io/AMD": "true", "cpumanager": "true", "extensions.talos.dev/drbd": "9.2.16-v1.12.6", "extensions.talos.dev/modules.dep": "6.18.18-talos", "extensions.talos.dev/qemu-guest-agent": "10.2.0", "extensions.talos.dev/zfs": "2.4.1-v1.12.6", "host-model-cpu.node.kubevirt.io/EPYC": "true", "host-model-required-features.node.kubevirt.io/3dnow": "true", "host-model-required-features.node.kubevirt.io/3dnowext": "true", "host-model-required-features.node.kubevirt.io/acpi": "true", "host-model-required-features.node.kubevirt.io/clwb": "true", "host-model-required-features.node.kubevirt.io/cmp_legacy": "true", "host-model-required-features.node.kubevirt.io/cmpccxadd": "true", "host-model-required-features.node.kubevirt.io/erms": "true", "host-model-required-features.node.kubevirt.io/fsrc": "true", "host-model-required-features.node.kubevirt.io/fsrm": "true", "host-model-required-features.node.kubevirt.io/fsrs": "true", "host-model-required-features.node.kubevirt.io/fzrm": "true", "host-model-required-features.node.kubevirt.io/hypervisor": "true", "host-model-required-features.node.kubevirt.io/la57": "true", "host-model-required-features.node.kubevirt.io/monitor": "true", "host-model-required-features.node.kubevirt.io/mpx": "true", "host-model-required-features.node.kubevirt.io/no-nested-data-bp": "true", "host-model-required-features.node.kubevirt.io/npt": "true", "host-model-required-features.node.kubevirt.io/null-sel-clr-base": "true", "host-model-required-features.node.kubevirt.io/pks": "true", "host-model-required-features.node.kubevirt.io/pku": "true", "host-model-required-features.node.kubevirt.io/rdpid": "true", "host-model-required-features.node.kubevirt.io/ss": "true", "host-model-required-features.node.kubevirt.io/svme-addr-chk": "true", "host-model-required-features.node.kubevirt.io/umip": "true", "host-model-required-features.node.kubevirt.io/vaes": "true", "host-model-required-features.node.kubevirt.io/vgif": "true", "host-model-required-features.node.kubevirt.io/wbnoinvd": "true", "host-model-required-features.node.kubevirt.io/x2apic": "true", "host-model-required-features.node.kubevirt.io/xsaveerptr": "true", "kubernetes.io/arch": "amd64", "kubernetes.io/hostname": "cloudpool-4cbd33a5a5c37606", "kubernetes.io/os": "linux", "kubevirt.io/cpumanager": "true", "kubevirt.io/ksm-enabled": "false", "kubevirt.io/schedulable": "true", "linbit.com/hostname": "cloudpool-4cbd33a5a5c37606", "machine-type.node.kubevirt.io/pc": "true", "machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.1.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.3.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.5.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.8.0": "true", "machine-type.node.kubevirt.io/q35": "true"}, "name": "cloudpool-4cbd33a5a5c37606", "resourceVersion": "47186533", "uid": "385068a1-b0b5-4139-aa08-db9aabb79a60"}, "spec": {"podCIDR": "10.244.6.0/24", "podCIDRs": ["10.244.6.0/24"]}, "status": {"addresses": [{"address": "192.168.0.6", "type": "InternalIP"}, {"address": "cloudpool-4cbd33a5a5c37606", "type": "Hostname"}], "allocatable": {"cpu": "7950m", "devices.kubevirt.io/kvm": "0", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "143245379756", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "15471896Ki", "pods": "512"}, "capacity": {"cpu": "8", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "155722456Ki", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "15967512Ki", "pods": "512"}, "conditions": [{"lastHeartbeatTime": "2026-08-30T06:38:16Z", "lastTransitionTime": "2026-08-30T06:38:16Z", "message": "Cilium is running on this node", "reason": "CiliumIsUp", "status": "False", "type": "NetworkUnavailable"}, {"lastHeartbeatTime": "2026-08-30T06:38:14Z", "lastTransitionTime": "2026-08-13T01:36:36Z", "message": "kubelet has sufficient memory available", "reason": "KubeletHasSufficientMemory", "status": "False", "type": "MemoryPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:14Z", "lastTransitionTime": "2026-08-13T01:36:36Z", "message": "kubelet has no disk pressure", "reason": "KubeletHasNoDiskPressure", "status": "False", "type": "DiskPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:14Z", "lastTransitionTime": "2026-08-13T01:36:36Z", "message": "kubelet has sufficient PID available", "reason": "KubeletHasSufficientPID", "status": "False", "type": "PIDPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:14Z", "lastTransitionTime": "2026-08-13T01:36:50Z", "message": "kubelet is posting ready status", "reason": "KubeletReady", "status": "True", "type": "Ready"}], "daemonEndpoints": {"kubeletEndpoint": {"Port": 10250}}, "features": {"supplementalGroupsPolicy": true}, "nodeInfo": {"architecture": "amd64", "bootID": "cda416d0-20ef-4d2b-855c-9c9bb6c2dd06", "containerRuntimeVersion": "containerd://2.1.6", "kernelVersion": "6.18.18-talos", "kubeProxyVersion": "", "kubeletVersion": "v1.34.3", "machineID": "a2295424335a355a639a18abf77fdb51", "operatingSystem": "linux", "osImage": "Talos (v1.12.6)", "systemUUID": "f739b331-05e8-4eec-b19a-d1cb426339c8"}, "runtimeHandlers": [{"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": ""}, {"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": "runc"}]}}, {"apiVersion": "v1", "kind": "Node", "metadata": {"creationTimestamp": "2026-08-13T01:35:32Z", "labels": {"beta.kubernetes.io/arch": "amd64", "beta.kubernetes.io/os": "linux", "cpu-feature.node.kubevirt.io/3dnow": "true", "cpu-feature.node.kubevirt.io/3dnowext": "true", "cpu-feature.node.kubevirt.io/3dnowprefetch": "true", "cpu-feature.node.kubevirt.io/abm": "true", "cpu-feature.node.kubevirt.io/acpi": "true", "cpu-feature.node.kubevirt.io/adx": "true", "cpu-feature.node.kubevirt.io/aes": "true", "cpu-feature.node.kubevirt.io/apic": "true", "cpu-feature.node.kubevirt.io/arat": "true", "cpu-feature.node.kubevirt.io/avx": "true", "cpu-feature.node.kubevirt.io/avx2": "true", "cpu-feature.node.kubevirt.io/bmi1": "true", "cpu-feature.node.kubevirt.io/bmi2": "true", "cpu-feature.node.kubevirt.io/clflush": "true", "cpu-feature.node.kubevirt.io/clflushopt": "true", "cpu-feature.node.kubevirt.io/clwb": "true", "cpu-feature.node.kubevirt.io/cmov": "true", "cpu-feature.node.kubevirt.io/cmp_legacy": "true", "cpu-feature.node.kubevirt.io/cmpccxadd": "true", "cpu-feature.node.kubevirt.io/cr8legacy": "true", "cpu-feature.node.kubevirt.io/cx16": "true", "cpu-feature.node.kubevirt.io/cx8": "true", "cpu-feature.node.kubevirt.io/de": "true", "cpu-feature.node.kubevirt.io/erms": "true", "cpu-feature.node.kubevirt.io/f16c": "true", "cpu-feature.node.kubevirt.io/fma": "true", "cpu-feature.node.kubevirt.io/fpu": "true", "cpu-feature.node.kubevirt.io/fsgsbase": "true", "cpu-feature.node.kubevirt.io/fsrc": "true", "cpu-feature.node.kubevirt.io/fsrm": "true", "cpu-feature.node.kubevirt.io/fsrs": "true", "cpu-feature.node.kubevirt.io/fxsr": "true", "cpu-feature.node.kubevirt.io/fzrm": "true", "cpu-feature.node.kubevirt.io/hypervisor": "true", "cpu-feature.node.kubevirt.io/la57": "true", "cpu-feature.node.kubevirt.io/lahf_lm": "true", "cpu-feature.node.kubevirt.io/lm": "true", "cpu-feature.node.kubevirt.io/mca": "true", "cpu-feature.node.kubevirt.io/mce": "true", "cpu-feature.node.kubevirt.io/mmx": "true", "cpu-feature.node.kubevirt.io/mmxext": "true", "cpu-feature.node.kubevirt.io/monitor": "true", "cpu-feature.node.kubevirt.io/movbe": "true", "cpu-feature.node.kubevirt.io/mpx": "true", "cpu-feature.node.kubevirt.io/msr": "true", "cpu-feature.node.kubevirt.io/mtrr": "true", "cpu-feature.node.kubevirt.io/no-nested-data-bp": "true", "cpu-feature.node.kubevirt.io/npt": "true", "cpu-feature.node.kubevirt.io/null-sel-clr-base": "true", "cpu-feature.node.kubevirt.io/nx": "true", "cpu-feature.node.kubevirt.io/pae": "true", "cpu-feature.node.kubevirt.io/pat": "true", "cpu-feature.node.kubevirt.io/pclmuldq": "true", "cpu-feature.node.kubevirt.io/pdpe1gb": "true", "cpu-feature.node.kubevirt.io/pge": "true", "cpu-feature.node.kubevirt.io/pks": "true", "cpu-feature.node.kubevirt.io/pku": "true", "cpu-feature.node.kubevirt.io/pni": "true", "cpu-feature.node.kubevirt.io/popcnt": "true", "cpu-feature.node.kubevirt.io/pse": "true", "cpu-feature.node.kubevirt.io/pse36": "true", "cpu-feature.node.kubevirt.io/rdpid": "true", "cpu-feature.node.kubevirt.io/rdrand": "true", "cpu-feature.node.kubevirt.io/rdseed": "true", "cpu-feature.node.kubevirt.io/rdtscp": "true", "cpu-feature.node.kubevirt.io/sep": "true", "cpu-feature.node.kubevirt.io/sha-ni": "true", "cpu-feature.node.kubevirt.io/smap": "true", "cpu-feature.node.kubevirt.io/smep": "true", "cpu-feature.node.kubevirt.io/ss": "true", "cpu-feature.node.kubevirt.io/sse": "true", "cpu-feature.node.kubevirt.io/sse2": "true", "cpu-feature.node.kubevirt.io/sse4.1": "true", "cpu-feature.node.kubevirt.io/sse4.2": "true", "cpu-feature.node.kubevirt.io/sse4a": "true", "cpu-feature.node.kubevirt.io/ssse3": "true", "cpu-feature.node.kubevirt.io/svm": "true", "cpu-feature.node.kubevirt.io/svme-addr-chk": "true", "cpu-feature.node.kubevirt.io/syscall": "true", "cpu-feature.node.kubevirt.io/tsc": "true", "cpu-feature.node.kubevirt.io/umip": "true", "cpu-feature.node.kubevirt.io/vaes": "true", "cpu-feature.node.kubevirt.io/vgif": "true", "cpu-feature.node.kubevirt.io/wbnoinvd": "true", "cpu-feature.node.kubevirt.io/x2apic": "true", "cpu-feature.node.kubevirt.io/xgetbv1": "true", "cpu-feature.node.kubevirt.io/xsave": "true", "cpu-feature.node.kubevirt.io/xsaveerptr": "true", "cpu-feature.node.kubevirt.io/xsaveopt": "true", "cpu-model-migration.node.kubevirt.io/Broadwell": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v1": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v2": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v3": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v1": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v1": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v3": "true", "cpu-model-migration.node.kubevirt.io/Dhyana": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v1": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-IBPB": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v4": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell": "true", "cpu-model-migration.node.kubevirt.io/Haswell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v1": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v3": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v6": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v7": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v2": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5-v1": "true", "cpu-model-migration.node.kubevirt.io/Penryn": "true", "cpu-model-migration.node.kubevirt.io/Penryn-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v3": "true", "cpu-model-migration.node.kubevirt.io/SierraForest": "true", "cpu-model-migration.node.kubevirt.io/SierraForest-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Snowridge": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v1": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v2": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v3": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v4": "true", "cpu-model-migration.node.kubevirt.io/Westmere": "true", "cpu-model-migration.node.kubevirt.io/Westmere-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v1": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v2": "true", "cpu-model.node.kubevirt.io/Nehalem": "true", "cpu-model.node.kubevirt.io/Nehalem-v1": "true", "cpu-model.node.kubevirt.io/Penryn": "true", "cpu-model.node.kubevirt.io/Penryn-v1": "true", "cpu-model.node.kubevirt.io/Westmere": "true", "cpu-model.node.kubevirt.io/Westmere-v1": "true", "cpu-vendor.node.kubevirt.io/AMD": "true", "cpumanager": "true", "extensions.talos.dev/drbd": "9.2.16-v1.12.6", "extensions.talos.dev/modules.dep": "6.18.18-talos", "extensions.talos.dev/qemu-guest-agent": "10.2.0", "extensions.talos.dev/zfs": "2.4.1-v1.12.6", "host-model-cpu.node.kubevirt.io/EPYC": "true", "host-model-required-features.node.kubevirt.io/3dnow": "true", "host-model-required-features.node.kubevirt.io/3dnowext": "true", "host-model-required-features.node.kubevirt.io/acpi": "true", "host-model-required-features.node.kubevirt.io/clwb": "true", "host-model-required-features.node.kubevirt.io/cmp_legacy": "true", "host-model-required-features.node.kubevirt.io/cmpccxadd": "true", "host-model-required-features.node.kubevirt.io/erms": "true", "host-model-required-features.node.kubevirt.io/fsrc": "true", "host-model-required-features.node.kubevirt.io/fsrm": "true", "host-model-required-features.node.kubevirt.io/fsrs": "true", "host-model-required-features.node.kubevirt.io/fzrm": "true", "host-model-required-features.node.kubevirt.io/hypervisor": "true", "host-model-required-features.node.kubevirt.io/la57": "true", "host-model-required-features.node.kubevirt.io/monitor": "true", "host-model-required-features.node.kubevirt.io/mpx": "true", "host-model-required-features.node.kubevirt.io/no-nested-data-bp": "true", "host-model-required-features.node.kubevirt.io/npt": "true", "host-model-required-features.node.kubevirt.io/null-sel-clr-base": "true", "host-model-required-features.node.kubevirt.io/pks": "true", "host-model-required-features.node.kubevirt.io/pku": "true", "host-model-required-features.node.kubevirt.io/rdpid": "true", "host-model-required-features.node.kubevirt.io/ss": "true", "host-model-required-features.node.kubevirt.io/svme-addr-chk": "true", "host-model-required-features.node.kubevirt.io/umip": "true", "host-model-required-features.node.kubevirt.io/vaes": "true", "host-model-required-features.node.kubevirt.io/vgif": "true", "host-model-required-features.node.kubevirt.io/wbnoinvd": "true", "host-model-required-features.node.kubevirt.io/x2apic": "true", "host-model-required-features.node.kubevirt.io/xsaveerptr": "true", "kubernetes.io/arch": "amd64", "kubernetes.io/hostname": "cloudpool-4e655bd57ef87f15", "kubernetes.io/os": "linux", "kubevirt.io/cpumanager": "true", "kubevirt.io/ksm-enabled": "false", "kubevirt.io/schedulable": "true", "linbit.com/hostname": "cloudpool-4e655bd57ef87f15", "machine-type.node.kubevirt.io/pc": "true", "machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.1.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.3.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.5.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.8.0": "true", "machine-type.node.kubevirt.io/q35": "true"}, "name": "cloudpool-4e655bd57ef87f15", "resourceVersion": "47186490", "uid": "fd1ab717-1ffb-45df-8b85-e68f5e575a8b"}, "spec": {"podCIDR": "10.244.5.0/24", "podCIDRs": ["10.244.5.0/24"]}, "status": {"addresses": [{"address": "192.168.0.5", "type": "InternalIP"}, {"address": "cloudpool-4e655bd57ef87f15", "type": "Hostname"}], "allocatable": {"cpu": "7950m", "devices.kubevirt.io/kvm": "0", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "143245379756", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "15471900Ki", "pods": "512"}, "capacity": {"cpu": "8", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "155722456Ki", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "15967516Ki", "pods": "512"}, "conditions": [{"lastHeartbeatTime": "2026-08-30T06:38:13Z", "lastTransitionTime": "2026-08-30T06:38:13Z", "message": "Cilium is running on this node", "reason": "CiliumIsUp", "status": "False", "type": "NetworkUnavailable"}, {"lastHeartbeatTime": "2026-08-30T06:38:15Z", "lastTransitionTime": "2026-08-13T01:35:32Z", "message": "kubelet has sufficient memory available", "reason": "KubeletHasSufficientMemory", "status": "False", "type": "MemoryPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:15Z", "lastTransitionTime": "2026-08-13T01:35:32Z", "message": "kubelet has no disk pressure", "reason": "KubeletHasNoDiskPressure", "status": "False", "type": "DiskPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:15Z", "lastTransitionTime": "2026-08-13T01:35:32Z", "message": "kubelet has sufficient PID available", "reason": "KubeletHasSufficientPID", "status": "False", "type": "PIDPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:15Z", "lastTransitionTime": "2026-08-13T01:35:55Z", "message": "kubelet is posting ready status", "reason": "KubeletReady", "status": "True", "type": "Ready"}], "daemonEndpoints": {"kubeletEndpoint": {"Port": 10250}}, "features": {"supplementalGroupsPolicy": true}, "nodeInfo": {"architecture": "amd64", "bootID": "5aafe461-15da-4700-8447-946cec3874d5", "containerRuntimeVersion": "containerd://2.1.6", "kernelVersion": "6.18.18-talos", "kubeProxyVersion": "", "kubeletVersion": "v1.34.3", "machineID": "72d232a97c5204a80c8c2159e698ec20", "operatingSystem": "linux", "osImage": "Talos (v1.12.6)", "systemUUID": "a5320070-c6a7-418a-bb48-becd0d2f4aaf"}, "runtimeHandlers": [{"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": ""}, {"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": "runc"}]}}, {"apiVersion": "v1", "kind": "Node", "metadata": {"creationTimestamp": "2026-08-12T09:41:07Z", "labels": {"beta.kubernetes.io/arch": "amd64", "beta.kubernetes.io/os": "linux", "cpu-feature.node.kubevirt.io/3dnowprefetch": "true", "cpu-feature.node.kubevirt.io/abm": "true", "cpu-feature.node.kubevirt.io/adx": "true", "cpu-feature.node.kubevirt.io/aes": "true", "cpu-feature.node.kubevirt.io/amd-psfd": "true", "cpu-feature.node.kubevirt.io/amd-ssbd": "true", "cpu-feature.node.kubevirt.io/amd-stibp": "true", "cpu-feature.node.kubevirt.io/apic": "true", "cpu-feature.node.kubevirt.io/arat": "true", "cpu-feature.node.kubevirt.io/auto-ibrs": "true", "cpu-feature.node.kubevirt.io/avx": "true", "cpu-feature.node.kubevirt.io/avx2": "true", "cpu-feature.node.kubevirt.io/avx512-bf16": "true", "cpu-feature.node.kubevirt.io/avx512-vpopcntdq": "true", "cpu-feature.node.kubevirt.io/avx512bitalg": "true", "cpu-feature.node.kubevirt.io/avx512bw": "true", "cpu-feature.node.kubevirt.io/avx512cd": "true", "cpu-feature.node.kubevirt.io/avx512dq": "true", "cpu-feature.node.kubevirt.io/avx512f": "true", "cpu-feature.node.kubevirt.io/avx512ifma": "true", "cpu-feature.node.kubevirt.io/avx512vbmi": "true", "cpu-feature.node.kubevirt.io/avx512vbmi2": "true", "cpu-feature.node.kubevirt.io/avx512vl": "true", "cpu-feature.node.kubevirt.io/avx512vnni": "true", "cpu-feature.node.kubevirt.io/bmi1": "true", "cpu-feature.node.kubevirt.io/bmi2": "true", "cpu-feature.node.kubevirt.io/clflush": "true", "cpu-feature.node.kubevirt.io/clflushopt": "true", "cpu-feature.node.kubevirt.io/clwb": "true", "cpu-feature.node.kubevirt.io/clzero": "true", "cpu-feature.node.kubevirt.io/cmov": "true", "cpu-feature.node.kubevirt.io/cmp_legacy": "true", "cpu-feature.node.kubevirt.io/cr8legacy": "true", "cpu-feature.node.kubevirt.io/cx16": "true", "cpu-feature.node.kubevirt.io/cx8": "true", "cpu-feature.node.kubevirt.io/de": "true", "cpu-feature.node.kubevirt.io/erms": "true", "cpu-feature.node.kubevirt.io/f16c": "true", "cpu-feature.node.kubevirt.io/flush-l1d": "true", "cpu-feature.node.kubevirt.io/flushbyasid": "true", "cpu-feature.node.kubevirt.io/fma": "true", "cpu-feature.node.kubevirt.io/fpu": "true", "cpu-feature.node.kubevirt.io/fsgsbase": "true", "cpu-feature.node.kubevirt.io/fsrm": "true", "cpu-feature.node.kubevirt.io/fxsr": "true", "cpu-feature.node.kubevirt.io/fxsr_opt": "true", "cpu-feature.node.kubevirt.io/gfni": "true", "cpu-feature.node.kubevirt.io/hypervisor": "true", "cpu-feature.node.kubevirt.io/ibpb": "true", "cpu-feature.node.kubevirt.io/ibpb-brtype": "true", "cpu-feature.node.kubevirt.io/ibrs": "true", "cpu-feature.node.kubevirt.io/invpcid": "true", "cpu-feature.node.kubevirt.io/invtsc": "true", "cpu-feature.node.kubevirt.io/la57": "true", "cpu-feature.node.kubevirt.io/lahf_lm": "true", "cpu-feature.node.kubevirt.io/lbrv": "true", "cpu-feature.node.kubevirt.io/lfence-always-serializing": "true", "cpu-feature.node.kubevirt.io/lm": "true", "cpu-feature.node.kubevirt.io/mca": "true", "cpu-feature.node.kubevirt.io/mce": "true", "cpu-feature.node.kubevirt.io/misalignsse": "true", "cpu-feature.node.kubevirt.io/mmx": "true", "cpu-feature.node.kubevirt.io/mmxext": "true", "cpu-feature.node.kubevirt.io/movbe": "true", "cpu-feature.node.kubevirt.io/msr": "true", "cpu-feature.node.kubevirt.io/mtrr": "true", "cpu-feature.node.kubevirt.io/no-nested-data-bp": "true", "cpu-feature.node.kubevirt.io/npt": "true", "cpu-feature.node.kubevirt.io/nrip-save": "true", "cpu-feature.node.kubevirt.io/null-sel-clr-base": "true", "cpu-feature.node.kubevirt.io/nx": "true", "cpu-feature.node.kubevirt.io/osvw": "true", "cpu-feature.node.kubevirt.io/overflow-recov": "true", "cpu-feature.node.kubevirt.io/pae": "true", "cpu-feature.node.kubevirt.io/pat": "true", "cpu-feature.node.kubevirt.io/pause-filter": "true", "cpu-feature.node.kubevirt.io/pcid": "true", "cpu-feature.node.kubevirt.io/pclmuldq": "true", "cpu-feature.node.kubevirt.io/pdpe1gb": "true", "cpu-feature.node.kubevirt.io/perfctr_core": "true", "cpu-feature.node.kubevirt.io/perfmon-v2": "true", "cpu-feature.node.kubevirt.io/pfthreshold": "true", "cpu-feature.node.kubevirt.io/pge": "true", "cpu-feature.node.kubevirt.io/pku": "true", "cpu-feature.node.kubevirt.io/pni": "true", "cpu-feature.node.kubevirt.io/popcnt": "true", "cpu-feature.node.kubevirt.io/pse": "true", "cpu-feature.node.kubevirt.io/pse36": "true", "cpu-feature.node.kubevirt.io/rdpid": "true", "cpu-feature.node.kubevirt.io/rdrand": "true", "cpu-feature.node.kubevirt.io/rdseed": "true", "cpu-feature.node.kubevirt.io/rdtscp": "true", "cpu-feature.node.kubevirt.io/sbpb": "true", "cpu-feature.node.kubevirt.io/sep": "true", "cpu-feature.node.kubevirt.io/sha-ni": "true", "cpu-feature.node.kubevirt.io/smap": "true", "cpu-feature.node.kubevirt.io/smep": "true", "cpu-feature.node.kubevirt.io/spec-ctrl": "true", "cpu-feature.node.kubevirt.io/ssbd": "true", "cpu-feature.node.kubevirt.io/sse": "true", "cpu-feature.node.kubevirt.io/sse2": "true", "cpu-feature.node.kubevirt.io/sse4.1": "true", "cpu-feature.node.kubevirt.io/sse4.2": "true", "cpu-feature.node.kubevirt.io/sse4a": "true", "cpu-feature.node.kubevirt.io/ssse3": "true", "cpu-feature.node.kubevirt.io/stibp": "true", "cpu-feature.node.kubevirt.io/stibp-always-on": "true", "cpu-feature.node.kubevirt.io/succor": "true", "cpu-feature.node.kubevirt.io/svm": "true", "cpu-feature.node.kubevirt.io/svme-addr-chk": "true", "cpu-feature.node.kubevirt.io/syscall": "true", "cpu-feature.node.kubevirt.io/tsc": "true", "cpu-feature.node.kubevirt.io/tsc-deadline": "true", "cpu-feature.node.kubevirt.io/tsc-scale": "true", "cpu-feature.node.kubevirt.io/tsc_adjust": "true", "cpu-feature.node.kubevirt.io/umip": "true", "cpu-feature.node.kubevirt.io/v-vmsave-vmload": "true", "cpu-feature.node.kubevirt.io/vaes": "true", "cpu-feature.node.kubevirt.io/vgif": "true", "cpu-feature.node.kubevirt.io/virt-ssbd": "true", "cpu-feature.node.kubevirt.io/vmcb-clean": "true", "cpu-feature.node.kubevirt.io/vme": "true", "cpu-feature.node.kubevirt.io/vnmi": "true", "cpu-feature.node.kubevirt.io/vpclmulqdq": "true", "cpu-feature.node.kubevirt.io/wbnoinvd": "true", "cpu-feature.node.kubevirt.io/x2apic": "true", "cpu-feature.node.kubevirt.io/xgetbv1": "true", "cpu-feature.node.kubevirt.io/xsave": "true", "cpu-feature.node.kubevirt.io/xsavec": "true", "cpu-feature.node.kubevirt.io/xsaveerptr": "true", "cpu-feature.node.kubevirt.io/xsaveopt": "true", "cpu-feature.node.kubevirt.io/xsaves": "true", "cpu-model-migration.node.kubevirt.io/Broadwell": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v1": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v2": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v3": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v1": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v1": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v3": "true", "cpu-model-migration.node.kubevirt.io/Dhyana": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v1": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-IBPB": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v4": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell": "true", "cpu-model-migration.node.kubevirt.io/Haswell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v1": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v3": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v6": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v7": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v2": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5-v1": "true", "cpu-model-migration.node.kubevirt.io/Penryn": "true", "cpu-model-migration.node.kubevirt.io/Penryn-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v3": "true", "cpu-model-migration.node.kubevirt.io/SierraForest": "true", "cpu-model-migration.node.kubevirt.io/SierraForest-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Snowridge": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v1": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v2": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v3": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v4": "true", "cpu-model-migration.node.kubevirt.io/Westmere": "true", "cpu-model-migration.node.kubevirt.io/Westmere-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v1": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v2": "true", "cpu-model.node.kubevirt.io/Broadwell-noTSX": "true", "cpu-model.node.kubevirt.io/Broadwell-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Broadwell-v2": "true", "cpu-model.node.kubevirt.io/Broadwell-v4": "true", "cpu-model.node.kubevirt.io/Denverton-v2": "true", "cpu-model.node.kubevirt.io/Denverton-v3": "true", "cpu-model.node.kubevirt.io/Dhyana": "true", "cpu-model.node.kubevirt.io/Dhyana-v1": "true", "cpu-model.node.kubevirt.io/Dhyana-v2": "true", "cpu-model.node.kubevirt.io/EPYC": "true", "cpu-model.node.kubevirt.io/EPYC-Genoa": "true", "cpu-model.node.kubevirt.io/EPYC-Genoa-v1": "true", "cpu-model.node.kubevirt.io/EPYC-IBPB": "true", "cpu-model.node.kubevirt.io/EPYC-Milan": "true", "cpu-model.node.kubevirt.io/EPYC-Milan-v1": "true", "cpu-model.node.kubevirt.io/EPYC-Milan-v2": "true", "cpu-model.node.kubevirt.io/EPYC-Rome": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v1": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v2": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v3": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v4": "true", "cpu-model.node.kubevirt.io/EPYC-v1": "true", "cpu-model.node.kubevirt.io/EPYC-v2": "true", "cpu-model.node.kubevirt.io/EPYC-v3": "true", "cpu-model.node.kubevirt.io/EPYC-v4": "true", "cpu-model.node.kubevirt.io/Haswell-noTSX": "true", "cpu-model.node.kubevirt.io/Haswell-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Haswell-v2": "true", "cpu-model.node.kubevirt.io/Haswell-v4": "true", "cpu-model.node.kubevirt.io/Icelake-Server-noTSX": "true", "cpu-model.node.kubevirt.io/Icelake-Server-v2": "true", "cpu-model.node.kubevirt.io/IvyBridge": "true", "cpu-model.node.kubevirt.io/IvyBridge-IBRS": "true", "cpu-model.node.kubevirt.io/IvyBridge-v1": "true", "cpu-model.node.kubevirt.io/IvyBridge-v2": "true", "cpu-model.node.kubevirt.io/Nehalem": "true", "cpu-model.node.kubevirt.io/Nehalem-IBRS": "true", "cpu-model.node.kubevirt.io/Nehalem-v1": "true", "cpu-model.node.kubevirt.io/Nehalem-v2": "true", "cpu-model.node.kubevirt.io/Opteron_G3": "true", "cpu-model.node.kubevirt.io/Opteron_G3-v1": "true", "cpu-model.node.kubevirt.io/Penryn": "true", "cpu-model.node.kubevirt.io/Penryn-v1": "true", "cpu-model.node.kubevirt.io/SandyBridge": "true", "cpu-model.node.kubevirt.io/SandyBridge-IBRS": "true", "cpu-model.node.kubevirt.io/SandyBridge-v1": "true", "cpu-model.node.kubevirt.io/SandyBridge-v2": "true", "cpu-model.node.kubevirt.io/Skylake-Client-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Skylake-Client-v3": "true", "cpu-model.node.kubevirt.io/Skylake-Client-v4": "true", "cpu-model.node.kubevirt.io/Skylake-Server-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v3": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v4": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v5": "true", "cpu-model.node.kubevirt.io/Westmere": "true", "cpu-model.node.kubevirt.io/Westmere-IBRS": "true", "cpu-model.node.kubevirt.io/Westmere-v1": "true", "cpu-model.node.kubevirt.io/Westmere-v2": "true", "cpu-timer.node.kubevirt.io/tsc-frequency": "2749998000", "cpu-timer.node.kubevirt.io/tsc-scalable": "true", "cpu-vendor.node.kubevirt.io/AMD": "true", "cpumanager": "true", "extensions.talos.dev/amd-ucode": "20260309", "extensions.talos.dev/amdgpu": "20260309-v1.12.6", "extensions.talos.dev/bnx2-bnx2x": "20260309", "extensions.talos.dev/drbd": "9.2.16-v1.12.6", "extensions.talos.dev/i915": "20260309-v1.12.6", "extensions.talos.dev/intel-ice-firmware": "20260309", "extensions.talos.dev/intel-ucode": "20260227", "extensions.talos.dev/modules.dep": "6.18.18-talos", "extensions.talos.dev/qlogic-firmware": "20260309", "extensions.talos.dev/zfs": "2.4.1-v1.12.6", "host-model-cpu.node.kubevirt.io/EPYC-Genoa": "true", "host-model-required-features.node.kubevirt.io/cmp_legacy": "true", "host-model-required-features.node.kubevirt.io/flush-l1d": "true", "host-model-required-features.node.kubevirt.io/flushbyasid": "true", "host-model-required-features.node.kubevirt.io/hypervisor": "true", "host-model-required-features.node.kubevirt.io/ibpb-brtype": "true", "host-model-required-features.node.kubevirt.io/invtsc": "true", "host-model-required-features.node.kubevirt.io/lbrv": "true", "host-model-required-features.node.kubevirt.io/overflow-recov": "true", "host-model-required-features.node.kubevirt.io/pause-filter": "true", "host-model-required-features.node.kubevirt.io/perfmon-v2": "true", "host-model-required-features.node.kubevirt.io/pfthreshold": "true", "host-model-required-features.node.kubevirt.io/sbpb": "true", "host-model-required-features.node.kubevirt.io/spec-ctrl": "true", "host-model-required-features.node.kubevirt.io/ssbd": "true", "host-model-required-features.node.kubevirt.io/stibp": "true", "host-model-required-features.node.kubevirt.io/succor": "true", "host-model-required-features.node.kubevirt.io/tsc-deadline": "true", "host-model-required-features.node.kubevirt.io/tsc-scale": "true", "host-model-required-features.node.kubevirt.io/tsc_adjust": "true", "host-model-required-features.node.kubevirt.io/v-vmsave-vmload": "true", "host-model-required-features.node.kubevirt.io/vgif": "true", "host-model-required-features.node.kubevirt.io/virt-ssbd": "true", "host-model-required-features.node.kubevirt.io/vmcb-clean": "true", "host-model-required-features.node.kubevirt.io/x2apic": "true", "hyperv.node.kubevirt.io/base": "true", "hyperv.node.kubevirt.io/frequencies": "true", "hyperv.node.kubevirt.io/ipi": "true", "hyperv.node.kubevirt.io/reenlightenment": "true", "hyperv.node.kubevirt.io/reset": "true", "hyperv.node.kubevirt.io/runtime": "true", "hyperv.node.kubevirt.io/synic": "true", "hyperv.node.kubevirt.io/synic2": "true", "hyperv.node.kubevirt.io/synictimer": "true", "hyperv.node.kubevirt.io/time": "true", "hyperv.node.kubevirt.io/tlbflush": "true", "hyperv.node.kubevirt.io/vpindex": "true", "kubernetes.io/arch": "amd64", "kubernetes.io/hostname": "ws1", "kubernetes.io/os": "linux", "kubevirt.io/cpumanager": "true", "kubevirt.io/ksm-enabled": "false", "kubevirt.io/schedulable": "true", "linbit.com/hostname": "ws1", "machine-type.node.kubevirt.io/pc": "true", "machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.1.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.3.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.5.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.8.0": "true", "machine-type.node.kubevirt.io/q35": "true", "node-role.kubernetes.io/control-plane": "", "scheduling.node.kubevirt.io/tsc-frequency-2749998000": "true"}, "name": "ws1", "resourceVersion": "47186451", "uid": "a8640610-72df-4154-a9d3-4a2cca4cddc4"}, "spec": {"podCIDR": "10.244.0.0/24", "podCIDRs": ["10.244.0.0/24"]}, "status": {"addresses": [{"address": "192.168.100.2", "type": "InternalIP"}, {"address": "ws1", "type": "Hostname"}, {"address": "203.0.113.11", "type": "ExternalIP"}], "allocatable": {"cpu": "95950m", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "3452645798725", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "130907696Ki", "pods": "512"}, "capacity": {"cpu": "96", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "3746651736Ki", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "131534384Ki", "pods": "512"}, "conditions": [{"lastHeartbeatTime": "2026-08-30T06:38:13Z", "lastTransitionTime": "2026-08-30T06:38:13Z", "message": "Cilium is running on this node", "reason": "CiliumIsUp", "status": "False", "type": "NetworkUnavailable"}, {"lastHeartbeatTime": "2026-08-30T06:38:07Z", "lastTransitionTime": "2026-08-12T09:53:11Z", "message": "kubelet has sufficient memory available", "reason": "KubeletHasSufficientMemory", "status": "False", "type": "MemoryPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:07Z", "lastTransitionTime": "2026-08-12T09:53:11Z", "message": "kubelet has no disk pressure", "reason": "KubeletHasNoDiskPressure", "status": "False", "type": "DiskPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:07Z", "lastTransitionTime": "2026-08-12T09:53:11Z", "message": "kubelet has sufficient PID available", "reason": "KubeletHasSufficientPID", "status": "False", "type": "PIDPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:07Z", "lastTransitionTime": "2026-08-12T09:55:13Z", "message": "kubelet is posting ready status", "reason": "KubeletReady", "status": "True", "type": "Ready"}], "daemonEndpoints": {"kubeletEndpoint": {"Port": 10250}}, "features": {"supplementalGroupsPolicy": true}, "nodeInfo": {"architecture": "amd64", "bootID": "40382690-6d40-426a-9cc8-115ca4296f9a", "containerRuntimeVersion": "containerd://2.1.6", "kernelVersion": "6.18.18-talos", "kubeProxyVersion": "", "kubeletVersion": "v1.34.3", "machineID": "7fde46a61f072de6653f49a70c15317a", "operatingSystem": "linux", "osImage": "Talos (v1.12.6)", "systemUUID": "669f318c-bfde-11d3-01a8-9c6b004e74b0"}, "runtimeHandlers": [{"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": ""}, {"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": "runc"}], "volumesAttached": [{"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b89c2801-e4f4-4b08-a98a-31dcd921ff3d"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e5777355-fb23-44d8-b71a-ca7b834836f3"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-515e56b1-c832-4613-b5ca-fb437794f94a"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-bb4fd672-2d71-4ca7-befe-18520b8b12e6"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ff8814ba-3b0a-4075-8a72-e80493d657ca"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1da1f681-ab8e-4e53-8be3-db127d17d037"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ad4fdbd7-7b1a-41de-ba5a-dfd19e285b82"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ef726cb0-68c4-47a2-8e6f-1aa2e1cf96a9"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f929d40d-38b5-4a71-891a-ee17d929a0eb"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-251f9bdf-f710-43a6-baf8-d182d2f71b24"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-238f611b-0409-4062-898e-32b0b2256c97"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e99ab835-22e9-437a-ac84-778716d36fc8"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-3dc2b814-24ac-4b1c-90dc-8536310087d7"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-63c828c4-2db8-41a9-b010-98b97c51a867"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6324fd89-e4a1-435a-9c9f-16c2dee34d3e"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-591d48c7-f13f-4dec-a31a-8df316ad8e6f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-edd94204-0e7b-4cc8-ad64-9fbaada8ae9e"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9bfb425b-e4c4-4540-a63c-7c68644dd4bd"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-03d0fb37-e38b-49d0-a50b-e8b67b82ba01"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7f3bdf49-a29e-4433-b6a7-500d17d43866"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e74fa515-8b3f-4e11-9f0a-9e10edd0cbdb"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8d93604a-d4af-4d15-9849-7b15ca5cd0c0"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-d8420012-30c8-4915-87f3-eaae9036e0e3"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-c708a88a-ae89-40da-96cb-d1baba888555"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8ba22dc2-a31c-4a9e-a9e3-bd0d3df29587"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8e4d0f05-76df-4e62-91a1-e158248e32c1"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-db6ccd1b-06f4-4f6e-9c06-92a0714d1675"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-4c350f39-7a8a-434f-ad01-1035ad188699"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ce3e0079-69a7-415a-a45e-61e41089b359"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-51c078a0-f2a1-4959-b852-6bc397afd24b"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-144ba2b0-cc09-4279-a685-dd494652d627"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f7cbdea0-2882-42f9-a7d9-51f6b8823398"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-295bd4b3-45e4-4dbc-a65a-67f0a09d7950"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-daca0b4b-28f4-4668-9e37-ad2f3d0e096c"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-94aafdcd-8fbe-455c-8380-b99514363889"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b7216e00-061a-4666-9fde-5afcb9a03132"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-5362011f-38b4-43f2-b252-eb788f4c62d0"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-460fadef-9287-4364-8e12-f0046c0cc6d1"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ecb869ff-b3ce-44b4-9a3f-c451d2bac733"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-17e6033a-8f2d-4c9e-897b-315bdbc672b5"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-a0abcf26-08f8-43bc-bb68-4f526b5f7d33"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-5e6dc175-521f-4f60-921f-759e81bb3458"}], "volumesInUse": ["kubernetes.io/csi/linstor.csi.linbit.com^pvc-03d0fb37-e38b-49d0-a50b-e8b67b82ba01", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-144ba2b0-cc09-4279-a685-dd494652d627", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-17e6033a-8f2d-4c9e-897b-315bdbc672b5", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1da1f681-ab8e-4e53-8be3-db127d17d037", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-238f611b-0409-4062-898e-32b0b2256c97", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-251f9bdf-f710-43a6-baf8-d182d2f71b24", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-295bd4b3-45e4-4dbc-a65a-67f0a09d7950", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-3dc2b814-24ac-4b1c-90dc-8536310087d7", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-460fadef-9287-4364-8e12-f0046c0cc6d1", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-4c350f39-7a8a-434f-ad01-1035ad188699", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-515e56b1-c832-4613-b5ca-fb437794f94a", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-51c078a0-f2a1-4959-b852-6bc397afd24b", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-5362011f-38b4-43f2-b252-eb788f4c62d0", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-591d48c7-f13f-4dec-a31a-8df316ad8e6f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-5e6dc175-521f-4f60-921f-759e81bb3458", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6324fd89-e4a1-435a-9c9f-16c2dee34d3e", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-63c828c4-2db8-41a9-b010-98b97c51a867", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7f3bdf49-a29e-4433-b6a7-500d17d43866", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8ba22dc2-a31c-4a9e-a9e3-bd0d3df29587", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8d93604a-d4af-4d15-9849-7b15ca5cd0c0", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8e4d0f05-76df-4e62-91a1-e158248e32c1", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-94aafdcd-8fbe-455c-8380-b99514363889", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9bfb425b-e4c4-4540-a63c-7c68644dd4bd", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-a0abcf26-08f8-43bc-bb68-4f526b5f7d33", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ad4fdbd7-7b1a-41de-ba5a-dfd19e285b82", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b7216e00-061a-4666-9fde-5afcb9a03132", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b89c2801-e4f4-4b08-a98a-31dcd921ff3d", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-bb4fd672-2d71-4ca7-befe-18520b8b12e6", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-c708a88a-ae89-40da-96cb-d1baba888555", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ce3e0079-69a7-415a-a45e-61e41089b359", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-d8420012-30c8-4915-87f3-eaae9036e0e3", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-daca0b4b-28f4-4668-9e37-ad2f3d0e096c", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-db6ccd1b-06f4-4f6e-9c06-92a0714d1675", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e5777355-fb23-44d8-b71a-ca7b834836f3", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e74fa515-8b3f-4e11-9f0a-9e10edd0cbdb", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e99ab835-22e9-437a-ac84-778716d36fc8", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ecb869ff-b3ce-44b4-9a3f-c451d2bac733", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-edd94204-0e7b-4cc8-ad64-9fbaada8ae9e", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ef726cb0-68c4-47a2-8e6f-1aa2e1cf96a9", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f7cbdea0-2882-42f9-a7d9-51f6b8823398", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f929d40d-38b5-4a71-891a-ee17d929a0eb", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ff8814ba-3b0a-4075-8a72-e80493d657ca"]}}, {"apiVersion": "v1", "kind": "Node", "metadata": {"creationTimestamp": "2026-08-12T09:41:11Z", "labels": {"beta.kubernetes.io/arch": "amd64", "beta.kubernetes.io/os": "linux", "cpu-feature.node.kubevirt.io/3dnowprefetch": "true", "cpu-feature.node.kubevirt.io/abm": "true", "cpu-feature.node.kubevirt.io/adx": "true", "cpu-feature.node.kubevirt.io/aes": "true", "cpu-feature.node.kubevirt.io/amd-psfd": "true", "cpu-feature.node.kubevirt.io/amd-ssbd": "true", "cpu-feature.node.kubevirt.io/amd-stibp": "true", "cpu-feature.node.kubevirt.io/apic": "true", "cpu-feature.node.kubevirt.io/arat": "true", "cpu-feature.node.kubevirt.io/auto-ibrs": "true", "cpu-feature.node.kubevirt.io/avx": "true", "cpu-feature.node.kubevirt.io/avx2": "true", "cpu-feature.node.kubevirt.io/avx512-bf16": "true", "cpu-feature.node.kubevirt.io/avx512-vpopcntdq": "true", "cpu-feature.node.kubevirt.io/avx512bitalg": "true", "cpu-feature.node.kubevirt.io/avx512bw": "true", "cpu-feature.node.kubevirt.io/avx512cd": "true", "cpu-feature.node.kubevirt.io/avx512dq": "true", "cpu-feature.node.kubevirt.io/avx512f": "true", "cpu-feature.node.kubevirt.io/avx512ifma": "true", "cpu-feature.node.kubevirt.io/avx512vbmi": "true", "cpu-feature.node.kubevirt.io/avx512vbmi2": "true", "cpu-feature.node.kubevirt.io/avx512vl": "true", "cpu-feature.node.kubevirt.io/avx512vnni": "true", "cpu-feature.node.kubevirt.io/bmi1": "true", "cpu-feature.node.kubevirt.io/bmi2": "true", "cpu-feature.node.kubevirt.io/clflush": "true", "cpu-feature.node.kubevirt.io/clflushopt": "true", "cpu-feature.node.kubevirt.io/clwb": "true", "cpu-feature.node.kubevirt.io/clzero": "true", "cpu-feature.node.kubevirt.io/cmov": "true", "cpu-feature.node.kubevirt.io/cmp_legacy": "true", "cpu-feature.node.kubevirt.io/cr8legacy": "true", "cpu-feature.node.kubevirt.io/cx16": "true", "cpu-feature.node.kubevirt.io/cx8": "true", "cpu-feature.node.kubevirt.io/de": "true", "cpu-feature.node.kubevirt.io/erms": "true", "cpu-feature.node.kubevirt.io/f16c": "true", "cpu-feature.node.kubevirt.io/flush-l1d": "true", "cpu-feature.node.kubevirt.io/flushbyasid": "true", "cpu-feature.node.kubevirt.io/fma": "true", "cpu-feature.node.kubevirt.io/fpu": "true", "cpu-feature.node.kubevirt.io/fsgsbase": "true", "cpu-feature.node.kubevirt.io/fsrm": "true", "cpu-feature.node.kubevirt.io/fxsr": "true", "cpu-feature.node.kubevirt.io/fxsr_opt": "true", "cpu-feature.node.kubevirt.io/gfni": "true", "cpu-feature.node.kubevirt.io/hypervisor": "true", "cpu-feature.node.kubevirt.io/ibpb": "true", "cpu-feature.node.kubevirt.io/ibpb-brtype": "true", "cpu-feature.node.kubevirt.io/ibrs": "true", "cpu-feature.node.kubevirt.io/invpcid": "true", "cpu-feature.node.kubevirt.io/invtsc": "true", "cpu-feature.node.kubevirt.io/la57": "true", "cpu-feature.node.kubevirt.io/lahf_lm": "true", "cpu-feature.node.kubevirt.io/lbrv": "true", "cpu-feature.node.kubevirt.io/lfence-always-serializing": "true", "cpu-feature.node.kubevirt.io/lm": "true", "cpu-feature.node.kubevirt.io/mca": "true", "cpu-feature.node.kubevirt.io/mce": "true", "cpu-feature.node.kubevirt.io/misalignsse": "true", "cpu-feature.node.kubevirt.io/mmx": "true", "cpu-feature.node.kubevirt.io/mmxext": "true", "cpu-feature.node.kubevirt.io/movbe": "true", "cpu-feature.node.kubevirt.io/msr": "true", "cpu-feature.node.kubevirt.io/mtrr": "true", "cpu-feature.node.kubevirt.io/no-nested-data-bp": "true", "cpu-feature.node.kubevirt.io/npt": "true", "cpu-feature.node.kubevirt.io/nrip-save": "true", "cpu-feature.node.kubevirt.io/null-sel-clr-base": "true", "cpu-feature.node.kubevirt.io/nx": "true", "cpu-feature.node.kubevirt.io/osvw": "true", "cpu-feature.node.kubevirt.io/overflow-recov": "true", "cpu-feature.node.kubevirt.io/pae": "true", "cpu-feature.node.kubevirt.io/pat": "true", "cpu-feature.node.kubevirt.io/pause-filter": "true", "cpu-feature.node.kubevirt.io/pcid": "true", "cpu-feature.node.kubevirt.io/pclmuldq": "true", "cpu-feature.node.kubevirt.io/pdpe1gb": "true", "cpu-feature.node.kubevirt.io/perfctr_core": "true", "cpu-feature.node.kubevirt.io/perfmon-v2": "true", "cpu-feature.node.kubevirt.io/pfthreshold": "true", "cpu-feature.node.kubevirt.io/pge": "true", "cpu-feature.node.kubevirt.io/pku": "true", "cpu-feature.node.kubevirt.io/pni": "true", "cpu-feature.node.kubevirt.io/popcnt": "true", "cpu-feature.node.kubevirt.io/pse": "true", "cpu-feature.node.kubevirt.io/pse36": "true", "cpu-feature.node.kubevirt.io/rdpid": "true", "cpu-feature.node.kubevirt.io/rdrand": "true", "cpu-feature.node.kubevirt.io/rdseed": "true", "cpu-feature.node.kubevirt.io/rdtscp": "true", "cpu-feature.node.kubevirt.io/sbpb": "true", "cpu-feature.node.kubevirt.io/sep": "true", "cpu-feature.node.kubevirt.io/sha-ni": "true", "cpu-feature.node.kubevirt.io/smap": "true", "cpu-feature.node.kubevirt.io/smep": "true", "cpu-feature.node.kubevirt.io/spec-ctrl": "true", "cpu-feature.node.kubevirt.io/ssbd": "true", "cpu-feature.node.kubevirt.io/sse": "true", "cpu-feature.node.kubevirt.io/sse2": "true", "cpu-feature.node.kubevirt.io/sse4.1": "true", "cpu-feature.node.kubevirt.io/sse4.2": "true", "cpu-feature.node.kubevirt.io/sse4a": "true", "cpu-feature.node.kubevirt.io/ssse3": "true", "cpu-feature.node.kubevirt.io/stibp": "true", "cpu-feature.node.kubevirt.io/stibp-always-on": "true", "cpu-feature.node.kubevirt.io/succor": "true", "cpu-feature.node.kubevirt.io/svm": "true", "cpu-feature.node.kubevirt.io/svme-addr-chk": "true", "cpu-feature.node.kubevirt.io/syscall": "true", "cpu-feature.node.kubevirt.io/tsc": "true", "cpu-feature.node.kubevirt.io/tsc-deadline": "true", "cpu-feature.node.kubevirt.io/tsc-scale": "true", "cpu-feature.node.kubevirt.io/tsc_adjust": "true", "cpu-feature.node.kubevirt.io/umip": "true", "cpu-feature.node.kubevirt.io/v-vmsave-vmload": "true", "cpu-feature.node.kubevirt.io/vaes": "true", "cpu-feature.node.kubevirt.io/vgif": "true", "cpu-feature.node.kubevirt.io/virt-ssbd": "true", "cpu-feature.node.kubevirt.io/vmcb-clean": "true", "cpu-feature.node.kubevirt.io/vme": "true", "cpu-feature.node.kubevirt.io/vnmi": "true", "cpu-feature.node.kubevirt.io/vpclmulqdq": "true", "cpu-feature.node.kubevirt.io/wbnoinvd": "true", "cpu-feature.node.kubevirt.io/x2apic": "true", "cpu-feature.node.kubevirt.io/xgetbv1": "true", "cpu-feature.node.kubevirt.io/xsave": "true", "cpu-feature.node.kubevirt.io/xsavec": "true", "cpu-feature.node.kubevirt.io/xsaveerptr": "true", "cpu-feature.node.kubevirt.io/xsaveopt": "true", "cpu-feature.node.kubevirt.io/xsaves": "true", "cpu-model-migration.node.kubevirt.io/Broadwell": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v1": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v2": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v3": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v1": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v1": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v3": "true", "cpu-model-migration.node.kubevirt.io/Dhyana": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v1": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-IBPB": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v4": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell": "true", "cpu-model-migration.node.kubevirt.io/Haswell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v1": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v3": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v6": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v7": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v2": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5-v1": "true", "cpu-model-migration.node.kubevirt.io/Penryn": "true", "cpu-model-migration.node.kubevirt.io/Penryn-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v3": "true", "cpu-model-migration.node.kubevirt.io/SierraForest": "true", "cpu-model-migration.node.kubevirt.io/SierraForest-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Snowridge": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v1": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v2": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v3": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v4": "true", "cpu-model-migration.node.kubevirt.io/Westmere": "true", "cpu-model-migration.node.kubevirt.io/Westmere-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v1": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v2": "true", "cpu-model.node.kubevirt.io/Broadwell-noTSX": "true", "cpu-model.node.kubevirt.io/Broadwell-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Broadwell-v2": "true", "cpu-model.node.kubevirt.io/Broadwell-v4": "true", "cpu-model.node.kubevirt.io/Denverton-v2": "true", "cpu-model.node.kubevirt.io/Denverton-v3": "true", "cpu-model.node.kubevirt.io/Dhyana": "true", "cpu-model.node.kubevirt.io/Dhyana-v1": "true", "cpu-model.node.kubevirt.io/Dhyana-v2": "true", "cpu-model.node.kubevirt.io/EPYC": "true", "cpu-model.node.kubevirt.io/EPYC-Genoa": "true", "cpu-model.node.kubevirt.io/EPYC-Genoa-v1": "true", "cpu-model.node.kubevirt.io/EPYC-IBPB": "true", "cpu-model.node.kubevirt.io/EPYC-Milan": "true", "cpu-model.node.kubevirt.io/EPYC-Milan-v1": "true", "cpu-model.node.kubevirt.io/EPYC-Milan-v2": "true", "cpu-model.node.kubevirt.io/EPYC-Rome": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v1": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v2": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v3": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v4": "true", "cpu-model.node.kubevirt.io/EPYC-v1": "true", "cpu-model.node.kubevirt.io/EPYC-v2": "true", "cpu-model.node.kubevirt.io/EPYC-v3": "true", "cpu-model.node.kubevirt.io/EPYC-v4": "true", "cpu-model.node.kubevirt.io/Haswell-noTSX": "true", "cpu-model.node.kubevirt.io/Haswell-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Haswell-v2": "true", "cpu-model.node.kubevirt.io/Haswell-v4": "true", "cpu-model.node.kubevirt.io/Icelake-Server-noTSX": "true", "cpu-model.node.kubevirt.io/Icelake-Server-v2": "true", "cpu-model.node.kubevirt.io/IvyBridge": "true", "cpu-model.node.kubevirt.io/IvyBridge-IBRS": "true", "cpu-model.node.kubevirt.io/IvyBridge-v1": "true", "cpu-model.node.kubevirt.io/IvyBridge-v2": "true", "cpu-model.node.kubevirt.io/Nehalem": "true", "cpu-model.node.kubevirt.io/Nehalem-IBRS": "true", "cpu-model.node.kubevirt.io/Nehalem-v1": "true", "cpu-model.node.kubevirt.io/Nehalem-v2": "true", "cpu-model.node.kubevirt.io/Opteron_G3": "true", "cpu-model.node.kubevirt.io/Opteron_G3-v1": "true", "cpu-model.node.kubevirt.io/Penryn": "true", "cpu-model.node.kubevirt.io/Penryn-v1": "true", "cpu-model.node.kubevirt.io/SandyBridge": "true", "cpu-model.node.kubevirt.io/SandyBridge-IBRS": "true", "cpu-model.node.kubevirt.io/SandyBridge-v1": "true", "cpu-model.node.kubevirt.io/SandyBridge-v2": "true", "cpu-model.node.kubevirt.io/Skylake-Client-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Skylake-Client-v3": "true", "cpu-model.node.kubevirt.io/Skylake-Client-v4": "true", "cpu-model.node.kubevirt.io/Skylake-Server-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v3": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v4": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v5": "true", "cpu-model.node.kubevirt.io/Westmere": "true", "cpu-model.node.kubevirt.io/Westmere-IBRS": "true", "cpu-model.node.kubevirt.io/Westmere-v1": "true", "cpu-model.node.kubevirt.io/Westmere-v2": "true", "cpu-timer.node.kubevirt.io/tsc-frequency": "2750000000", "cpu-timer.node.kubevirt.io/tsc-scalable": "true", "cpu-vendor.node.kubevirt.io/AMD": "true", "cpumanager": "true", "extensions.talos.dev/amd-ucode": "20260309", "extensions.talos.dev/amdgpu": "20260309-v1.12.6", "extensions.talos.dev/bnx2-bnx2x": "20260309", "extensions.talos.dev/drbd": "9.2.16-v1.12.6", "extensions.talos.dev/i915": "20260309-v1.12.6", "extensions.talos.dev/intel-ice-firmware": "20260309", "extensions.talos.dev/intel-ucode": "20260227", "extensions.talos.dev/modules.dep": "6.18.18-talos", "extensions.talos.dev/qlogic-firmware": "20260309", "extensions.talos.dev/zfs": "2.4.1-v1.12.6", "host-model-cpu.node.kubevirt.io/EPYC-Genoa": "true", "host-model-required-features.node.kubevirt.io/cmp_legacy": "true", "host-model-required-features.node.kubevirt.io/flush-l1d": "true", "host-model-required-features.node.kubevirt.io/flushbyasid": "true", "host-model-required-features.node.kubevirt.io/hypervisor": "true", "host-model-required-features.node.kubevirt.io/ibpb-brtype": "true", "host-model-required-features.node.kubevirt.io/invtsc": "true", "host-model-required-features.node.kubevirt.io/lbrv": "true", "host-model-required-features.node.kubevirt.io/overflow-recov": "true", "host-model-required-features.node.kubevirt.io/pause-filter": "true", "host-model-required-features.node.kubevirt.io/perfmon-v2": "true", "host-model-required-features.node.kubevirt.io/pfthreshold": "true", "host-model-required-features.node.kubevirt.io/sbpb": "true", "host-model-required-features.node.kubevirt.io/spec-ctrl": "true", "host-model-required-features.node.kubevirt.io/ssbd": "true", "host-model-required-features.node.kubevirt.io/stibp": "true", "host-model-required-features.node.kubevirt.io/succor": "true", "host-model-required-features.node.kubevirt.io/tsc-deadline": "true", "host-model-required-features.node.kubevirt.io/tsc-scale": "true", "host-model-required-features.node.kubevirt.io/tsc_adjust": "true", "host-model-required-features.node.kubevirt.io/v-vmsave-vmload": "true", "host-model-required-features.node.kubevirt.io/vgif": "true", "host-model-required-features.node.kubevirt.io/virt-ssbd": "true", "host-model-required-features.node.kubevirt.io/vmcb-clean": "true", "host-model-required-features.node.kubevirt.io/x2apic": "true", "hyperv.node.kubevirt.io/base": "true", "hyperv.node.kubevirt.io/frequencies": "true", "hyperv.node.kubevirt.io/ipi": "true", "hyperv.node.kubevirt.io/reenlightenment": "true", "hyperv.node.kubevirt.io/reset": "true", "hyperv.node.kubevirt.io/runtime": "true", "hyperv.node.kubevirt.io/synic": "true", "hyperv.node.kubevirt.io/synic2": "true", "hyperv.node.kubevirt.io/synictimer": "true", "hyperv.node.kubevirt.io/time": "true", "hyperv.node.kubevirt.io/tlbflush": "true", "hyperv.node.kubevirt.io/vpindex": "true", "kubernetes.io/arch": "amd64", "kubernetes.io/hostname": "ws2", "kubernetes.io/os": "linux", "kubevirt.io/cpumanager": "true", "kubevirt.io/ksm-enabled": "false", "kubevirt.io/schedulable": "true", "linbit.com/hostname": "ws2", "machine-type.node.kubevirt.io/pc": "true", "machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.1.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.3.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.5.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.8.0": "true", "machine-type.node.kubevirt.io/q35": "true", "node-role.kubernetes.io/control-plane": "", "scheduling.node.kubevirt.io/tsc-frequency-2749998000": "true", "scheduling.node.kubevirt.io/tsc-frequency-2750000000": "true"}, "name": "ws2", "resourceVersion": "47186534", "uid": "bc800190-6071-4e6d-a01d-40665ba07835"}, "spec": {"podCIDR": "10.244.1.0/24", "podCIDRs": ["10.244.1.0/24"]}, "status": {"addresses": [{"address": "192.168.100.3", "type": "InternalIP"}, {"address": "ws2", "type": "Hostname"}, {"address": "203.0.113.12", "type": "ExternalIP"}], "allocatable": {"cpu": "95950m", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "3452645798725", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "130916596Ki", "pods": "512"}, "capacity": {"cpu": "96", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "3746651736Ki", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "131543284Ki", "pods": "512"}, "conditions": [{"lastHeartbeatTime": "2026-08-30T06:38:16Z", "lastTransitionTime": "2026-08-30T06:38:16Z", "message": "Cilium is running on this node", "reason": "CiliumIsUp", "status": "False", "type": "NetworkUnavailable"}, {"lastHeartbeatTime": "2026-08-30T06:38:12Z", "lastTransitionTime": "2026-08-12T09:41:11Z", "message": "kubelet has sufficient memory available", "reason": "KubeletHasSufficientMemory", "status": "False", "type": "MemoryPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:12Z", "lastTransitionTime": "2026-08-12T09:41:11Z", "message": "kubelet has no disk pressure", "reason": "KubeletHasNoDiskPressure", "status": "False", "type": "DiskPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:12Z", "lastTransitionTime": "2026-08-12T09:41:11Z", "message": "kubelet has sufficient PID available", "reason": "KubeletHasSufficientPID", "status": "False", "type": "PIDPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:12Z", "lastTransitionTime": "2026-08-12T09:55:12Z", "message": "kubelet is posting ready status", "reason": "KubeletReady", "status": "True", "type": "Ready"}], "daemonEndpoints": {"kubeletEndpoint": {"Port": 10250}}, "features": {"supplementalGroupsPolicy": true}, "nodeInfo": {"architecture": "amd64", "bootID": "9262a091-aba2-4285-8759-11a7f5c8ee1e", "containerRuntimeVersion": "containerd://2.1.6", "kernelVersion": "6.18.18-talos", "kubeProxyVersion": "", "kubeletVersion": "v1.34.3", "machineID": "af90d125cc045d8828497e4a633a991c", "operatingSystem": "linux", "osImage": "Talos (v1.12.6)", "systemUUID": "669c57e6-bfde-11d3-01a8-9c6b004e739e"}, "runtimeHandlers": [{"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": ""}, {"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": "runc"}], "volumesAttached": [{"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-66d2252a-f304-452a-b295-d5c15996ecce"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9fd8db9d-1c6c-4406-89a2-ffda6a477ad7"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b92c1845-c11e-4556-b2c4-31090590cb03"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-69505798-6985-4b5c-b957-c96cb94f5ff7"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-19f366b3-928e-49bd-bf1f-255a2ff15c50"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7e62bf0e-d01a-4261-a1f6-ef7c996f439e"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-86345bf1-002b-4efa-aa52-76c98bde204d"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-30829603-0dac-45e9-b5da-9726d68c1996"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-82ae7bac-62b3-4898-aca1-54d7825839e9"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-aa262961-622e-44d0-b95e-65a561342cdd"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-33556d25-297a-4c91-b2f6-43cabaae9027"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-642701e2-4359-4c95-8aab-501f42a5fa82"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-443d6f09-3541-4e45-ae69-ffc8e42439c4"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-fee0f751-e05b-406e-8e1e-818eed3241e0"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ad13cacb-ad0d-472a-99ee-cba6e2453492"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-218cf320-5e10-4614-9738-f6e24cf5dcdb"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e0725993-38e2-4ab8-aa46-1c7d7b02d465"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-842feea2-8c03-4b9b-993b-108a1142a99f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6a4cb0cc-5f08-4787-a231-71c94f745294"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-a6560951-7bf6-43e0-9b33-95120c2f2976"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9ed10c80-1ded-4608-9786-5fe868561101"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1b75ab04-3db8-401c-a397-9436ef259f51"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2d14836e-b179-4630-94fc-4306193d9638"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-5edd51c7-98d6-4ce9-9b50-367396648299"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ceead311-138d-4a04-8316-8736ff688dde"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-13122a95-f3fb-42b3-95b4-8a969f0c19ee"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e8df3409-f1dc-48fa-aba2-dab0d7de9305"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-5127a8e6-d467-4928-98f8-1dc2f57b4968"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-250863b0-8b19-4aea-b121-c514db9fed00"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-d4fc73f0-453d-42f6-8045-bd11d29c537f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-eda477ba-45b1-4a37-b805-c40d3eb94d9f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-0e5867f1-6df4-44f9-8088-fa48191e18b7"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-58f46f8b-c19a-4c84-9840-3e8a2860026f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2f580647-9eec-4080-b254-b2e978231979"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-465e70ea-a750-43c7-a06a-18c90c9ce30f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-94ca8728-7e94-4ef1-9167-7d07cf3b562d"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8000035c-48a6-4ae8-bfda-1672c43a7c3f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-3f8c4f09-2496-4682-b9bd-c3db60b204c7"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7d492550-67f3-4bf7-bb41-c14db794aa1c"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-cee3b28e-ca3f-4dbe-9a53-f74e5dc82369"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-0ad7d192-73fa-479e-8749-d48ea5b040e1"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-bea64c7c-b098-4386-8421-5d11388d821e"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-67264f73-b42c-4c3b-902b-3c750f010e40"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9c10b601-b85b-42d6-865d-7654766f6cd5"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-18c41ba0-d1c1-4759-a295-45cf48e984e0"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-527189c1-277f-47ae-a055-0b336b2042c6"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6137c9ba-2132-429e-a6a8-fe39d383271b"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-80a727f8-959e-4c91-9850-c649d9d5b3fd"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-47b5b5ce-3096-40ba-9d28-6843cccdef31"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-78ca5a5e-42da-46f4-9107-c2e88d7702d7"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e3911e2c-a9a5-4772-ae41-00a2b617fa4f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-94ffe560-5ad6-4201-acb9-4952c9662683"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-760e7477-5bf7-4a18-8b0c-8d3ee51c23b7"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7bad80ac-902b-4108-92d5-31f84ef7e97a"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-76340789-6a9b-4b60-98d6-bc36a3e160da"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-aaefd9cc-8f81-4db2-8104-8137a2cf71ad"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ee3bc96a-8d86-4b63-9767-471c98adc3ca"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-dbd63244-ee0b-4f82-acee-6f88b94cf5e6"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f947d480-73f4-48fe-bc3d-d1a76886a951"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ac4b77da-4096-40bd-b799-75b23e7982ca"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b3694de4-3d90-4d8f-b4b0-63879c0daba9"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b813b16e-3870-49d0-a05e-64c14e2795bb"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ea6a9f1c-e081-43fc-8115-f21237b1212a"}], "volumesInUse": ["kubernetes.io/csi/linstor.csi.linbit.com^pvc-0ad7d192-73fa-479e-8749-d48ea5b040e1", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-0e5867f1-6df4-44f9-8088-fa48191e18b7", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-13122a95-f3fb-42b3-95b4-8a969f0c19ee", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-18c41ba0-d1c1-4759-a295-45cf48e984e0", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-19f366b3-928e-49bd-bf1f-255a2ff15c50", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1b75ab04-3db8-401c-a397-9436ef259f51", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-218cf320-5e10-4614-9738-f6e24cf5dcdb", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-250863b0-8b19-4aea-b121-c514db9fed00", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2d14836e-b179-4630-94fc-4306193d9638", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2f580647-9eec-4080-b254-b2e978231979", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-30829603-0dac-45e9-b5da-9726d68c1996", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-33556d25-297a-4c91-b2f6-43cabaae9027", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-3f8c4f09-2496-4682-b9bd-c3db60b204c7", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-443d6f09-3541-4e45-ae69-ffc8e42439c4", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-465e70ea-a750-43c7-a06a-18c90c9ce30f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-47b5b5ce-3096-40ba-9d28-6843cccdef31", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-5127a8e6-d467-4928-98f8-1dc2f57b4968", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-527189c1-277f-47ae-a055-0b336b2042c6", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-58f46f8b-c19a-4c84-9840-3e8a2860026f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-5edd51c7-98d6-4ce9-9b50-367396648299", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6137c9ba-2132-429e-a6a8-fe39d383271b", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-642701e2-4359-4c95-8aab-501f42a5fa82", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-66d2252a-f304-452a-b295-d5c15996ecce", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-67264f73-b42c-4c3b-902b-3c750f010e40", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-69505798-6985-4b5c-b957-c96cb94f5ff7", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6a4cb0cc-5f08-4787-a231-71c94f745294", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-760e7477-5bf7-4a18-8b0c-8d3ee51c23b7", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-76340789-6a9b-4b60-98d6-bc36a3e160da", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-78ca5a5e-42da-46f4-9107-c2e88d7702d7", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7bad80ac-902b-4108-92d5-31f84ef7e97a", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7d492550-67f3-4bf7-bb41-c14db794aa1c", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7e62bf0e-d01a-4261-a1f6-ef7c996f439e", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8000035c-48a6-4ae8-bfda-1672c43a7c3f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-80a727f8-959e-4c91-9850-c649d9d5b3fd", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-82ae7bac-62b3-4898-aca1-54d7825839e9", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-842feea2-8c03-4b9b-993b-108a1142a99f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-86345bf1-002b-4efa-aa52-76c98bde204d", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-94ca8728-7e94-4ef1-9167-7d07cf3b562d", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-94ffe560-5ad6-4201-acb9-4952c9662683", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9c10b601-b85b-42d6-865d-7654766f6cd5", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9ed10c80-1ded-4608-9786-5fe868561101", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9fd8db9d-1c6c-4406-89a2-ffda6a477ad7", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-a6560951-7bf6-43e0-9b33-95120c2f2976", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-aa262961-622e-44d0-b95e-65a561342cdd", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-aaefd9cc-8f81-4db2-8104-8137a2cf71ad", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ac4b77da-4096-40bd-b799-75b23e7982ca", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ad13cacb-ad0d-472a-99ee-cba6e2453492", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b3694de4-3d90-4d8f-b4b0-63879c0daba9", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b813b16e-3870-49d0-a05e-64c14e2795bb", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b92c1845-c11e-4556-b2c4-31090590cb03", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-bea64c7c-b098-4386-8421-5d11388d821e", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-cee3b28e-ca3f-4dbe-9a53-f74e5dc82369", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ceead311-138d-4a04-8316-8736ff688dde", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-d4fc73f0-453d-42f6-8045-bd11d29c537f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-dbd63244-ee0b-4f82-acee-6f88b94cf5e6", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e0725993-38e2-4ab8-aa46-1c7d7b02d465", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e3911e2c-a9a5-4772-ae41-00a2b617fa4f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e8df3409-f1dc-48fa-aba2-dab0d7de9305", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ea6a9f1c-e081-43fc-8115-f21237b1212a", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-eda477ba-45b1-4a37-b805-c40d3eb94d9f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-ee3bc96a-8d86-4b63-9767-471c98adc3ca", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f947d480-73f4-48fe-bc3d-d1a76886a951", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-fee0f751-e05b-406e-8e1e-818eed3241e0"]}}, {"apiVersion": "v1", "kind": "Node", "metadata": {"creationTimestamp": "2026-08-12T09:41:32Z", "labels": {"beta.kubernetes.io/arch": "amd64", "beta.kubernetes.io/os": "linux", "cpu-feature.node.kubevirt.io/3dnowprefetch": "true", "cpu-feature.node.kubevirt.io/abm": "true", "cpu-feature.node.kubevirt.io/adx": "true", "cpu-feature.node.kubevirt.io/aes": "true", "cpu-feature.node.kubevirt.io/amd-psfd": "true", "cpu-feature.node.kubevirt.io/amd-ssbd": "true", "cpu-feature.node.kubevirt.io/amd-stibp": "true", "cpu-feature.node.kubevirt.io/apic": "true", "cpu-feature.node.kubevirt.io/arat": "true", "cpu-feature.node.kubevirt.io/auto-ibrs": "true", "cpu-feature.node.kubevirt.io/avx": "true", "cpu-feature.node.kubevirt.io/avx2": "true", "cpu-feature.node.kubevirt.io/avx512-bf16": "true", "cpu-feature.node.kubevirt.io/avx512-vpopcntdq": "true", "cpu-feature.node.kubevirt.io/avx512bitalg": "true", "cpu-feature.node.kubevirt.io/avx512bw": "true", "cpu-feature.node.kubevirt.io/avx512cd": "true", "cpu-feature.node.kubevirt.io/avx512dq": "true", "cpu-feature.node.kubevirt.io/avx512f": "true", "cpu-feature.node.kubevirt.io/avx512ifma": "true", "cpu-feature.node.kubevirt.io/avx512vbmi": "true", "cpu-feature.node.kubevirt.io/avx512vbmi2": "true", "cpu-feature.node.kubevirt.io/avx512vl": "true", "cpu-feature.node.kubevirt.io/avx512vnni": "true", "cpu-feature.node.kubevirt.io/bmi1": "true", "cpu-feature.node.kubevirt.io/bmi2": "true", "cpu-feature.node.kubevirt.io/clflush": "true", "cpu-feature.node.kubevirt.io/clflushopt": "true", "cpu-feature.node.kubevirt.io/clwb": "true", "cpu-feature.node.kubevirt.io/clzero": "true", "cpu-feature.node.kubevirt.io/cmov": "true", "cpu-feature.node.kubevirt.io/cmp_legacy": "true", "cpu-feature.node.kubevirt.io/cr8legacy": "true", "cpu-feature.node.kubevirt.io/cx16": "true", "cpu-feature.node.kubevirt.io/cx8": "true", "cpu-feature.node.kubevirt.io/de": "true", "cpu-feature.node.kubevirt.io/erms": "true", "cpu-feature.node.kubevirt.io/f16c": "true", "cpu-feature.node.kubevirt.io/flush-l1d": "true", "cpu-feature.node.kubevirt.io/flushbyasid": "true", "cpu-feature.node.kubevirt.io/fma": "true", "cpu-feature.node.kubevirt.io/fpu": "true", "cpu-feature.node.kubevirt.io/fsgsbase": "true", "cpu-feature.node.kubevirt.io/fsrm": "true", "cpu-feature.node.kubevirt.io/fxsr": "true", "cpu-feature.node.kubevirt.io/fxsr_opt": "true", "cpu-feature.node.kubevirt.io/gfni": "true", "cpu-feature.node.kubevirt.io/hypervisor": "true", "cpu-feature.node.kubevirt.io/ibpb": "true", "cpu-feature.node.kubevirt.io/ibpb-brtype": "true", "cpu-feature.node.kubevirt.io/ibrs": "true", "cpu-feature.node.kubevirt.io/invpcid": "true", "cpu-feature.node.kubevirt.io/invtsc": "true", "cpu-feature.node.kubevirt.io/la57": "true", "cpu-feature.node.kubevirt.io/lahf_lm": "true", "cpu-feature.node.kubevirt.io/lbrv": "true", "cpu-feature.node.kubevirt.io/lfence-always-serializing": "true", "cpu-feature.node.kubevirt.io/lm": "true", "cpu-feature.node.kubevirt.io/mca": "true", "cpu-feature.node.kubevirt.io/mce": "true", "cpu-feature.node.kubevirt.io/misalignsse": "true", "cpu-feature.node.kubevirt.io/mmx": "true", "cpu-feature.node.kubevirt.io/mmxext": "true", "cpu-feature.node.kubevirt.io/movbe": "true", "cpu-feature.node.kubevirt.io/msr": "true", "cpu-feature.node.kubevirt.io/mtrr": "true", "cpu-feature.node.kubevirt.io/no-nested-data-bp": "true", "cpu-feature.node.kubevirt.io/npt": "true", "cpu-feature.node.kubevirt.io/nrip-save": "true", "cpu-feature.node.kubevirt.io/null-sel-clr-base": "true", "cpu-feature.node.kubevirt.io/nx": "true", "cpu-feature.node.kubevirt.io/osvw": "true", "cpu-feature.node.kubevirt.io/overflow-recov": "true", "cpu-feature.node.kubevirt.io/pae": "true", "cpu-feature.node.kubevirt.io/pat": "true", "cpu-feature.node.kubevirt.io/pause-filter": "true", "cpu-feature.node.kubevirt.io/pcid": "true", "cpu-feature.node.kubevirt.io/pclmuldq": "true", "cpu-feature.node.kubevirt.io/pdpe1gb": "true", "cpu-feature.node.kubevirt.io/perfctr_core": "true", "cpu-feature.node.kubevirt.io/perfmon-v2": "true", "cpu-feature.node.kubevirt.io/pfthreshold": "true", "cpu-feature.node.kubevirt.io/pge": "true", "cpu-feature.node.kubevirt.io/pku": "true", "cpu-feature.node.kubevirt.io/pni": "true", "cpu-feature.node.kubevirt.io/popcnt": "true", "cpu-feature.node.kubevirt.io/pse": "true", "cpu-feature.node.kubevirt.io/pse36": "true", "cpu-feature.node.kubevirt.io/rdpid": "true", "cpu-feature.node.kubevirt.io/rdrand": "true", "cpu-feature.node.kubevirt.io/rdseed": "true", "cpu-feature.node.kubevirt.io/rdtscp": "true", "cpu-feature.node.kubevirt.io/sbpb": "true", "cpu-feature.node.kubevirt.io/sep": "true", "cpu-feature.node.kubevirt.io/sha-ni": "true", "cpu-feature.node.kubevirt.io/smap": "true", "cpu-feature.node.kubevirt.io/smep": "true", "cpu-feature.node.kubevirt.io/spec-ctrl": "true", "cpu-feature.node.kubevirt.io/ssbd": "true", "cpu-feature.node.kubevirt.io/sse": "true", "cpu-feature.node.kubevirt.io/sse2": "true", "cpu-feature.node.kubevirt.io/sse4.1": "true", "cpu-feature.node.kubevirt.io/sse4.2": "true", "cpu-feature.node.kubevirt.io/sse4a": "true", "cpu-feature.node.kubevirt.io/ssse3": "true", "cpu-feature.node.kubevirt.io/stibp": "true", "cpu-feature.node.kubevirt.io/stibp-always-on": "true", "cpu-feature.node.kubevirt.io/succor": "true", "cpu-feature.node.kubevirt.io/svm": "true", "cpu-feature.node.kubevirt.io/svme-addr-chk": "true", "cpu-feature.node.kubevirt.io/syscall": "true", "cpu-feature.node.kubevirt.io/tsc": "true", "cpu-feature.node.kubevirt.io/tsc-deadline": "true", "cpu-feature.node.kubevirt.io/tsc-scale": "true", "cpu-feature.node.kubevirt.io/tsc_adjust": "true", "cpu-feature.node.kubevirt.io/umip": "true", "cpu-feature.node.kubevirt.io/v-vmsave-vmload": "true", "cpu-feature.node.kubevirt.io/vaes": "true", "cpu-feature.node.kubevirt.io/vgif": "true", "cpu-feature.node.kubevirt.io/virt-ssbd": "true", "cpu-feature.node.kubevirt.io/vmcb-clean": "true", "cpu-feature.node.kubevirt.io/vme": "true", "cpu-feature.node.kubevirt.io/vnmi": "true", "cpu-feature.node.kubevirt.io/vpclmulqdq": "true", "cpu-feature.node.kubevirt.io/wbnoinvd": "true", "cpu-feature.node.kubevirt.io/x2apic": "true", "cpu-feature.node.kubevirt.io/xgetbv1": "true", "cpu-feature.node.kubevirt.io/xsave": "true", "cpu-feature.node.kubevirt.io/xsavec": "true", "cpu-feature.node.kubevirt.io/xsaveerptr": "true", "cpu-feature.node.kubevirt.io/xsaveopt": "true", "cpu-feature.node.kubevirt.io/xsaves": "true", "cpu-model-migration.node.kubevirt.io/Broadwell": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v1": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v2": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v3": "true", "cpu-model-migration.node.kubevirt.io/Broadwell-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Cascadelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v1": "true", "cpu-model-migration.node.kubevirt.io/Cooperlake-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v1": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v2": "true", "cpu-model-migration.node.kubevirt.io/Denverton-v3": "true", "cpu-model-migration.node.kubevirt.io/Dhyana": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v1": "true", "cpu-model-migration.node.kubevirt.io/Dhyana-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Genoa-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-IBPB": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Milan-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-Rome-v4": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v1": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v2": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v3": "true", "cpu-model-migration.node.kubevirt.io/EPYC-v4": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/GraniteRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell": "true", "cpu-model-migration.node.kubevirt.io/Haswell-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Haswell-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v1": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v2": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v3": "true", "cpu-model-migration.node.kubevirt.io/Haswell-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-noTSX": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v6": "true", "cpu-model-migration.node.kubevirt.io/Icelake-Server-v7": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/IvyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill": "true", "cpu-model-migration.node.kubevirt.io/KnightsMill-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v1": "true", "cpu-model-migration.node.kubevirt.io/Nehalem-v2": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G3-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G4-v1": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5": "true", "cpu-model-migration.node.kubevirt.io/Opteron_G5-v1": "true", "cpu-model-migration.node.kubevirt.io/Penryn": "true", "cpu-model-migration.node.kubevirt.io/Penryn-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-IBRS": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v1": "true", "cpu-model-migration.node.kubevirt.io/SandyBridge-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v1": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v2": "true", "cpu-model-migration.node.kubevirt.io/SapphireRapids-v3": "true", "cpu-model-migration.node.kubevirt.io/SierraForest": "true", "cpu-model-migration.node.kubevirt.io/SierraForest-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Client-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-noTSX-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v1": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v2": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v3": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v4": "true", "cpu-model-migration.node.kubevirt.io/Skylake-Server-v5": "true", "cpu-model-migration.node.kubevirt.io/Snowridge": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v1": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v2": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v3": "true", "cpu-model-migration.node.kubevirt.io/Snowridge-v4": "true", "cpu-model-migration.node.kubevirt.io/Westmere": "true", "cpu-model-migration.node.kubevirt.io/Westmere-IBRS": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v1": "true", "cpu-model-migration.node.kubevirt.io/Westmere-v2": "true", "cpu-model.node.kubevirt.io/Broadwell-noTSX": "true", "cpu-model.node.kubevirt.io/Broadwell-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Broadwell-v2": "true", "cpu-model.node.kubevirt.io/Broadwell-v4": "true", "cpu-model.node.kubevirt.io/Denverton-v2": "true", "cpu-model.node.kubevirt.io/Denverton-v3": "true", "cpu-model.node.kubevirt.io/Dhyana": "true", "cpu-model.node.kubevirt.io/Dhyana-v1": "true", "cpu-model.node.kubevirt.io/Dhyana-v2": "true", "cpu-model.node.kubevirt.io/EPYC": "true", "cpu-model.node.kubevirt.io/EPYC-Genoa": "true", "cpu-model.node.kubevirt.io/EPYC-Genoa-v1": "true", "cpu-model.node.kubevirt.io/EPYC-IBPB": "true", "cpu-model.node.kubevirt.io/EPYC-Milan": "true", "cpu-model.node.kubevirt.io/EPYC-Milan-v1": "true", "cpu-model.node.kubevirt.io/EPYC-Milan-v2": "true", "cpu-model.node.kubevirt.io/EPYC-Rome": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v1": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v2": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v3": "true", "cpu-model.node.kubevirt.io/EPYC-Rome-v4": "true", "cpu-model.node.kubevirt.io/EPYC-v1": "true", "cpu-model.node.kubevirt.io/EPYC-v2": "true", "cpu-model.node.kubevirt.io/EPYC-v3": "true", "cpu-model.node.kubevirt.io/EPYC-v4": "true", "cpu-model.node.kubevirt.io/Haswell-noTSX": "true", "cpu-model.node.kubevirt.io/Haswell-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Haswell-v2": "true", "cpu-model.node.kubevirt.io/Haswell-v4": "true", "cpu-model.node.kubevirt.io/Icelake-Server-noTSX": "true", "cpu-model.node.kubevirt.io/Icelake-Server-v2": "true", "cpu-model.node.kubevirt.io/IvyBridge": "true", "cpu-model.node.kubevirt.io/IvyBridge-IBRS": "true", "cpu-model.node.kubevirt.io/IvyBridge-v1": "true", "cpu-model.node.kubevirt.io/IvyBridge-v2": "true", "cpu-model.node.kubevirt.io/Nehalem": "true", "cpu-model.node.kubevirt.io/Nehalem-IBRS": "true", "cpu-model.node.kubevirt.io/Nehalem-v1": "true", "cpu-model.node.kubevirt.io/Nehalem-v2": "true", "cpu-model.node.kubevirt.io/Opteron_G3": "true", "cpu-model.node.kubevirt.io/Opteron_G3-v1": "true", "cpu-model.node.kubevirt.io/Penryn": "true", "cpu-model.node.kubevirt.io/Penryn-v1": "true", "cpu-model.node.kubevirt.io/SandyBridge": "true", "cpu-model.node.kubevirt.io/SandyBridge-IBRS": "true", "cpu-model.node.kubevirt.io/SandyBridge-v1": "true", "cpu-model.node.kubevirt.io/SandyBridge-v2": "true", "cpu-model.node.kubevirt.io/Skylake-Client-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Skylake-Client-v3": "true", "cpu-model.node.kubevirt.io/Skylake-Client-v4": "true", "cpu-model.node.kubevirt.io/Skylake-Server-noTSX-IBRS": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v3": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v4": "true", "cpu-model.node.kubevirt.io/Skylake-Server-v5": "true", "cpu-model.node.kubevirt.io/Westmere": "true", "cpu-model.node.kubevirt.io/Westmere-IBRS": "true", "cpu-model.node.kubevirt.io/Westmere-v1": "true", "cpu-model.node.kubevirt.io/Westmere-v2": "true", "cpu-timer.node.kubevirt.io/tsc-frequency": "2749999000", "cpu-timer.node.kubevirt.io/tsc-scalable": "true", "cpu-vendor.node.kubevirt.io/AMD": "true", "cpumanager": "true", "extensions.talos.dev/amd-ucode": "20260309", "extensions.talos.dev/amdgpu": "20260309-v1.12.6", "extensions.talos.dev/bnx2-bnx2x": "20260309", "extensions.talos.dev/drbd": "9.2.16-v1.12.6", "extensions.talos.dev/i915": "20260309-v1.12.6", "extensions.talos.dev/intel-ice-firmware": "20260309", "extensions.talos.dev/intel-ucode": "20260227", "extensions.talos.dev/modules.dep": "6.18.18-talos", "extensions.talos.dev/qlogic-firmware": "20260309", "extensions.talos.dev/zfs": "2.4.1-v1.12.6", "host-model-cpu.node.kubevirt.io/EPYC-Genoa": "true", "host-model-required-features.node.kubevirt.io/cmp_legacy": "true", "host-model-required-features.node.kubevirt.io/flush-l1d": "true", "host-model-required-features.node.kubevirt.io/flushbyasid": "true", "host-model-required-features.node.kubevirt.io/hypervisor": "true", "host-model-required-features.node.kubevirt.io/ibpb-brtype": "true", "host-model-required-features.node.kubevirt.io/invtsc": "true", "host-model-required-features.node.kubevirt.io/lbrv": "true", "host-model-required-features.node.kubevirt.io/overflow-recov": "true", "host-model-required-features.node.kubevirt.io/pause-filter": "true", "host-model-required-features.node.kubevirt.io/perfmon-v2": "true", "host-model-required-features.node.kubevirt.io/pfthreshold": "true", "host-model-required-features.node.kubevirt.io/sbpb": "true", "host-model-required-features.node.kubevirt.io/spec-ctrl": "true", "host-model-required-features.node.kubevirt.io/ssbd": "true", "host-model-required-features.node.kubevirt.io/stibp": "true", "host-model-required-features.node.kubevirt.io/succor": "true", "host-model-required-features.node.kubevirt.io/tsc-deadline": "true", "host-model-required-features.node.kubevirt.io/tsc-scale": "true", "host-model-required-features.node.kubevirt.io/tsc_adjust": "true", "host-model-required-features.node.kubevirt.io/v-vmsave-vmload": "true", "host-model-required-features.node.kubevirt.io/vgif": "true", "host-model-required-features.node.kubevirt.io/virt-ssbd": "true", "host-model-required-features.node.kubevirt.io/vmcb-clean": "true", "host-model-required-features.node.kubevirt.io/x2apic": "true", "hyperv.node.kubevirt.io/base": "true", "hyperv.node.kubevirt.io/frequencies": "true", "hyperv.node.kubevirt.io/ipi": "true", "hyperv.node.kubevirt.io/reenlightenment": "true", "hyperv.node.kubevirt.io/reset": "true", "hyperv.node.kubevirt.io/runtime": "true", "hyperv.node.kubevirt.io/synic": "true", "hyperv.node.kubevirt.io/synic2": "true", "hyperv.node.kubevirt.io/synictimer": "true", "hyperv.node.kubevirt.io/time": "true", "hyperv.node.kubevirt.io/tlbflush": "true", "hyperv.node.kubevirt.io/vpindex": "true", "kubernetes.io/arch": "amd64", "kubernetes.io/hostname": "ws3", "kubernetes.io/os": "linux", "kubevirt.io/cpumanager": "true", "kubevirt.io/ksm-enabled": "false", "kubevirt.io/schedulable": "true", "linbit.com/hostname": "ws3", "machine-type.node.kubevirt.io/pc": "true", "machine-type.node.kubevirt.io/pc-i440fx-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel7.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.1.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.3.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.5.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel8.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.0.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.2.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.4.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.6.0": "true", "machine-type.node.kubevirt.io/pc-q35-rhel9.8.0": "true", "machine-type.node.kubevirt.io/q35": "true", "node-role.kubernetes.io/control-plane": "", "scheduling.node.kubevirt.io/tsc-frequency-2749998000": "true", "scheduling.node.kubevirt.io/tsc-frequency-2749999000": "true"}, "name": "ws3", "resourceVersion": "47186526", "uid": "f44a7a7b-dfe8-456f-92a6-10c2d83bf6ac"}, "spec": {"podCIDR": "10.244.2.0/24", "podCIDRs": ["10.244.2.0/24"]}, "status": {"addresses": [{"address": "192.168.100.4", "type": "InternalIP"}, {"address": "ws3", "type": "Hostname"}, {"address": "203.0.113.13", "type": "ExternalIP"}], "allocatable": {"cpu": "95950m", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "3452645798725", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "130917372Ki", "pods": "512"}, "capacity": {"cpu": "96", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "3746651736Ki", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "131544060Ki", "pods": "512"}, "conditions": [{"lastHeartbeatTime": "2026-08-30T06:38:15Z", "lastTransitionTime": "2026-08-30T06:38:15Z", "message": "Cilium is running on this node", "reason": "CiliumIsUp", "status": "False", "type": "NetworkUnavailable"}, {"lastHeartbeatTime": "2026-08-30T06:38:11Z", "lastTransitionTime": "2026-08-12T09:41:32Z", "message": "kubelet has sufficient memory available", "reason": "KubeletHasSufficientMemory", "status": "False", "type": "MemoryPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:11Z", "lastTransitionTime": "2026-08-12T09:41:32Z", "message": "kubelet has no disk pressure", "reason": "KubeletHasNoDiskPressure", "status": "False", "type": "DiskPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:11Z", "lastTransitionTime": "2026-08-12T09:41:32Z", "message": "kubelet has sufficient PID available", "reason": "KubeletHasSufficientPID", "status": "False", "type": "PIDPressure"}, {"lastHeartbeatTime": "2026-08-30T06:38:11Z", "lastTransitionTime": "2026-08-12T09:55:15Z", "message": "kubelet is posting ready status", "reason": "KubeletReady", "status": "True", "type": "Ready"}], "daemonEndpoints": {"kubeletEndpoint": {"Port": 10250}}, "features": {"supplementalGroupsPolicy": true}, "nodeInfo": {"architecture": "amd64", "bootID": "8aba2792-7784-44e3-9a88-28b8cfd70878", "containerRuntimeVersion": "containerd://2.1.6", "kernelVersion": "6.18.18-talos", "kubeProxyVersion": "", "kubeletVersion": "v1.34.3", "machineID": "11ad886b4f0ca6bf2651967f62699910", "operatingSystem": "linux", "osImage": "Talos (v1.12.6)", "systemUUID": "66994e70-bfde-11d3-01a8-9c6b0070c81a"}, "runtimeHandlers": [{"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": ""}, {"features": {"recursiveReadOnlyMounts": true, "userNamespaces": true}, "name": "runc"}], "volumesAttached": [{"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9914b247-457a-4c3b-9c98-4ddb6e937d4d"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f7ec0fa6-b1b6-4d8f-a4f8-873ef48b82e6"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2a1f70ba-52d5-4cef-a533-6b926cf33ab0"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e4405a64-000f-4bea-a800-843f2d97908f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1a997e4b-24f5-4e03-ac40-ac545f5b636f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-32ecb789-a07a-45dd-8be1-e2d9086d2d93"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-570849ea-eb01-4ad3-b070-6ef6a5ea2d3a"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-c9f4f8d8-7dee-4e24-bab7-8efa7d9c6a66"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b5bc5bfd-042a-44e9-9167-32fc5c081eef"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-4e598b52-1d56-46ca-9bb7-d79dcb5ce586"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2685145f-b1d5-4fbb-8782-100fa07d853b"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b98cefa6-2e8f-43ac-a303-c9e678df3d5e"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6b78604d-d214-4329-bb37-b1e3cdc2dbb7"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-41185455-f31b-4058-b161-9d12b1cd4ecf"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2951574d-7917-4de9-a8e6-b9f866288631"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1ec86282-1c49-424c-9f70-3ec024048d4d"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-42649043-2570-4cb5-9c62-f22f604a5cf0"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-481397b2-8dd3-4dfb-bc91-54c5cae43a36"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7536c579-5b16-45f4-80c3-1b8554e0e29f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b1fd1a3c-fae5-495b-96ae-fe2b6ad86969"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-df04e586-caa9-4e3f-a512-a7b479466b63"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2af4927d-5b11-4ac4-87fe-1dfb06625053"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1c92bf68-25b3-4d3e-9227-ec33e5f20007"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6edf906f-ada8-405d-8c94-2f0582687052"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-705d8ae0-03b2-4741-9f12-a3fcbd8dd9f5"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-19030967-f1b0-40b1-bc5a-ca95ac54f70e"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-20baf7aa-959c-4d9a-8e6c-103d20c8ce2d"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-d16bcbe1-20cb-415d-b1c2-0ca789d885b9"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-cd43d017-21e8-4226-a00b-c07ca55ca9b0"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-0702bfc6-eeae-4be9-a41a-5448aa4fe9cb"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9ffc71c3-88a9-49e2-9bce-db103f8e799d"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f3cf6766-c9d5-4fdf-bb81-020d5100aa0c"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-09f2345c-f23d-410f-87f6-bec33eb1a0ae"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8fdcc593-cdca-42e9-992d-9ae1ab7ad215"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b7b06acb-59ad-4cd4-918c-00a44eaea8a3"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-630e16f6-5c1f-4025-b757-76c510ebdaac"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-fbc67ea7-476b-4610-892f-243adeebd9a2"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8d53c6ee-bc87-48b9-b34f-b111c6359544"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-075b8fcd-6c01-42dc-ae1c-6fc17e82e99b"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-97ece5a4-cec0-4e48-a39c-521c5b449e3f"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9351a0d9-9fd5-4f46-9000-d1d20802903b"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-304636a8-e1e2-4be5-b1af-bc16f914619c"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-92a972e0-6217-4b6a-abfc-e9ee0b7a33fb"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-620db393-ce17-416e-ab50-cc5d5e58bc40"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-42001c72-4456-46bd-ae7d-f22a44edf3b3"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-15acd47b-608e-4bb7-927a-7815d7513547"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-394ca393-a8fe-4345-885a-3476b7bc139c"}, {"devicePath": "", "name": "kubernetes.io/csi/linstor.csi.linbit.com^pvc-d74fd944-b302-4707-b2fc-beb0f34c81ff"}], "volumesInUse": ["kubernetes.io/csi/linstor.csi.linbit.com^pvc-0702bfc6-eeae-4be9-a41a-5448aa4fe9cb", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-075b8fcd-6c01-42dc-ae1c-6fc17e82e99b", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-09f2345c-f23d-410f-87f6-bec33eb1a0ae", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-15acd47b-608e-4bb7-927a-7815d7513547", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-19030967-f1b0-40b1-bc5a-ca95ac54f70e", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1a997e4b-24f5-4e03-ac40-ac545f5b636f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1c92bf68-25b3-4d3e-9227-ec33e5f20007", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-1ec86282-1c49-424c-9f70-3ec024048d4d", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-20baf7aa-959c-4d9a-8e6c-103d20c8ce2d", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2685145f-b1d5-4fbb-8782-100fa07d853b", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2951574d-7917-4de9-a8e6-b9f866288631", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2a1f70ba-52d5-4cef-a533-6b926cf33ab0", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-2af4927d-5b11-4ac4-87fe-1dfb06625053", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-304636a8-e1e2-4be5-b1af-bc16f914619c", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-32ecb789-a07a-45dd-8be1-e2d9086d2d93", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-394ca393-a8fe-4345-885a-3476b7bc139c", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-41185455-f31b-4058-b161-9d12b1cd4ecf", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-42001c72-4456-46bd-ae7d-f22a44edf3b3", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-42649043-2570-4cb5-9c62-f22f604a5cf0", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-481397b2-8dd3-4dfb-bc91-54c5cae43a36", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-4e598b52-1d56-46ca-9bb7-d79dcb5ce586", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-570849ea-eb01-4ad3-b070-6ef6a5ea2d3a", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-620db393-ce17-416e-ab50-cc5d5e58bc40", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-630e16f6-5c1f-4025-b757-76c510ebdaac", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6b78604d-d214-4329-bb37-b1e3cdc2dbb7", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-6edf906f-ada8-405d-8c94-2f0582687052", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-705d8ae0-03b2-4741-9f12-a3fcbd8dd9f5", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-7536c579-5b16-45f4-80c3-1b8554e0e29f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8d53c6ee-bc87-48b9-b34f-b111c6359544", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-8fdcc593-cdca-42e9-992d-9ae1ab7ad215", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-92a972e0-6217-4b6a-abfc-e9ee0b7a33fb", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9351a0d9-9fd5-4f46-9000-d1d20802903b", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-97ece5a4-cec0-4e48-a39c-521c5b449e3f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9914b247-457a-4c3b-9c98-4ddb6e937d4d", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-9ffc71c3-88a9-49e2-9bce-db103f8e799d", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b1fd1a3c-fae5-495b-96ae-fe2b6ad86969", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b5bc5bfd-042a-44e9-9167-32fc5c081eef", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b7b06acb-59ad-4cd4-918c-00a44eaea8a3", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-b98cefa6-2e8f-43ac-a303-c9e678df3d5e", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-c9f4f8d8-7dee-4e24-bab7-8efa7d9c6a66", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-cd43d017-21e8-4226-a00b-c07ca55ca9b0", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-d16bcbe1-20cb-415d-b1c2-0ca789d885b9", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-d74fd944-b302-4707-b2fc-beb0f34c81ff", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-df04e586-caa9-4e3f-a512-a7b479466b63", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-e4405a64-000f-4bea-a800-843f2d97908f", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f3cf6766-c9d5-4fdf-bb81-020d5100aa0c", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-f7ec0fa6-b1b6-4d8f-a4f8-873ef48b82e6", "kubernetes.io/csi/linstor.csi.linbit.com^pvc-fbc67ea7-476b-4610-892f-243adeebd9a2"]}}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/options.json b/demo-src/overlay/apps/console/src/demo/fixtures/options.json new file mode 100644 index 00000000..32886e28 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/options.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "appkind", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {"items": [{"value": "Bucket"}, {"value": "ClickHouse"}, {"value": "Etcd"}, {"value": "FoundationDB"}, {"value": "HTTPCache"}, {"value": "Harbor"}, {"value": "Info"}, {"value": "Ingress"}, {"value": "Kafka"}, {"value": "Kubernetes"}, {"value": "MariaDB"}, {"value": "MongoDB"}, {"value": "Monitoring"}, {"value": "NATS"}, {"value": "OpenBAO"}, {"value": "OpenSearch"}, {"value": "Postgres"}, {"value": "Qdrant"}, {"value": "RabbitMQ"}, {"value": "Redis"}, {"value": "SeaweedFS"}, {"value": "TCPBalancer"}, {"value": "Tenant"}, {"value": "VMDisk"}, {"value": "VMInstance"}, {"value": "VPN"}, {"value": "VirtualPrivateCloud"}]}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "backup", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "backupclass", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {"items": [{"value": "cozy-default"}]}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "gpu", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "image", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {"items": [{"value": "almalinux-10"}, {"value": "almalinux-8"}, {"value": "almalinux-9"}, {"value": "alpine-3.21"}, {"value": "centos-stream-10"}, {"value": "centos-stream-9"}, {"value": "debian-12"}, {"value": "debian-13"}, {"value": "opensuse-leap-15.6"}, {"value": "opensuse-leap-16.0"}, {"value": "rocky-10"}, {"value": "rocky-8"}, {"value": "rocky-9"}, {"value": "ubuntu-20.04"}, {"value": "ubuntu-22.04"}, {"value": "ubuntu-24.04"}]}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "instanceprofile", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {"items": [{"value": "alpine"}, {"value": "centos.7"}, {"value": "centos.7.desktop"}, {"value": "centos.stream10"}, {"value": "centos.stream10.desktop"}, {"value": "centos.stream8"}, {"value": "centos.stream8.desktop"}, {"value": "centos.stream8.dpdk"}, {"value": "centos.stream9"}, {"value": "centos.stream9.desktop"}, {"value": "centos.stream9.dpdk"}, {"value": "cirros"}, {"value": "debian"}, {"value": "fedora"}, {"value": "fedora.arm64"}, {"value": "fedora.s390x"}, {"value": "legacy"}, {"value": "linux"}, {"value": "linux.efi"}, {"value": "linux.virtiotransitional"}, {"value": "opensuse.leap"}, {"value": "opensuse.tumbleweed"}, {"value": "oraclelinux"}, {"value": "rhel.10"}, {"value": "rhel.10.arm64"}, {"value": "rhel.10.s390x"}, {"value": "rhel.7"}, {"value": "rhel.7.desktop"}, {"value": "rhel.8"}, {"value": "rhel.8.desktop"}, {"value": "rhel.8.dpdk"}, {"value": "rhel.9"}, {"value": "rhel.9.arm64"}, {"value": "rhel.9.desktop"}, {"value": "rhel.9.dpdk"}, {"value": "rhel.9.realtime"}, {"value": "rhel.9.s390x"}, {"value": "sles"}, {"value": "ubuntu"}, {"value": "windows.10"}, {"value": "windows.10.virtio"}, {"value": "windows.11"}, {"value": "windows.11.virtio"}, {"value": "windows.2k12"}, {"value": "windows.2k12.virtio"}, {"value": "windows.2k16"}, {"value": "windows.2k16.virtio"}, {"value": "windows.2k19"}, {"value": "windows.2k19.virtio"}, {"value": "windows.2k22"}, {"value": "windows.2k22.virtio"}, {"value": "windows.2k25"}, {"value": "windows.2k25.virtio"}, {"value": "windows.2k3"}, {"value": "windows.2k8"}, {"value": "windows.2k8.virtio"}, {"value": "windows.7"}, {"value": "windows.7.virtio"}, {"value": "windows.xp"}]}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "instancetype", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {"items": [{"value": "cx1.2xlarge"}, {"value": "cx1.2xlarge1gi"}, {"value": "cx1.4xlarge"}, {"value": "cx1.4xlarge1gi"}, {"value": "cx1.8xlarge"}, {"value": "cx1.8xlarge1gi"}, {"value": "cx1.large"}, {"value": "cx1.large1gi"}, {"value": "cx1.medium"}, {"value": "cx1.medium1gi"}, {"value": "cx1.xlarge"}, {"value": "cx1.xlarge1gi"}, {"value": "d1.2xlarge"}, {"value": "d1.2xmedium"}, {"value": "d1.4xlarge"}, {"value": "d1.8xlarge"}, {"value": "d1.large"}, {"value": "d1.medium"}, {"value": "d1.micro"}, {"value": "d1.nano"}, {"value": "d1.small"}, {"value": "d1.xlarge"}, {"value": "gn1.2xlarge"}, {"value": "gn1.4xlarge"}, {"value": "gn1.8xlarge"}, {"value": "gn1.xlarge"}, {"value": "m1.2xlarge"}, {"value": "m1.2xlarge1gi"}, {"value": "m1.4xlarge"}, {"value": "m1.4xlarge1gi"}, {"value": "m1.8xlarge"}, {"value": "m1.8xlarge1gi"}, {"value": "m1.large"}, {"value": "m1.large1gi"}, {"value": "m1.xlarge"}, {"value": "m1.xlarge1gi"}, {"value": "n1.2xlarge"}, {"value": "n1.4xlarge"}, {"value": "n1.8xlarge"}, {"value": "n1.large"}, {"value": "n1.medium"}, {"value": "n1.xlarge"}, {"value": "o1.2xlarge"}, {"value": "o1.4xlarge"}, {"value": "o1.8xlarge"}, {"value": "o1.large"}, {"value": "o1.medium"}, {"value": "o1.micro"}, {"value": "o1.nano"}, {"value": "o1.small"}, {"value": "o1.xlarge"}, {"value": "rt1.2xlarge"}, {"value": "rt1.4xlarge"}, {"value": "rt1.8xlarge"}, {"value": "rt1.large"}, {"value": "rt1.medium"}, {"value": "rt1.micro"}, {"value": "rt1.small"}, {"value": "rt1.xlarge"}, {"value": "u1.2xlarge"}, {"value": "u1.2xmedium"}, {"value": "u1.4xlarge"}, {"value": "u1.8xlarge"}, {"value": "u1.large"}, {"value": "u1.medium"}, {"value": "u1.micro"}, {"value": "u1.nano"}, {"value": "u1.small"}, {"value": "u1.xlarge"}]}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "network", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "plan", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "storageclass", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {"items": [{"default": true, "label": "local (default)", "value": "local"}, {"value": "replicated"}]}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "storagepool", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {}}, {"apiVersion": "core.cozystack.io/v1alpha1", "kind": "Option", "metadata": {"name": "vmdisk", "namespace": "tenant-workshop00", "resourceVersion": "0"}, "spec": {}}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/persistentvolumeclaims.json b/demo-src/overlay/apps/console/src/demo/fixtures/persistentvolumeclaims.json new file mode 100644 index 00000000..72e076ee --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/persistentvolumeclaims.json @@ -0,0 +1,602 @@ +{ + "apiVersion": "v1", + "items": [ + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/selected-node": "ws3", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-29T01:52:09Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/instance": "clickhouse-demo-clickhouse", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/object-version": "38f68040b14689498a135547eaad38d6376f2d98", + "clickhouse.altinity.com/reclaimPolicy": "Delete", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "data-volume-template-chi-clickhouse-demo-clickhouse-clickhouse-0-0-0", + "namespace": "tenant-workshop00", + "resourceVersion": "44009129", + "uid": "570849ea-eb01-4ad3-b070-6ef6a5ea2d3a" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + }, + "storageClassName": "local", + "volumeMode": "Filesystem", + "volumeName": "pvc-570849ea-eb01-4ad3-b070-6ef6a5ea2d3a" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "2Gi" + }, + "phase": "Bound" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/selected-node": "ws3", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-29T01:52:37Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/instance": "clickhouse-demo-clickhouse", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "7b0a7d19caa64f54d61a6606e0c9618b659e43a8", + "clickhouse-keeper.altinity.com/reclaimPolicy": "Delete", + "clickhouse-keeper.altinity.com/replica": "0", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "default-chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-0", + "namespace": "tenant-workshop00", + "resourceVersion": "43954693", + "uid": "6edf906f-ada8-405d-8c94-2f0582687052" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "storageClassName": "local", + "volumeMode": "Filesystem", + "volumeName": "pvc-6edf906f-ada8-405d-8c94-2f0582687052" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "1Gi" + }, + "phase": "Bound" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/selected-node": "ws1", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-29T01:53:04Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/instance": "clickhouse-demo-clickhouse", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "c4e3c7a42d4b5ec0706cc744a2b4d21590467f69", + "clickhouse-keeper.altinity.com/reclaimPolicy": "Delete", + "clickhouse-keeper.altinity.com/replica": "1", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "default-chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-0", + "namespace": "tenant-workshop00", + "resourceVersion": "43954697", + "uid": "515e56b1-c832-4613-b5ca-fb437794f94a" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "storageClassName": "local", + "volumeMode": "Filesystem", + "volumeName": "pvc-515e56b1-c832-4613-b5ca-fb437794f94a" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "1Gi" + }, + "phase": "Bound" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/selected-node": "ws2", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-29T01:53:36Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/instance": "clickhouse-demo-clickhouse", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "7635dcfcbbe65cd37f5fb6295043b6763a81b7b4", + "clickhouse-keeper.altinity.com/reclaimPolicy": "Delete", + "clickhouse-keeper.altinity.com/replica": "2", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "default-chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-0", + "namespace": "tenant-workshop00", + "resourceVersion": "43954701", + "uid": "527189c1-277f-47ae-a055-0b336b2042c6" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "storageClassName": "local", + "volumeMode": "Filesystem", + "volumeName": "pvc-527189c1-277f-47ae-a055-0b336b2042c6" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "1Gi" + }, + "phase": "Bound" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/selected-node": "ws3", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-29T01:52:09Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/instance": "clickhouse-demo-clickhouse", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/object-version": "bf54f3b6b71b7381bf39c39cc0446ddfcb64132a", + "clickhouse.altinity.com/reclaimPolicy": "Delete", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "log-volume-template-chi-clickhouse-demo-clickhouse-clickhouse-0-0-0", + "namespace": "tenant-workshop00", + "resourceVersion": "44009142", + "uid": "481397b2-8dd3-4dfb-bc91-54c5cae43a36" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + }, + "storageClassName": "local", + "volumeMode": "Filesystem", + "volumeName": "pvc-481397b2-8dd3-4dfb-bc91-54c5cae43a36" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "2Gi" + }, + "phase": "Bound" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-30T06:23:37Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/name": "nats", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "NATS", + "apps.cozystack.io/application.name": "demo-nats", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "nats-demo-nats-js-nats-demo-nats-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "StatefulSet", + "name": "nats-demo-nats", + "uid": "0f3d6b47-2933-4356-afda-7dcdd2ad8dcb" + } + ], + "resourceVersion": "47159174", + "uid": "586afce4-1682-4264-958d-f289116971c6" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "10Gi" + } + }, + "storageClassName": "replicated", + "volumeMode": "Filesystem", + "volumeName": "pvc-586afce4-1682-4264-958d-f289116971c6" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "10Gi" + }, + "phase": "Bound" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "cnpg.io/nodeSerial": "1", + "cnpg.io/operatorVersion": "1.28.2", + "cnpg.io/pvcStatus": "ready", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-29T01:52:05Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/component": "database", + "app.kubernetes.io/instance": "postgres-demo-postgres", + "app.kubernetes.io/managed-by": "cloudnative-pg", + "app.kubernetes.io/name": "postgres.apps.cozystack.io", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Postgres", + "apps.cozystack.io/application.name": "demo-postgres", + "cnpg.io/cluster": "postgres-demo-postgres", + "cnpg.io/instanceName": "postgres-demo-postgres-1", + "cnpg.io/instanceRole": "primary", + "cnpg.io/pvcRole": "PG_DATA", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "policy.cozystack.io/allow-to-apiserver": "true", + "role": "primary" + }, + "name": "postgres-demo-postgres-1", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "postgresql.cnpg.io/v1", + "controller": true, + "kind": "Cluster", + "name": "postgres-demo-postgres", + "uid": "2f40d223-adab-4bc8-bbfc-28573efa5ce6" + } + ], + "resourceVersion": "43951057", + "uid": "7bad80ac-902b-4108-92d5-31f84ef7e97a" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + }, + "storageClassName": "replicated", + "volumeMode": "Filesystem", + "volumeName": "pvc-7bad80ac-902b-4108-92d5-31f84ef7e97a" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "2Gi" + }, + "phase": "Bound" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "cnpg.io/nodeSerial": "2", + "cnpg.io/operatorVersion": "1.28.2", + "cnpg.io/pvcStatus": "ready", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-29T01:52:53Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/component": "database", + "app.kubernetes.io/instance": "postgres-demo-postgres", + "app.kubernetes.io/managed-by": "cloudnative-pg", + "app.kubernetes.io/name": "postgres.apps.cozystack.io", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Postgres", + "apps.cozystack.io/application.name": "demo-postgres", + "cnpg.io/cluster": "postgres-demo-postgres", + "cnpg.io/instanceName": "postgres-demo-postgres-2", + "cnpg.io/instanceRole": "replica", + "cnpg.io/pvcRole": "PG_DATA", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "policy.cozystack.io/allow-to-apiserver": "true", + "role": "replica" + }, + "name": "postgres-demo-postgres-2", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "postgresql.cnpg.io/v1", + "controller": true, + "kind": "Cluster", + "name": "postgres-demo-postgres", + "uid": "2f40d223-adab-4bc8-bbfc-28573efa5ce6" + } + ], + "resourceVersion": "43952592", + "uid": "fbc67ea7-476b-4610-892f-243adeebd9a2" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + }, + "storageClassName": "replicated", + "volumeMode": "Filesystem", + "volumeName": "pvc-fbc67ea7-476b-4610-892f-243adeebd9a2" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "2Gi" + }, + "phase": "Bound" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com", + "volume.kubernetes.io/storage-provisioner": "linstor.csi.linbit.com" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "labels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "redisfailover-persistent-data-rfr-redis-demo-redis-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "databases.spotahome.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "RedisFailover", + "name": "redis-demo-redis", + "uid": "2d06e18d-9d48-4bbe-9d5a-8384411b4d0a" + } + ], + "resourceVersion": "43949138", + "uid": "c9f4f8d8-7dee-4e24-bab7-8efa7d9c6a66" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "storageClassName": "replicated", + "volumeMode": "Filesystem", + "volumeName": "pvc-c9f4f8d8-7dee-4e24-bab7-8efa7d9c6a66" + }, + "status": { + "accessModes": [ + "ReadWriteOnce" + ], + "capacity": { + "storage": "1Gi" + }, + "phase": "Bound" + } + } + ], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/pods.json b/demo-src/overlay/apps/console/src/demo/fixtures/pods.json new file mode 100644 index 00000000..bfa15775 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/pods.json @@ -0,0 +1,7638 @@ +{ + "apiVersion": "v1", + "items": [ + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.164\"\n ],\n \"mac\": \"b2:f3:9c:28:2d:84\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for container s3manager; ephemeral-storage limit for container s3manager", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.164", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "b2:f3:9c:28:2d:84", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "generateName": "bucket-demo-bucket-ui-595f9865b7-", + "generation": 1, + "labels": { + "app": "bucket-demo-bucket-ui", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Bucket", + "apps.cozystack.io/application.name": "demo-bucket", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "pod-template-hash": "595f9865b7" + }, + "name": "bucket-demo-bucket-ui-595f9865b7-tqgdt", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ReplicaSet", + "name": "bucket-demo-bucket-ui-595f9865b7", + "uid": "27cebd91-3dc3-4e03-8113-01851b90454a" + } + ], + "resourceVersion": "43949401", + "uid": "1a8b39a8-3d2a-4e9c-b723-1051bb5abaad" + }, + "spec": { + "containers": [ + { + "env": [ + { + "name": "ENDPOINT", + "value": "s3.demo.cozystack.io" + }, + { + "name": "SKIP_SSL_VERIFICATION", + "value": "true" + } + ], + "image": "ghcr.io/cozystack/cozystack/s3manager:v1.6.1-rc.1@sha256:73665aaf7f5406b4a1e456d14060fe874e0ae2a436ba7fd3058fa73abff8a927", + "imagePullPolicy": "IfNotPresent", + "name": "s3manager", + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "512Mi" + }, + "requests": { + "cpu": "100m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-ltzfm", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "nodeName": "cloudpool-4e655bd57ef87f15", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": {}, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "kube-api-access-ltzfm", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:16Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:06Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:16Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:16Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:06Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "100m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + }, + "containerID": "containerd://b544265c444e3630d2460042bf26b46e495068b0f71b0b366a01a268834cf3e6", + "image": "sha256:301761593951195996a1537c3e20244f04cc1f7b4eb8c6c763980e5acf353f46", + "imageID": "ghcr.io/cozystack/cozystack/s3manager@sha256:73665aaf7f5406b4a1e456d14060fe874e0ae2a436ba7fd3058fa73abff8a927", + "lastState": {}, + "name": "s3manager", + "ready": true, + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "512Mi" + }, + "requests": { + "cpu": "100m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:16Z" + } + }, + "user": { + "linux": { + "gid": 101, + "supplementalGroups": [ + 101 + ], + "uid": 100 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-ltzfm", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.5", + "hostIPs": [ + { + "ip": "192.168.0.5" + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.164", + "podIPs": [ + { + "ip": "10.244.16.164" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:52:06Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.167\"\n ],\n \"mac\": \"d2:bb:1a:ed:a1:eb\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.167", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "d2:bb:1a:ed:a1:eb", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-29T01:52:09Z", + "generateName": "chi-clickhouse-demo-clickhouse-clickhouse-0-0-", + "generation": 1, + "labels": { + "app.kubernetes.io/instance": "clickhouse-demo-clickhouse", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "apps.kubernetes.io/pod-index": "0", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/ready": "yes", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0", + "controller-revision-hash": "chi-clickhouse-demo-clickhouse-clickhouse-0-0-9b9c86458", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "statefulset.kubernetes.io/pod-name": "chi-clickhouse-demo-clickhouse-clickhouse-0-0-0" + }, + "name": "chi-clickhouse-demo-clickhouse-clickhouse-0-0-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "StatefulSet", + "name": "chi-clickhouse-demo-clickhouse-clickhouse-0-0", + "uid": "d619e8e2-79a2-4154-beab-597b30e64a81" + } + ], + "resourceVersion": "43951075", + "uid": "51305c4a-5625-4908-ac9a-17307e75ec23" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": [ + { + "labelSelector": { + "matchExpressions": [ + { + "key": "clickhouse.altinity.com/chi", + "operator": "In", + "values": [ + "clickhouse-demo-clickhouse" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + } + ] + } + }, + "containers": [ + { + "env": [ + { + "name": "CLICKHOUSE_SKIP_USER_SETUP", + "value": "1" + } + ], + "image": "clickhouse/clickhouse-server:24.9.2.42", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "failureThreshold": 10, + "httpGet": { + "path": "/ping", + "port": "http", + "scheme": "HTTP" + }, + "initialDelaySeconds": 60, + "periodSeconds": 3, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "name": "clickhouse", + "ports": [ + { + "containerPort": 9000, + "name": "tcp", + "protocol": "TCP" + }, + { + "containerPort": 8123, + "name": "http", + "protocol": "TCP" + }, + { + "containerPort": 9009, + "name": "interserver", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/ping", + "port": "http", + "scheme": "HTTP" + }, + "initialDelaySeconds": 10, + "periodSeconds": 3, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "resources": { + "limits": { + "cpu": "1", + "ephemeral-storage": "2Gi", + "memory": "512Mi" + }, + "requests": { + "cpu": "100m", + "ephemeral-storage": "53687091", + "memory": "536870912" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/lib/clickhouse", + "name": "data-volume-template" + }, + { + "mountPath": "/var/log/clickhouse-server", + "name": "log-volume-template" + }, + { + "mountPath": "/etc/clickhouse-server/config.d/", + "name": "chi-clickhouse-demo-clickhouse-common-configd" + }, + { + "mountPath": "/etc/clickhouse-server/users.d/", + "name": "chi-clickhouse-demo-clickhouse-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-server/conf.d/", + "name": "chi-clickhouse-demo-clickhouse-deploy-confd-clickhouse-0-0" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-nd7fg", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "hostAliases": [ + { + "hostnames": [ + "chi-clickhouse-demo-clickhouse-clickhouse-0-0" + ], + "ip": "127.0.0.1" + } + ], + "hostname": "chi-clickhouse-demo-clickhouse-clickhouse-0-0-0", + "nodeName": "ws3", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "linstor-scheduler", + "securityContext": {}, + "serviceAccount": "default", + "serviceAccountName": "default", + "subdomain": "chi-clickhouse-demo-clickhouse-clickhouse-0-0", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "data-volume-template", + "persistentVolumeClaim": { + "claimName": "data-volume-template-chi-clickhouse-demo-clickhouse-clickhouse-0-0-0" + } + }, + { + "name": "log-volume-template", + "persistentVolumeClaim": { + "claimName": "log-volume-template-chi-clickhouse-demo-clickhouse-clickhouse-0-0-0" + } + }, + { + "configMap": { + "defaultMode": 420, + "name": "chi-clickhouse-demo-clickhouse-common-configd" + }, + "name": "chi-clickhouse-demo-clickhouse-common-configd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chi-clickhouse-demo-clickhouse-common-usersd" + }, + "name": "chi-clickhouse-demo-clickhouse-common-usersd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chi-clickhouse-demo-clickhouse-deploy-confd-clickhouse-0-0" + }, + "name": "chi-clickhouse-demo-clickhouse-deploy-confd-clickhouse-0-0" + }, + { + "name": "kube-api-access-nd7fg", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:28Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:11Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:38Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:38Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:11Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "100m", + "ephemeral-storage": "53687091", + "memory": "536870912" + }, + "containerID": "containerd://42f9615089737b047252e5cc9511ca2e99fc9f2603a32ee98bc434dd95429e0e", + "image": "docker.io/clickhouse/clickhouse-server:24.9.2.42", + "imageID": "docker.io/clickhouse/clickhouse-server@sha256:e35e651ccf6e999ee78efc17d735e5a21abed31319d4f328e7eac7e98b438df4", + "lastState": {}, + "name": "clickhouse", + "ready": true, + "resources": { + "limits": { + "cpu": "1", + "ephemeral-storage": "2Gi", + "memory": "512Mi" + }, + "requests": { + "cpu": "100m", + "ephemeral-storage": "53687091", + "memory": "536870912" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:27Z" + } + }, + "user": { + "linux": { + "gid": 0, + "supplementalGroups": [ + 0 + ], + "uid": 0 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/lib/clickhouse", + "name": "data-volume-template" + }, + { + "mountPath": "/var/log/clickhouse-server", + "name": "log-volume-template" + }, + { + "mountPath": "/etc/clickhouse-server/config.d/", + "name": "chi-clickhouse-demo-clickhouse-common-configd" + }, + { + "mountPath": "/etc/clickhouse-server/users.d/", + "name": "chi-clickhouse-demo-clickhouse-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-server/conf.d/", + "name": "chi-clickhouse-demo-clickhouse-deploy-confd-clickhouse-0-0" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-nd7fg", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.4", + "hostIPs": [ + { + "ip": "192.168.100.4" + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.167", + "podIPs": [ + { + "ip": "10.244.16.167" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:52:11Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.170\"\n ],\n \"mac\": \"8e:db:36:27:0a:13\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.170", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "8e:db:36:27:0a:13", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:52:37Z", + "generateName": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-", + "generation": 1, + "labels": { + "app": "clickhouse-demo-clickhouse-keeper", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "apps.kubernetes.io/pod-index": "0", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/ready": "yes", + "clickhouse-keeper.altinity.com/replica": "0", + "clickhouse-keeper.altinity.com/shard": "0", + "controller-revision-hash": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-77f7fb584f", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "statefulset.kubernetes.io/pod-name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-0" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "StatefulSet", + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0", + "uid": "51aee869-46ef-4227-9426-079509eb2230" + } + ], + "resourceVersion": "43951303", + "uid": "a90e9694-3387-4ff7-b5a5-c3cb34ead194" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": [ + { + "labelSelector": { + "matchExpressions": [ + { + "key": "app", + "operator": "In", + "values": [ + "clickhouse-demo-clickhouse-keeper" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + } + ] + } + }, + "containers": [ + { + "env": [ + { + "name": "CLICKHOUSE_DATA_DIR", + "value": "/var/lib/clickhouse-keeper" + } + ], + "image": "clickhouse/clickhouse-keeper:24.9.2.42", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "exec": { + "command": [ + "bash", + "-xc", + "date \u0026\u0026 OK=$(exec 3\u003c\u003e/dev/tcp/127.0.0.1/2181; printf 'ruok' \u003e\u00263; IFS=; tee \u003c\u00263; exec 3\u003c\u0026-;);if [[ \"${OK}\" == \"imok\" ]]; then exit 0; else exit 1; fi" + ] + }, + "failureThreshold": 12, + "initialDelaySeconds": 5, + "periodSeconds": 5, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "name": "clickhouse-keeper", + "ports": [ + { + "containerPort": 2181, + "name": "zk", + "protocol": "TCP" + }, + { + "containerPort": 9444, + "name": "raft", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-0" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-g4lnn", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "hostAliases": [ + { + "hostnames": [ + "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0" + ], + "ip": "127.0.0.1" + } + ], + "hostname": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-0", + "nodeName": "ws3", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "linstor-scheduler", + "securityContext": { + "fsGroup": 101 + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "subdomain": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "default", + "persistentVolumeClaim": { + "claimName": "default-chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-0" + } + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-0" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-0" + }, + { + "name": "kube-api-access-g4lnn", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:55Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:38Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:55Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:55Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:38Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + }, + "containerID": "containerd://f43ed456e9aca42cd731a11a0ab7c63f145c4da51b94948cfff9c2984a3971e3", + "image": "docker.io/clickhouse/clickhouse-keeper:24.9.2.42", + "imageID": "docker.io/clickhouse/clickhouse-keeper@sha256:681b4b8c8b3d397174dd32de156ed36e9c206700d27ce7aaed63db54471a9340", + "lastState": {}, + "name": "clickhouse-keeper", + "ready": true, + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:54Z" + } + }, + "user": { + "linux": { + "gid": 0, + "supplementalGroups": [ + 0, + 1, + 2, + 3, + 4, + 6, + 10, + 11, + 20, + 26, + 27, + 101 + ], + "uid": 0 + } + }, + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-0" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-g4lnn", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.4", + "hostIPs": [ + { + "ip": "192.168.100.4" + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.170", + "podIPs": [ + { + "ip": "10.244.16.170" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:52:38Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.173\"\n ],\n \"mac\": \"52:36:fa:4e:9a:5d\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.173", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "52:36:fa:4e:9a:5d", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:53:04Z", + "generateName": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-", + "generation": 1, + "labels": { + "app": "clickhouse-demo-clickhouse-keeper", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "apps.kubernetes.io/pod-index": "0", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/ready": "yes", + "clickhouse-keeper.altinity.com/replica": "1", + "clickhouse-keeper.altinity.com/shard": "0", + "controller-revision-hash": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-c4486dc88", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "statefulset.kubernetes.io/pod-name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-0" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "StatefulSet", + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1", + "uid": "6dae3b49-34df-4c9d-b3bc-fc6d00a360e1" + } + ], + "resourceVersion": "43952655", + "uid": "c21c4d56-d8c7-4035-bcf4-bef52fd0fd17" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": [ + { + "labelSelector": { + "matchExpressions": [ + { + "key": "app", + "operator": "In", + "values": [ + "clickhouse-demo-clickhouse-keeper" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + } + ] + } + }, + "containers": [ + { + "env": [ + { + "name": "CLICKHOUSE_DATA_DIR", + "value": "/var/lib/clickhouse-keeper" + } + ], + "image": "clickhouse/clickhouse-keeper:24.9.2.42", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "exec": { + "command": [ + "bash", + "-xc", + "date \u0026\u0026 OK=$(exec 3\u003c\u003e/dev/tcp/127.0.0.1/2181; printf 'ruok' \u003e\u00263; IFS=; tee \u003c\u00263; exec 3\u003c\u0026-;);if [[ \"${OK}\" == \"imok\" ]]; then exit 0; else exit 1; fi" + ] + }, + "failureThreshold": 12, + "initialDelaySeconds": 5, + "periodSeconds": 5, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "name": "clickhouse-keeper", + "ports": [ + { + "containerPort": 2181, + "name": "zk", + "protocol": "TCP" + }, + { + "containerPort": 9444, + "name": "raft", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-1" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-pbrcz", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "hostAliases": [ + { + "hostnames": [ + "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1" + ], + "ip": "127.0.0.1" + } + ], + "hostname": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-0", + "nodeName": "ws1", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "linstor-scheduler", + "securityContext": { + "fsGroup": 101 + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "subdomain": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "default", + "persistentVolumeClaim": { + "claimName": "default-chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-0" + } + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-1" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-1" + }, + { + "name": "kube-api-access-pbrcz", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:27Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:05Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:27Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:27Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:05Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + }, + "containerID": "containerd://60cf0cded6c13b8c84f12fab219712ffcc4d5b84660b64f59ceca8ab86d3eae5", + "image": "docker.io/clickhouse/clickhouse-keeper:24.9.2.42", + "imageID": "docker.io/clickhouse/clickhouse-keeper@sha256:681b4b8c8b3d397174dd32de156ed36e9c206700d27ce7aaed63db54471a9340", + "lastState": {}, + "name": "clickhouse-keeper", + "ready": true, + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:53:26Z" + } + }, + "user": { + "linux": { + "gid": 0, + "supplementalGroups": [ + 0, + 1, + 2, + 3, + 4, + 6, + 10, + 11, + 20, + 26, + 27, + 101 + ], + "uid": 0 + } + }, + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-1" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-pbrcz", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.2", + "hostIPs": [ + { + "ip": "192.168.100.2" + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.173", + "podIPs": [ + { + "ip": "10.244.16.173" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:53:05Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.175\"\n ],\n \"mac\": \"2a:9f:5d:40:ca:93\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.175", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "2a:9f:5d:40:ca:93", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:53:36Z", + "generateName": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-", + "generation": 1, + "labels": { + "app": "clickhouse-demo-clickhouse-keeper", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "apps.kubernetes.io/pod-index": "0", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/ready": "yes", + "clickhouse-keeper.altinity.com/replica": "2", + "clickhouse-keeper.altinity.com/shard": "0", + "controller-revision-hash": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-77cd98b47", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "statefulset.kubernetes.io/pod-name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-0" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "StatefulSet", + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2", + "uid": "aa42ec25-5cfa-40f6-a983-b823a7fbdf71" + } + ], + "resourceVersion": "43953591", + "uid": "9b6069b5-fdea-4670-989a-71f4370fa49b" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": [ + { + "labelSelector": { + "matchExpressions": [ + { + "key": "app", + "operator": "In", + "values": [ + "clickhouse-demo-clickhouse-keeper" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + } + ] + } + }, + "containers": [ + { + "env": [ + { + "name": "CLICKHOUSE_DATA_DIR", + "value": "/var/lib/clickhouse-keeper" + } + ], + "image": "clickhouse/clickhouse-keeper:24.9.2.42", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "exec": { + "command": [ + "bash", + "-xc", + "date \u0026\u0026 OK=$(exec 3\u003c\u003e/dev/tcp/127.0.0.1/2181; printf 'ruok' \u003e\u00263; IFS=; tee \u003c\u00263; exec 3\u003c\u0026-;);if [[ \"${OK}\" == \"imok\" ]]; then exit 0; else exit 1; fi" + ] + }, + "failureThreshold": 12, + "initialDelaySeconds": 5, + "periodSeconds": 5, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "name": "clickhouse-keeper", + "ports": [ + { + "containerPort": 2181, + "name": "zk", + "protocol": "TCP" + }, + { + "containerPort": 9444, + "name": "raft", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-2" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-22wdt", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "hostAliases": [ + { + "hostnames": [ + "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2" + ], + "ip": "127.0.0.1" + } + ], + "hostname": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-0", + "nodeName": "ws2", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "linstor-scheduler", + "securityContext": { + "fsGroup": 101 + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "subdomain": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "default", + "persistentVolumeClaim": { + "claimName": "default-chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-0" + } + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-2" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-2" + }, + { + "name": "kube-api-access-22wdt", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:56Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:37Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:56Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:56Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:37Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + }, + "containerID": "containerd://32b236f2f48716f40d8f9d9db9f3b5ab6c206175e8a828e849c65d8d2fb0b57e", + "image": "docker.io/clickhouse/clickhouse-keeper:24.9.2.42", + "imageID": "docker.io/clickhouse/clickhouse-keeper@sha256:681b4b8c8b3d397174dd32de156ed36e9c206700d27ce7aaed63db54471a9340", + "lastState": {}, + "name": "clickhouse-keeper", + "ready": true, + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:53:55Z" + } + }, + "user": { + "linux": { + "gid": 0, + "supplementalGroups": [ + 0, + 1, + 2, + 3, + 4, + 6, + 10, + 11, + 20, + 26, + 27, + 101 + ], + "uid": 0 + } + }, + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-2" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-22wdt", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.3", + "hostIPs": [ + { + "ip": "192.168.100.3" + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.175", + "podIPs": [ + { + "ip": "10.244.16.175" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:53:37Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.19.162\"\n ],\n \"mac\": \"66:d8:99:0e:50:5a\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for container load; ephemeral-storage limit for container load", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.19.162", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "66:d8:99:0e:50:5a", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-30T06:00:00Z", + "generateName": "load-clickhouse-29801160-", + "generation": 1, + "labels": { + "batch.kubernetes.io/controller-uid": "788ba24c-c85f-459d-8e44-f6897d39fdd4", + "batch.kubernetes.io/job-name": "load-clickhouse-29801160", + "controller-uid": "788ba24c-c85f-459d-8e44-f6897d39fdd4", + "job-name": "load-clickhouse-29801160" + }, + "name": "load-clickhouse-29801160-259cm", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "batch/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Job", + "name": "load-clickhouse-29801160", + "uid": "788ba24c-c85f-459d-8e44-f6897d39fdd4" + } + ], + "resourceVersion": "47115285", + "uid": "adbaa919-f3fc-4b2a-8913-4096ee0a4817" + }, + "spec": { + "containers": [ + { + "args": [ + "curl -s \"$CH\" --data 'CREATE TABLE IF NOT EXISTS events(ts DateTime DEFAULT now(), user UInt32, action String) ENGINE=MergeTree ORDER BY ts TTL ts + INTERVAL 7 DAY'\nrows=\"\"; n=$((50 + $(date +%s) % 100))\ni=0; while [ $i -lt $n ]; do rows=\"$rows(now(),$((RANDOM%1000)),'action-$((RANDOM%20))'),\"; i=$((i+1)); done\ncurl -s \"$CH\" --data-binary \"INSERT INTO events(ts,user,action) VALUES ${rows%,}\"\necho \"insert $n rows\"\ncurl -s \"$CH\" --data 'SELECT action, count() c FROM events GROUP BY action ORDER BY c DESC LIMIT 5 FORMAT TabSeparated'\ncurl -s \"$CH\" --data 'SELECT count() FROM events'\necho \"clickhouse load done\"\n" + ], + "command": [ + "sh", + "-c" + ], + "env": [ + { + "name": "CH", + "value": "http://chendpoint-clickhouse-demo-clickhouse.tenant-workshop00.svc.cozy.local:8123/?user=app\u0026password=demo" + } + ], + "image": "curlimages/curl:8.10.1", + "imagePullPolicy": "IfNotPresent", + "name": "load", + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "96Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-psdpb", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "nodeName": "cloudpool-4cbd33a5a5c37606", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Never", + "schedulerName": "default-scheduler", + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 100, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "kube-api-access-psdpb", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:19Z", + "observedGeneration": 1, + "status": "False", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:13Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:13Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:00Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://4d2281e74cd9c36e2643547cec8a92e04a3b7cda24271244bbe058561ec22fdd", + "image": "docker.io/curlimages/curl:8.10.1", + "imageID": "docker.io/curlimages/curl@sha256:d9b4541e214bcd85196d6e92e2753ac6d0ea699f0af5741f8c6cccbfcf00ef4b", + "lastState": {}, + "name": "load", + "ready": false, + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "96Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://4d2281e74cd9c36e2643547cec8a92e04a3b7cda24271244bbe058561ec22fdd", + "exitCode": 0, + "finishedAt": "2026-08-30T06:00:12Z", + "reason": "Completed", + "startedAt": "2026-08-30T06:00:11Z" + } + }, + "user": { + "linux": { + "gid": 101, + "supplementalGroups": [ + 101 + ], + "uid": 100 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-psdpb", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.6", + "hostIPs": [ + { + "ip": "192.168.0.6" + } + ], + "observedGeneration": 1, + "phase": "Succeeded", + "podIP": "10.244.19.162", + "podIPs": [ + { + "ip": "10.244.19.162" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-30T06:00:00Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.19.171\"\n ],\n \"mac\": \"fe:04:a3:9b:9d:23\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for container load; ephemeral-storage limit for container load", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.19.171", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "fe:04:a3:9b:9d:23", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-30T06:18:00Z", + "generateName": "load-clickhouse-29801178-", + "generation": 1, + "labels": { + "batch.kubernetes.io/controller-uid": "6296aecb-ff88-47a6-a857-a747efaf8ec5", + "batch.kubernetes.io/job-name": "load-clickhouse-29801178", + "controller-uid": "6296aecb-ff88-47a6-a857-a747efaf8ec5", + "job-name": "load-clickhouse-29801178" + }, + "name": "load-clickhouse-29801178-49d8q", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "batch/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Job", + "name": "load-clickhouse-29801178", + "uid": "6296aecb-ff88-47a6-a857-a747efaf8ec5" + } + ], + "resourceVersion": "47149091", + "uid": "f0f2431d-354b-466c-a30e-42db7238e0b0" + }, + "spec": { + "containers": [ + { + "args": [ + "curl -s \"$CH\" --data 'CREATE TABLE IF NOT EXISTS events(ts DateTime DEFAULT now(), user UInt32, action String) ENGINE=MergeTree ORDER BY ts TTL ts + INTERVAL 7 DAY'\nrows=\"\"; n=$((50 + $(date +%s) % 100))\ni=0; while [ $i -lt $n ]; do rows=\"$rows(now(),$((RANDOM%1000)),'action-$((RANDOM%20))'),\"; i=$((i+1)); done\ncurl -s \"$CH\" --data-binary \"INSERT INTO events(ts,user,action) VALUES ${rows%,}\"\necho \"insert $n rows\"\ncurl -s \"$CH\" --data 'SELECT action, count() c FROM events GROUP BY action ORDER BY c DESC LIMIT 5 FORMAT TabSeparated'\ncurl -s \"$CH\" --data 'SELECT count() FROM events'\necho \"clickhouse load done\"\n" + ], + "command": [ + "sh", + "-c" + ], + "env": [ + { + "name": "CH", + "value": "http://chendpoint-clickhouse-demo-clickhouse.tenant-workshop00.svc.cozy.local:8123/?user=app\u0026password=demo" + } + ], + "image": "curlimages/curl:8.10.1", + "imagePullPolicy": "IfNotPresent", + "name": "load", + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "96Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-knmbq", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "nodeName": "cloudpool-4cbd33a5a5c37606", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Never", + "schedulerName": "default-scheduler", + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 100, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "kube-api-access-knmbq", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:18:13Z", + "observedGeneration": 1, + "status": "False", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:18:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:18:10Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:18:10Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:18:00Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://9ef963415c63d11837ce80dd477faf542805c47d5175fb9c975952061d7831a2", + "image": "docker.io/curlimages/curl:8.10.1", + "imageID": "docker.io/curlimages/curl@sha256:d9b4541e214bcd85196d6e92e2753ac6d0ea699f0af5741f8c6cccbfcf00ef4b", + "lastState": {}, + "name": "load", + "ready": false, + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "96Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://9ef963415c63d11837ce80dd477faf542805c47d5175fb9c975952061d7831a2", + "exitCode": 0, + "finishedAt": "2026-08-30T06:18:09Z", + "reason": "Completed", + "startedAt": "2026-08-30T06:18:09Z" + } + }, + "user": { + "linux": { + "gid": 101, + "supplementalGroups": [ + 101 + ], + "uid": 100 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-knmbq", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.6", + "hostIPs": [ + { + "ip": "192.168.0.6" + } + ], + "observedGeneration": 1, + "phase": "Succeeded", + "podIP": "10.244.19.171", + "podIPs": [ + { + "ip": "10.244.19.171" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-30T06:18:00Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.19.161\"\n ],\n \"mac\": \"32:7f:dd:82:a3:c3\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for container load; ephemeral-storage limit for container load", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.19.161", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "32:7f:dd:82:a3:c3", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-30T06:00:00Z", + "generateName": "load-postgres-29801160-", + "generation": 1, + "labels": { + "batch.kubernetes.io/controller-uid": "c21b3b2e-fe02-4cd4-817e-2fbbdfa5447f", + "batch.kubernetes.io/job-name": "load-postgres-29801160", + "controller-uid": "c21b3b2e-fe02-4cd4-817e-2fbbdfa5447f", + "job-name": "load-postgres-29801160" + }, + "name": "load-postgres-29801160-4msgg", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "batch/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Job", + "name": "load-postgres-29801160", + "uid": "c21b3b2e-fe02-4cd4-817e-2fbbdfa5447f" + } + ], + "resourceVersion": "47115418", + "uid": "08da0d7e-fe66-4af6-a48e-699d54b571d0" + }, + "spec": { + "containers": [ + { + "args": [ + "psql -v ON_ERROR_STOP=1 \u003c\u003c'SQL'\nCREATE TABLE IF NOT EXISTS orders(id bigserial PRIMARY KEY, item text, amount numeric, created_at timestamptz DEFAULT now());\nINSERT INTO orders(item,amount) SELECT 'item-'||floor(random()*200), round((random()*1000)::numeric,2) FROM generate_series(1, 20+floor(random()*40)::int);\nSELECT count(*) AS total, round(avg(amount),2) AS avg_amount FROM orders;\nSELECT item, count(*) FROM orders GROUP BY item ORDER BY 2 DESC LIMIT 5;\nDELETE FROM orders WHERE created_at \u003c now() - interval '7 days';\nSQL\necho \"postgres load done\"\n" + ], + "command": [ + "sh", + "-c" + ], + "env": [ + { + "name": "PGHOST", + "value": "postgres-demo-postgres-rw.tenant-workshop00.svc.cozy.local" + }, + { + "name": "PGUSER", + "value": "app" + }, + { + "name": "PGDATABASE", + "value": "app" + }, + { + "name": "PGPASSWORD", + "valueFrom": { + "secretKeyRef": { + "key": "app", + "name": "postgres-demo-postgres-credentials" + } + } + } + ], + "image": "postgres:16-alpine", + "imagePullPolicy": "IfNotPresent", + "name": "load", + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-bxgsz", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "nodeName": "cloudpool-4cbd33a5a5c37606", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Never", + "schedulerName": "default-scheduler", + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 70, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "kube-api-access-bxgsz", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:21Z", + "observedGeneration": 1, + "status": "False", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:00:00Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://43ab30c33033f017bdbdd68dfc643d8745c23d1fc4cf0b3ade2707718758b55c", + "image": "docker.io/library/postgres:16-alpine", + "imageID": "docker.io/library/postgres@sha256:cf78e76683b9ca8c5733cbbdce6c9262b45b6767934dd0a95e671f9a0fc20685", + "lastState": {}, + "name": "load", + "ready": false, + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://43ab30c33033f017bdbdd68dfc643d8745c23d1fc4cf0b3ade2707718758b55c", + "exitCode": 0, + "finishedAt": "2026-08-30T06:00:13Z", + "reason": "Completed", + "startedAt": "2026-08-30T06:00:13Z" + } + }, + "user": { + "linux": { + "gid": 70, + "supplementalGroups": [ + 70 + ], + "uid": 70 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-bxgsz", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.6", + "hostIPs": [ + { + "ip": "192.168.0.6" + } + ], + "observedGeneration": 1, + "phase": "Succeeded", + "podIP": "10.244.19.161", + "podIPs": [ + { + "ip": "10.244.19.161" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-30T06:00:00Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.19.170\"\n ],\n \"mac\": \"02:f0:e6:0b:f6:f4\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for container load; ephemeral-storage limit for container load", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.19.170", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "02:f0:e6:0b:f6:f4", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-30T06:15:00Z", + "generateName": "load-postgres-29801175-", + "generation": 1, + "labels": { + "batch.kubernetes.io/controller-uid": "745bba8a-4296-4350-ae60-12626379c58f", + "batch.kubernetes.io/job-name": "load-postgres-29801175", + "controller-uid": "745bba8a-4296-4350-ae60-12626379c58f", + "job-name": "load-postgres-29801175" + }, + "name": "load-postgres-29801175-d6zp2", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "batch/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Job", + "name": "load-postgres-29801175", + "uid": "745bba8a-4296-4350-ae60-12626379c58f" + } + ], + "resourceVersion": "47143383", + "uid": "3fdbaeb0-17fd-4351-b67f-6611c5d8f3a0" + }, + "spec": { + "containers": [ + { + "args": [ + "psql -v ON_ERROR_STOP=1 \u003c\u003c'SQL'\nCREATE TABLE IF NOT EXISTS orders(id bigserial PRIMARY KEY, item text, amount numeric, created_at timestamptz DEFAULT now());\nINSERT INTO orders(item,amount) SELECT 'item-'||floor(random()*200), round((random()*1000)::numeric,2) FROM generate_series(1, 20+floor(random()*40)::int);\nSELECT count(*) AS total, round(avg(amount),2) AS avg_amount FROM orders;\nSELECT item, count(*) FROM orders GROUP BY item ORDER BY 2 DESC LIMIT 5;\nDELETE FROM orders WHERE created_at \u003c now() - interval '7 days';\nSQL\necho \"postgres load done\"\n" + ], + "command": [ + "sh", + "-c" + ], + "env": [ + { + "name": "PGHOST", + "value": "postgres-demo-postgres-rw.tenant-workshop00.svc.cozy.local" + }, + { + "name": "PGUSER", + "value": "app" + }, + { + "name": "PGDATABASE", + "value": "app" + }, + { + "name": "PGPASSWORD", + "valueFrom": { + "secretKeyRef": { + "key": "app", + "name": "postgres-demo-postgres-credentials" + } + } + } + ], + "image": "postgres:16-alpine", + "imagePullPolicy": "IfNotPresent", + "name": "load", + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-rjf5f", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "nodeName": "cloudpool-4cbd33a5a5c37606", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Never", + "schedulerName": "default-scheduler", + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 70, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "kube-api-access-rjf5f", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:15:12Z", + "observedGeneration": 1, + "status": "False", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:15:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:15:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:15:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:15:00Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://52cdab8327ca4d17c4c64ac63d4bd0841189d7fae74d4638296a86da9de77b44", + "image": "docker.io/library/postgres:16-alpine", + "imageID": "docker.io/library/postgres@sha256:cf78e76683b9ca8c5733cbbdce6c9262b45b6767934dd0a95e671f9a0fc20685", + "lastState": {}, + "name": "load", + "ready": false, + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://52cdab8327ca4d17c4c64ac63d4bd0841189d7fae74d4638296a86da9de77b44", + "exitCode": 0, + "finishedAt": "2026-08-30T06:15:09Z", + "reason": "Completed", + "startedAt": "2026-08-30T06:15:09Z" + } + }, + "user": { + "linux": { + "gid": 70, + "supplementalGroups": [ + 70 + ], + "uid": 70 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-rjf5f", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.6", + "hostIPs": [ + { + "ip": "192.168.0.6" + } + ], + "observedGeneration": 1, + "phase": "Succeeded", + "podIP": "10.244.19.170", + "podIPs": [ + { + "ip": "10.244.19.170" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-30T06:15:00Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.19.167\"\n ],\n \"mac\": \"26:ed:bb:60:5e:34\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for container load; ephemeral-storage limit for container load", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.19.167", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "26:ed:bb:60:5e:34", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-30T06:12:00Z", + "generateName": "load-redis-29801172-", + "generation": 1, + "labels": { + "batch.kubernetes.io/controller-uid": "7770234d-193b-41d7-86a3-18b5b37c5927", + "batch.kubernetes.io/job-name": "load-redis-29801172", + "controller-uid": "7770234d-193b-41d7-86a3-18b5b37c5927", + "job-name": "load-redis-29801172" + }, + "name": "load-redis-29801172-gbsbk", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "batch/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Job", + "name": "load-redis-29801172", + "uid": "7770234d-193b-41d7-86a3-18b5b37c5927" + } + ], + "resourceVersion": "47137822", + "uid": "375b75d4-7266-4710-a37c-b55629302a4a" + }, + "spec": { + "containers": [ + { + "args": [ + "R=\"redis-cli -h $REDISHOST -a $REDISPW --no-auth-warning\"\nn=$((30 + RANDOM % 40))\nfor i in $(seq 1 $n); do $R set \"session:$RANDOM\" \"user-data-$RANDOM\" EX $((300 + RANDOM % 3000)) \u003e/dev/null; done\n$R incrby counter:visits $n \u003e/dev/null\n$R dbsize\n$R info keyspace | head -3\necho \"redis load done: $n keys\"\n" + ], + "command": [ + "sh", + "-c" + ], + "env": [ + { + "name": "REDISHOST", + "value": "rfrm-redis-demo-redis.tenant-workshop00.svc.cozy.local" + }, + { + "name": "REDISPW", + "valueFrom": { + "secretKeyRef": { + "key": "password", + "name": "redis-demo-redis-auth" + } + } + } + ], + "image": "redis:7-alpine", + "imagePullPolicy": "IfNotPresent", + "name": "load", + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "96Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-9fvp8", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "nodeName": "cloudpool-4cbd33a5a5c37606", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Never", + "schedulerName": "default-scheduler", + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 999, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "kube-api-access-9fvp8", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:12:13Z", + "observedGeneration": 1, + "status": "False", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:12:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:12:11Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:12:11Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:12:00Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://a63503b98b382099007eec5a056dc0d0c2751cd779922341ce3518f3aa69e07c", + "image": "docker.io/library/redis:7-alpine", + "imageID": "docker.io/library/redis@sha256:ff02b58f971e7d7d156a1267e283fcbbeee91773b6aa36c49dac28ecfe28eadf", + "lastState": {}, + "name": "load", + "ready": false, + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "96Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://a63503b98b382099007eec5a056dc0d0c2751cd779922341ce3518f3aa69e07c", + "exitCode": 0, + "finishedAt": "2026-08-30T06:12:10Z", + "reason": "Completed", + "startedAt": "2026-08-30T06:12:09Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 999 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-9fvp8", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.6", + "hostIPs": [ + { + "ip": "192.168.0.6" + } + ], + "observedGeneration": 1, + "phase": "Succeeded", + "podIP": "10.244.19.167", + "podIPs": [ + { + "ip": "10.244.19.167" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-30T06:12:00Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.19.174\"\n ],\n \"mac\": \"de:54:15:1e:9b:6f\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for container load; ephemeral-storage limit for container load", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.19.174", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "de:54:15:1e:9b:6f", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-30T06:24:00Z", + "generateName": "load-redis-29801184-", + "generation": 1, + "labels": { + "batch.kubernetes.io/controller-uid": "826ab7a5-6f84-408a-922a-fcd21cd0f04f", + "batch.kubernetes.io/job-name": "load-redis-29801184", + "controller-uid": "826ab7a5-6f84-408a-922a-fcd21cd0f04f", + "job-name": "load-redis-29801184" + }, + "name": "load-redis-29801184-ghtdk", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "batch/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Job", + "name": "load-redis-29801184", + "uid": "826ab7a5-6f84-408a-922a-fcd21cd0f04f" + } + ], + "resourceVersion": "47160227", + "uid": "5689d075-0f44-43bf-a0ba-700b747c675d" + }, + "spec": { + "containers": [ + { + "args": [ + "R=\"redis-cli -h $REDISHOST -a $REDISPW --no-auth-warning\"\nn=$((30 + RANDOM % 40))\nfor i in $(seq 1 $n); do $R set \"session:$RANDOM\" \"user-data-$RANDOM\" EX $((300 + RANDOM % 3000)) \u003e/dev/null; done\n$R incrby counter:visits $n \u003e/dev/null\n$R dbsize\n$R info keyspace | head -3\necho \"redis load done: $n keys\"\n" + ], + "command": [ + "sh", + "-c" + ], + "env": [ + { + "name": "REDISHOST", + "value": "rfrm-redis-demo-redis.tenant-workshop00.svc.cozy.local" + }, + { + "name": "REDISPW", + "valueFrom": { + "secretKeyRef": { + "key": "password", + "name": "redis-demo-redis-auth" + } + } + } + ], + "image": "redis:7-alpine", + "imagePullPolicy": "IfNotPresent", + "name": "load", + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "96Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-4b7cs", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "nodeName": "cloudpool-4cbd33a5a5c37606", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Never", + "schedulerName": "default-scheduler", + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 999, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "kube-api-access-4b7cs", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:24:13Z", + "observedGeneration": 1, + "status": "False", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:24:00Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:24:10Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:24:10Z", + "observedGeneration": 1, + "reason": "PodCompleted", + "status": "False", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:24:00Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://a8e807a15ac96a00a6a57ed1c23412f9c2d8faf964fa19bb2d82393478cca12c", + "image": "docker.io/library/redis:7-alpine", + "imageID": "docker.io/library/redis@sha256:ff02b58f971e7d7d156a1267e283fcbbeee91773b6aa36c49dac28ecfe28eadf", + "lastState": {}, + "name": "load", + "ready": false, + "resources": { + "limits": { + "cpu": "200m", + "ephemeral-storage": "2Gi", + "memory": "96Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://a8e807a15ac96a00a6a57ed1c23412f9c2d8faf964fa19bb2d82393478cca12c", + "exitCode": 0, + "finishedAt": "2026-08-30T06:24:10Z", + "reason": "Completed", + "startedAt": "2026-08-30T06:24:08Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 999 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-4b7cs", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.6", + "hostIPs": [ + { + "ip": "192.168.0.6" + } + ], + "observedGeneration": 1, + "phase": "Succeeded", + "podIP": "10.244.19.174", + "podIPs": [ + { + "ip": "10.244.19.174" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-30T06:24:00Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "checksum/config": "e5444580c919938dcc8ecf942a2e0171dd51dd54c3df5862c620ee8defea12e7", + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.19.173\"\n ],\n \"mac\": \"66:04:2a:9b:1f:9e\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu, ephemeral-storage, memory request for container reloader; cpu, ephemeral-storage, memory limit for container reloader; cpu, ephemeral-storage, memory request for container prom-exporter; cpu, ephemeral-storage, memory limit for container prom-exporter", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.19.173", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "66:04:2a:9b:1f:9e", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-30T06:23:37Z", + "generateName": "nats-demo-nats-", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "nats", + "app.kubernetes.io/version": "2.11.10", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "NATS", + "apps.cozystack.io/application.name": "demo-nats", + "apps.kubernetes.io/pod-index": "0", + "controller-revision-hash": "nats-demo-nats-55db96f9d4", + "helm.sh/chart": "nats-1.3.16", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "statefulset.kubernetes.io/pod-name": "nats-demo-nats-0" + }, + "name": "nats-demo-nats-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "StatefulSet", + "name": "nats-demo-nats", + "uid": "0f3d6b47-2933-4356-afda-7dcdd2ad8dcb" + } + ], + "resourceVersion": "47159716", + "uid": "fb68704f-cbce-4fba-8573-00decc3173a8" + }, + "spec": { + "containers": [ + { + "args": [ + "--config", + "/etc/nats-config/nats.conf" + ], + "env": [ + { + "name": "POD_NAME", + "valueFrom": { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.name" + } + } + }, + { + "name": "SERVER_NAME", + "value": "$(POD_NAME)" + } + ], + "image": "nats:2.11.10-alpine", + "imagePullPolicy": "IfNotPresent", + "lifecycle": { + "preStop": { + "exec": { + "command": [ + "nats-server", + "-sl=ldm=/var/run/nats/nats.pid" + ] + } + } + }, + "livenessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz?js-enabled-only=true", + "port": "monitor", + "scheme": "HTTP" + }, + "initialDelaySeconds": 10, + "periodSeconds": 30, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "nats", + "ports": [ + { + "containerPort": 4222, + "name": "nats", + "protocol": "TCP" + }, + { + "containerPort": 6222, + "name": "cluster", + "protocol": "TCP" + }, + { + "containerPort": 8222, + "name": "monitor", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz?js-server-only=true", + "port": "monitor", + "scheme": "HTTP" + }, + "initialDelaySeconds": 10, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "startupProbe": { + "failureThreshold": 90, + "httpGet": { + "path": "/healthz", + "port": "monitor", + "scheme": "HTTP" + }, + "initialDelaySeconds": 10, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/nats-config", + "name": "config" + }, + { + "mountPath": "/var/run/nats", + "name": "pid" + }, + { + "mountPath": "/data", + "name": "nats-demo-nats-js" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-dm5z8", + "readOnly": true + } + ] + }, + { + "args": [ + "-pid", + "/var/run/nats/nats.pid", + "-config", + "/etc/nats-config/nats.conf" + ], + "image": "natsio/nats-server-config-reloader:0.20.1", + "imagePullPolicy": "IfNotPresent", + "name": "reloader", + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/nats", + "name": "pid" + }, + { + "mountPath": "/etc/nats-config", + "name": "config" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-dm5z8", + "readOnly": true + } + ] + }, + { + "args": [ + "-port=7777", + "-connz", + "-routez", + "-subz", + "-varz", + "-prefix=nats", + "-use_internal_server_id", + "-jsz=all", + "http://localhost:8222/" + ], + "image": "natsio/prometheus-nats-exporter:0.17.3", + "imagePullPolicy": "IfNotPresent", + "name": "prom-exporter", + "ports": [ + { + "containerPort": 7777, + "name": "prom-metrics", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-dm5z8", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": false, + "hostname": "nats-demo-nats-0", + "nodeName": "ws1", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "linstor-scheduler", + "securityContext": {}, + "serviceAccount": "default", + "serviceAccountName": "default", + "shareProcessNamespace": true, + "subdomain": "nats-demo-nats-headless", + "terminationGracePeriodSeconds": 60, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "nats-demo-nats-js", + "persistentVolumeClaim": { + "claimName": "nats-demo-nats-js-nats-demo-nats-0" + } + }, + { + "configMap": { + "defaultMode": 420, + "name": "nats-demo-nats-config" + }, + "name": "config" + }, + { + "emptyDir": {}, + "name": "pid" + }, + { + "name": "kube-api-access-dm5z8", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:57Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:41Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:41Z", + "message": "containers with unready status: [nats]", + "observedGeneration": 1, + "reason": "ContainersNotReady", + "status": "False", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:41Z", + "message": "containers with unready status: [nats]", + "observedGeneration": 1, + "reason": "ContainersNotReady", + "status": "False", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:41Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://0b08dcf96b3252c6291d5f2904c433a4664a8724515438a544b1f2397f7ad70c", + "image": "docker.io/library/nats:2.11.10-alpine", + "imageID": "docker.io/library/nats@sha256:cfb8778d98230be90832bee7fec91ae04a230c11ed52646b6a65755f3e89f085", + "lastState": {}, + "name": "nats", + "ready": false, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": false, + "state": { + "running": { + "startedAt": "2026-08-30T06:23:56Z" + } + }, + "user": { + "linux": { + "gid": 0, + "supplementalGroups": [ + 0, + 1, + 2, + 3, + 4, + 6, + 10, + 11, + 20, + 26, + 27 + ], + "uid": 0 + } + }, + "volumeMounts": [ + { + "mountPath": "/etc/nats-config", + "name": "config" + }, + { + "mountPath": "/var/run/nats", + "name": "pid" + }, + { + "mountPath": "/data", + "name": "nats-demo-nats-js" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-dm5z8", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + }, + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + }, + "containerID": "containerd://7776da50401051fbd6ebf3881c37caff11ecc71417351cb0fc825f4a6d13c0aa", + "image": "docker.io/natsio/prometheus-nats-exporter:0.17.3", + "imageID": "docker.io/natsio/prometheus-nats-exporter@sha256:26c826662ac8424597cc9bdf89ea5b606eb66e3c11db9b1215c27d2076bbb01b", + "lastState": {}, + "name": "prom-exporter", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-30T06:23:56Z" + } + }, + "user": { + "linux": { + "gid": 0, + "supplementalGroups": [ + 0, + 1, + 2, + 3, + 4, + 6, + 10, + 11, + 20, + 26, + 27 + ], + "uid": 0 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-dm5z8", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + }, + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + }, + "containerID": "containerd://d297722fa89ad7e49fa92d4a63296f947c22afb95fcc47593122aadeacf3783f", + "image": "docker.io/natsio/nats-server-config-reloader:0.20.1", + "imageID": "docker.io/natsio/nats-server-config-reloader@sha256:47094fcae2f4ce163ba2ff8b1ca5b0eead8bd642f0b05b6339ae1ff64fcf9e21", + "lastState": {}, + "name": "reloader", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-30T06:23:56Z" + } + }, + "user": { + "linux": { + "gid": 0, + "supplementalGroups": [ + 0, + 1, + 2, + 3, + 4, + 6, + 10, + 11, + 20, + 26, + 27 + ], + "uid": 0 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/nats", + "name": "pid" + }, + { + "mountPath": "/etc/nats-config", + "name": "config" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-dm5z8", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.2", + "hostIPs": [ + { + "ip": "192.168.100.2" + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.19.173", + "podIPs": [ + { + "ip": "10.244.19.173" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-30T06:23:41Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.19.172\"\n ],\n \"mac\": \"ca:4a:a9:05:82:01\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu, ephemeral-storage, memory request for container nats-box; cpu, ephemeral-storage, memory limit for container nats-box", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.19.172", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "ca:4a:a9:05:82:01", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-30T06:23:37Z", + "generateName": "nats-demo-nats-box-f5b4dd87f-", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "nats-box", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "nats", + "app.kubernetes.io/version": "2.11.10", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "NATS", + "apps.cozystack.io/application.name": "demo-nats", + "helm.sh/chart": "nats-1.3.16", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "pod-template-hash": "f5b4dd87f" + }, + "name": "nats-demo-nats-box-f5b4dd87f-n2r84", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ReplicaSet", + "name": "nats-demo-nats-box-f5b4dd87f", + "uid": "20a9eded-0748-455e-bb51-25edf62bd0ca" + } + ], + "resourceVersion": "47159414", + "uid": "81568621-8897-4b4f-84c1-f8dca080e2eb" + }, + "spec": { + "containers": [ + { + "args": [ + "sh", + "-ec", + "trap true INT TERM; sleep infinity \u0026 wait" + ], + "command": [ + "sh", + "-ec", + "work_dir=\"$(pwd)\"\nmkdir -p \"$XDG_CONFIG_HOME/nats\"\ncd \"$XDG_CONFIG_HOME/nats\"\nif ! [ -s context ]; then\n ln -s /etc/nats-contexts context\nfi\nif ! [ -f context.txt ]; then\n echo -n \"default\" \u003e context.txt\nfi\ncd \"$work_dir\"\nexec /entrypoint.sh \"$@\"\n", + "--" + ], + "image": "natsio/nats-box:0.19.2", + "imagePullPolicy": "IfNotPresent", + "name": "nats-box", + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/nats-contexts", + "name": "contexts" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-s9wgq", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": false, + "nodeName": "cloudpool-4cbd33a5a5c37606", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": {}, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "contexts", + "secret": { + "defaultMode": 420, + "secretName": "nats-demo-nats-box-contexts" + } + }, + { + "name": "kube-api-access-s9wgq", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:45Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:37Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:45Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:45Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-30T06:23:37Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + }, + "containerID": "containerd://9a36fcaf08cdf095888cc4295cf98ccdf4ea335bd55add7f9c4a74c09c4cc53b", + "image": "docker.io/natsio/nats-box:0.19.2", + "imageID": "docker.io/natsio/nats-box@sha256:8031d190c7ee24081f3f27cc939fb647a1eeb29ebb5c60fef9b5b6c7a846d6a2", + "lastState": {}, + "name": "nats-box", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "50Mi", + "memory": "128Mi" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-30T06:23:45Z" + } + }, + "user": { + "linux": { + "gid": 0, + "supplementalGroups": [ + 0, + 1, + 2, + 3, + 4, + 6, + 10, + 11, + 20, + 26, + 27 + ], + "uid": 0 + } + }, + "volumeMounts": [ + { + "mountPath": "/etc/nats-contexts", + "name": "contexts" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-s9wgq", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.6", + "hostIPs": [ + { + "ip": "192.168.0.6" + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.19.172", + "podIPs": [ + { + "ip": "10.244.19.172" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-30T06:23:37Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "cnpg.io/nodeSerial": "1", + "cnpg.io/operatorVersion": "1.28.2", + "cnpg.io/podEnvHash": "77dfb8bc68", + "cnpg.io/podSpec": "{\"volumes\":[{\"name\":\"pgdata\",\"persistentVolumeClaim\":{\"claimName\":\"postgres-demo-postgres-1\"}},{\"name\":\"scratch-data\",\"emptyDir\":{}},{\"name\":\"shm\",\"emptyDir\":{\"medium\":\"Memory\"}}],\"initContainers\":[{\"name\":\"bootstrap-controller\",\"image\":\"ghcr.io/cloudnative-pg/cloudnative-pg:1.28.2\",\"command\":[\"/manager\",\"bootstrap\",\"/controller/manager\",\"--log-level=info\"],\"resources\":{\"limits\":{\"cpu\":\"250m\",\"ephemeral-storage\":\"2Gi\",\"memory\":\"128Mi\"},\"requests\":{\"cpu\":\"25m\",\"ephemeral-storage\":\"53687091\",\"memory\":\"134217728\"}},\"volumeMounts\":[{\"name\":\"pgdata\",\"mountPath\":\"/var/lib/postgresql/data\"},{\"name\":\"scratch-data\",\"mountPath\":\"/run\"},{\"name\":\"scratch-data\",\"mountPath\":\"/controller\"},{\"name\":\"shm\",\"mountPath\":\"/dev/shm\"}],\"securityContext\":{\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"runAsNonRoot\":true,\"readOnlyRootFilesystem\":true,\"allowPrivilegeEscalation\":false,\"seccompProfile\":{\"type\":\"RuntimeDefault\"}}}],\"containers\":[{\"name\":\"postgres\",\"image\":\"ghcr.io/cloudnative-pg/postgresql:18.1\",\"command\":[\"/controller/manager\",\"instance\",\"run\",\"--status-port-tls\",\"--log-level=info\"],\"ports\":[{\"name\":\"postgresql\",\"containerPort\":5432,\"protocol\":\"TCP\"},{\"name\":\"metrics\",\"containerPort\":9187,\"protocol\":\"TCP\"},{\"name\":\"status\",\"containerPort\":8000,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"PGDATA\",\"value\":\"/var/lib/postgresql/data/pgdata\"},{\"name\":\"POD_NAME\",\"value\":\"postgres-demo-postgres-1\"},{\"name\":\"NAMESPACE\",\"value\":\"tenant-workshop00\"},{\"name\":\"CLUSTER_NAME\",\"value\":\"postgres-demo-postgres\"},{\"name\":\"PSQL_HISTORY\",\"value\":\"/controller/tmp/.psql_history\"},{\"name\":\"PGPORT\",\"value\":\"5432\"},{\"name\":\"PGHOST\",\"value\":\"/controller/run\"},{\"name\":\"TMPDIR\",\"value\":\"/controller/tmp\"}],\"resources\":{\"limits\":{\"cpu\":\"250m\",\"ephemeral-storage\":\"2Gi\",\"memory\":\"128Mi\"},\"requests\":{\"cpu\":\"25m\",\"ephemeral-storage\":\"53687091\",\"memory\":\"134217728\"}},\"volumeMounts\":[{\"name\":\"pgdata\",\"mountPath\":\"/var/lib/postgresql/data\"},{\"name\":\"scratch-data\",\"mountPath\":\"/run\"},{\"name\":\"scratch-data\",\"mountPath\":\"/controller\"},{\"name\":\"shm\",\"mountPath\":\"/dev/shm\"}],\"livenessProbe\":{\"httpGet\":{\"path\":\"/healthz\",\"port\":8000,\"scheme\":\"HTTPS\"},\"timeoutSeconds\":5,\"periodSeconds\":10},\"readinessProbe\":{\"httpGet\":{\"path\":\"/readyz\",\"port\":8000,\"scheme\":\"HTTPS\"},\"timeoutSeconds\":5,\"periodSeconds\":10},\"startupProbe\":{\"httpGet\":{\"path\":\"/startupz\",\"port\":8000,\"scheme\":\"HTTPS\"},\"timeoutSeconds\":5,\"periodSeconds\":10,\"failureThreshold\":360},\"securityContext\":{\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"runAsNonRoot\":true,\"readOnlyRootFilesystem\":true,\"allowPrivilegeEscalation\":false,\"seccompProfile\":{\"type\":\"RuntimeDefault\"}}}],\"terminationGracePeriodSeconds\":1800,\"serviceAccountName\":\"postgres-demo-postgres\",\"securityContext\":{\"runAsUser\":26,\"runAsGroup\":26,\"runAsNonRoot\":true,\"fsGroup\":26,\"seccompProfile\":{\"type\":\"RuntimeDefault\"}},\"hostname\":\"postgres-demo-postgres-1\",\"affinity\":{\"podAntiAffinity\":{\"preferredDuringSchedulingIgnoredDuringExecution\":[{\"weight\":100,\"podAffinityTerm\":{\"labelSelector\":{\"matchExpressions\":[{\"key\":\"cnpg.io/cluster\",\"operator\":\"In\",\"values\":[\"postgres-demo-postgres\"]},{\"key\":\"cnpg.io/podRole\",\"operator\":\"In\",\"values\":[\"instance\"]}]},\"topologyKey\":\"kubernetes.io/hostname\"}}]}}}", + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.169\"\n ],\n \"mac\": \"1a:fc:9e:2d:89:1c\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.169", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "1a:fc:9e:2d:89:1c", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-29T01:52:31Z", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "database", + "app.kubernetes.io/instance": "postgres-demo-postgres", + "app.kubernetes.io/managed-by": "cloudnative-pg", + "app.kubernetes.io/name": "postgres.apps.cozystack.io", + "app.kubernetes.io/version": "18", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Postgres", + "apps.cozystack.io/application.name": "demo-postgres", + "cnpg.io/cluster": "postgres-demo-postgres", + "cnpg.io/instanceName": "postgres-demo-postgres-1", + "cnpg.io/instanceRole": "primary", + "cnpg.io/podRole": "instance", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "policy.cozystack.io/allow-to-apiserver": "true", + "role": "primary" + }, + "name": "postgres-demo-postgres-1", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "postgresql.cnpg.io/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Cluster", + "name": "postgres-demo-postgres", + "uid": "2f40d223-adab-4bc8-bbfc-28573efa5ce6" + } + ], + "resourceVersion": "43951154", + "uid": "71c09660-0ce8-46d6-bfca-14faded956d9" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchExpressions": [ + { + "key": "cnpg.io/cluster", + "operator": "In", + "values": [ + "postgres-demo-postgres" + ] + }, + { + "key": "cnpg.io/podRole", + "operator": "In", + "values": [ + "instance" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + }, + "containers": [ + { + "command": [ + "/controller/manager", + "instance", + "run", + "--status-port-tls", + "--log-level=info" + ], + "env": [ + { + "name": "PGDATA", + "value": "/var/lib/postgresql/data/pgdata" + }, + { + "name": "POD_NAME", + "value": "postgres-demo-postgres-1" + }, + { + "name": "NAMESPACE", + "value": "tenant-workshop00" + }, + { + "name": "CLUSTER_NAME", + "value": "postgres-demo-postgres" + }, + { + "name": "PSQL_HISTORY", + "value": "/controller/tmp/.psql_history" + }, + { + "name": "PGPORT", + "value": "5432" + }, + { + "name": "PGHOST", + "value": "/controller/run" + }, + { + "name": "TMPDIR", + "value": "/controller/tmp" + } + ], + "image": "ghcr.io/cloudnative-pg/postgresql:18.1", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz", + "port": 8000, + "scheme": "HTTPS" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "postgres", + "ports": [ + { + "containerPort": 5432, + "name": "postgresql", + "protocol": "TCP" + }, + { + "containerPort": 9187, + "name": "metrics", + "protocol": "TCP" + }, + { + "containerPort": 8000, + "name": "status", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/readyz", + "port": 8000, + "scheme": "HTTPS" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsNonRoot": true, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "startupProbe": { + "failureThreshold": 360, + "httpGet": { + "path": "/startupz", + "port": 8000, + "scheme": "HTTPS" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/lib/postgresql/data", + "name": "pgdata" + }, + { + "mountPath": "/run", + "name": "scratch-data" + }, + { + "mountPath": "/controller", + "name": "scratch-data" + }, + { + "mountPath": "/dev/shm", + "name": "shm" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-6zcld", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "hostname": "postgres-demo-postgres-1", + "initContainers": [ + { + "command": [ + "/manager", + "bootstrap", + "/controller/manager", + "--log-level=info" + ], + "image": "ghcr.io/cloudnative-pg/cloudnative-pg:1.28.2", + "imagePullPolicy": "IfNotPresent", + "name": "bootstrap-controller", + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsNonRoot": true, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/lib/postgresql/data", + "name": "pgdata" + }, + { + "mountPath": "/run", + "name": "scratch-data" + }, + { + "mountPath": "/controller", + "name": "scratch-data" + }, + { + "mountPath": "/dev/shm", + "name": "shm" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-6zcld", + "readOnly": true + } + ] + } + ], + "nodeName": "ws2", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "linstor-scheduler", + "securityContext": { + "fsGroup": 26, + "runAsGroup": 26, + "runAsNonRoot": true, + "runAsUser": 26, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "postgres-demo-postgres", + "serviceAccountName": "postgres-demo-postgres", + "terminationGracePeriodSeconds": 1800, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "pgdata", + "persistentVolumeClaim": { + "claimName": "postgres-demo-postgres-1" + } + }, + { + "emptyDir": {}, + "name": "scratch-data" + }, + { + "emptyDir": { + "medium": "Memory" + }, + "name": "shm" + }, + { + "name": "kube-api-access-6zcld", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:50Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:50Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:52Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:52Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:31Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://1619867d2318a8fe28387218899ae72c3e86e2aae34fc21ce98107aeb0d68202", + "image": "ghcr.io/cloudnative-pg/postgresql:18.1", + "imageID": "ghcr.io/cloudnative-pg/postgresql@sha256:cc78f0c280978dd93fa6f49ce6cef60015cf4b56fd0e6a47c8ca49020b875f74", + "lastState": {}, + "name": "postgres", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:50Z" + } + }, + "user": { + "linux": { + "gid": 26, + "supplementalGroups": [ + 26, + 101 + ], + "uid": 26 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/lib/postgresql/data", + "name": "pgdata" + }, + { + "mountPath": "/run", + "name": "scratch-data" + }, + { + "mountPath": "/controller", + "name": "scratch-data" + }, + { + "mountPath": "/dev/shm", + "name": "shm" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-6zcld", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.3", + "hostIPs": [ + { + "ip": "192.168.100.3" + } + ], + "initContainerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://6f7cdb97daf33e110d3ac41f61a12bebf205b8271411c33e07a45406db2bb73b", + "image": "ghcr.io/cloudnative-pg/cloudnative-pg:1.28.2", + "imageID": "ghcr.io/cloudnative-pg/cloudnative-pg@sha256:510de37115a75f364e9464e1796352a80c5f4b05a62b5aac5d713e9d7548aa1f", + "lastState": {}, + "name": "bootstrap-controller", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://6f7cdb97daf33e110d3ac41f61a12bebf205b8271411c33e07a45406db2bb73b", + "exitCode": 0, + "finishedAt": "2026-08-29T01:52:49Z", + "reason": "Completed", + "startedAt": "2026-08-29T01:52:49Z" + } + }, + "user": { + "linux": { + "gid": 26, + "supplementalGroups": [ + 26 + ], + "uid": 26 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/lib/postgresql/data", + "name": "pgdata" + }, + { + "mountPath": "/run", + "name": "scratch-data" + }, + { + "mountPath": "/controller", + "name": "scratch-data" + }, + { + "mountPath": "/dev/shm", + "name": "shm" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-6zcld", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.169", + "podIPs": [ + { + "ip": "10.244.16.169" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:52:31Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "cnpg.io/nodeSerial": "2", + "cnpg.io/operatorVersion": "1.28.2", + "cnpg.io/podEnvHash": "bcd6f9785", + "cnpg.io/podSpec": "{\"volumes\":[{\"name\":\"pgdata\",\"persistentVolumeClaim\":{\"claimName\":\"postgres-demo-postgres-2\"}},{\"name\":\"scratch-data\",\"emptyDir\":{}},{\"name\":\"shm\",\"emptyDir\":{\"medium\":\"Memory\"}}],\"initContainers\":[{\"name\":\"bootstrap-controller\",\"image\":\"ghcr.io/cloudnative-pg/cloudnative-pg:1.28.2\",\"command\":[\"/manager\",\"bootstrap\",\"/controller/manager\",\"--log-level=info\"],\"resources\":{\"limits\":{\"cpu\":\"250m\",\"ephemeral-storage\":\"2Gi\",\"memory\":\"128Mi\"},\"requests\":{\"cpu\":\"25m\",\"ephemeral-storage\":\"53687091\",\"memory\":\"134217728\"}},\"volumeMounts\":[{\"name\":\"pgdata\",\"mountPath\":\"/var/lib/postgresql/data\"},{\"name\":\"scratch-data\",\"mountPath\":\"/run\"},{\"name\":\"scratch-data\",\"mountPath\":\"/controller\"},{\"name\":\"shm\",\"mountPath\":\"/dev/shm\"}],\"securityContext\":{\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"runAsNonRoot\":true,\"readOnlyRootFilesystem\":true,\"allowPrivilegeEscalation\":false,\"seccompProfile\":{\"type\":\"RuntimeDefault\"}}}],\"containers\":[{\"name\":\"postgres\",\"image\":\"ghcr.io/cloudnative-pg/postgresql:18.1\",\"command\":[\"/controller/manager\",\"instance\",\"run\",\"--status-port-tls\",\"--log-level=info\"],\"ports\":[{\"name\":\"postgresql\",\"containerPort\":5432,\"protocol\":\"TCP\"},{\"name\":\"metrics\",\"containerPort\":9187,\"protocol\":\"TCP\"},{\"name\":\"status\",\"containerPort\":8000,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"PGDATA\",\"value\":\"/var/lib/postgresql/data/pgdata\"},{\"name\":\"POD_NAME\",\"value\":\"postgres-demo-postgres-2\"},{\"name\":\"NAMESPACE\",\"value\":\"tenant-workshop00\"},{\"name\":\"CLUSTER_NAME\",\"value\":\"postgres-demo-postgres\"},{\"name\":\"PSQL_HISTORY\",\"value\":\"/controller/tmp/.psql_history\"},{\"name\":\"PGPORT\",\"value\":\"5432\"},{\"name\":\"PGHOST\",\"value\":\"/controller/run\"},{\"name\":\"TMPDIR\",\"value\":\"/controller/tmp\"}],\"resources\":{\"limits\":{\"cpu\":\"250m\",\"ephemeral-storage\":\"2Gi\",\"memory\":\"128Mi\"},\"requests\":{\"cpu\":\"25m\",\"ephemeral-storage\":\"53687091\",\"memory\":\"134217728\"}},\"volumeMounts\":[{\"name\":\"pgdata\",\"mountPath\":\"/var/lib/postgresql/data\"},{\"name\":\"scratch-data\",\"mountPath\":\"/run\"},{\"name\":\"scratch-data\",\"mountPath\":\"/controller\"},{\"name\":\"shm\",\"mountPath\":\"/dev/shm\"}],\"livenessProbe\":{\"httpGet\":{\"path\":\"/healthz\",\"port\":8000,\"scheme\":\"HTTPS\"},\"timeoutSeconds\":5,\"periodSeconds\":10},\"readinessProbe\":{\"httpGet\":{\"path\":\"/readyz\",\"port\":8000,\"scheme\":\"HTTPS\"},\"timeoutSeconds\":5,\"periodSeconds\":10},\"startupProbe\":{\"httpGet\":{\"path\":\"/startupz\",\"port\":8000,\"scheme\":\"HTTPS\"},\"timeoutSeconds\":5,\"periodSeconds\":10,\"failureThreshold\":360},\"securityContext\":{\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"runAsNonRoot\":true,\"readOnlyRootFilesystem\":true,\"allowPrivilegeEscalation\":false,\"seccompProfile\":{\"type\":\"RuntimeDefault\"}}}],\"terminationGracePeriodSeconds\":1800,\"serviceAccountName\":\"postgres-demo-postgres\",\"securityContext\":{\"runAsUser\":26,\"runAsGroup\":26,\"runAsNonRoot\":true,\"fsGroup\":26,\"seccompProfile\":{\"type\":\"RuntimeDefault\"}},\"hostname\":\"postgres-demo-postgres-2\",\"affinity\":{\"podAntiAffinity\":{\"preferredDuringSchedulingIgnoredDuringExecution\":[{\"weight\":100,\"podAffinityTerm\":{\"labelSelector\":{\"matchExpressions\":[{\"key\":\"cnpg.io/cluster\",\"operator\":\"In\",\"values\":[\"postgres-demo-postgres\"]},{\"key\":\"cnpg.io/podRole\",\"operator\":\"In\",\"values\":[\"instance\"]}]},\"topologyKey\":\"kubernetes.io/hostname\"}}]}}}", + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.174\"\n ],\n \"mac\": \"6a:68:73:84:72:42\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.174", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "6a:68:73:84:72:42", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-29T01:53:25Z", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "database", + "app.kubernetes.io/instance": "postgres-demo-postgres", + "app.kubernetes.io/managed-by": "cloudnative-pg", + "app.kubernetes.io/name": "postgres.apps.cozystack.io", + "app.kubernetes.io/version": "18", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Postgres", + "apps.cozystack.io/application.name": "demo-postgres", + "cnpg.io/cluster": "postgres-demo-postgres", + "cnpg.io/instanceName": "postgres-demo-postgres-2", + "cnpg.io/instanceRole": "replica", + "cnpg.io/podRole": "instance", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "policy.cozystack.io/allow-to-apiserver": "true", + "role": "replica" + }, + "name": "postgres-demo-postgres-2", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "postgresql.cnpg.io/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "Cluster", + "name": "postgres-demo-postgres", + "uid": "2f40d223-adab-4bc8-bbfc-28573efa5ce6" + } + ], + "resourceVersion": "43953602", + "uid": "f75b8bf0-35a0-467b-80f8-ecf4b154b205" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchExpressions": [ + { + "key": "cnpg.io/cluster", + "operator": "In", + "values": [ + "postgres-demo-postgres" + ] + }, + { + "key": "cnpg.io/podRole", + "operator": "In", + "values": [ + "instance" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + }, + "containers": [ + { + "command": [ + "/controller/manager", + "instance", + "run", + "--status-port-tls", + "--log-level=info" + ], + "env": [ + { + "name": "PGDATA", + "value": "/var/lib/postgresql/data/pgdata" + }, + { + "name": "POD_NAME", + "value": "postgres-demo-postgres-2" + }, + { + "name": "NAMESPACE", + "value": "tenant-workshop00" + }, + { + "name": "CLUSTER_NAME", + "value": "postgres-demo-postgres" + }, + { + "name": "PSQL_HISTORY", + "value": "/controller/tmp/.psql_history" + }, + { + "name": "PGPORT", + "value": "5432" + }, + { + "name": "PGHOST", + "value": "/controller/run" + }, + { + "name": "TMPDIR", + "value": "/controller/tmp" + } + ], + "image": "ghcr.io/cloudnative-pg/postgresql:18.1", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz", + "port": 8000, + "scheme": "HTTPS" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "postgres", + "ports": [ + { + "containerPort": 5432, + "name": "postgresql", + "protocol": "TCP" + }, + { + "containerPort": 9187, + "name": "metrics", + "protocol": "TCP" + }, + { + "containerPort": 8000, + "name": "status", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/readyz", + "port": 8000, + "scheme": "HTTPS" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsNonRoot": true, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "startupProbe": { + "failureThreshold": 360, + "httpGet": { + "path": "/startupz", + "port": 8000, + "scheme": "HTTPS" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/lib/postgresql/data", + "name": "pgdata" + }, + { + "mountPath": "/run", + "name": "scratch-data" + }, + { + "mountPath": "/controller", + "name": "scratch-data" + }, + { + "mountPath": "/dev/shm", + "name": "shm" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-578zm", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "hostname": "postgres-demo-postgres-2", + "initContainers": [ + { + "command": [ + "/manager", + "bootstrap", + "/controller/manager", + "--log-level=info" + ], + "image": "ghcr.io/cloudnative-pg/cloudnative-pg:1.28.2", + "imagePullPolicy": "IfNotPresent", + "name": "bootstrap-controller", + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsNonRoot": true, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/lib/postgresql/data", + "name": "pgdata" + }, + { + "mountPath": "/run", + "name": "scratch-data" + }, + { + "mountPath": "/controller", + "name": "scratch-data" + }, + { + "mountPath": "/dev/shm", + "name": "shm" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-578zm", + "readOnly": true + } + ] + } + ], + "nodeName": "ws3", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "linstor-scheduler", + "securityContext": { + "fsGroup": 26, + "runAsGroup": 26, + "runAsNonRoot": true, + "runAsUser": 26, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "postgres-demo-postgres", + "serviceAccountName": "postgres-demo-postgres", + "terminationGracePeriodSeconds": 1800, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "pgdata", + "persistentVolumeClaim": { + "claimName": "postgres-demo-postgres-2" + } + }, + { + "emptyDir": {}, + "name": "scratch-data" + }, + { + "emptyDir": { + "medium": "Memory" + }, + "name": "shm" + }, + { + "name": "kube-api-access-578zm", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:44Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:44Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:56Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:56Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:25Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://699287d49339a170e1d94101cd683972242c7571938a84c97f66bcb58914d7ce", + "image": "ghcr.io/cloudnative-pg/postgresql:18.1", + "imageID": "ghcr.io/cloudnative-pg/postgresql@sha256:cc78f0c280978dd93fa6f49ce6cef60015cf4b56fd0e6a47c8ca49020b875f74", + "lastState": {}, + "name": "postgres", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:53:44Z" + } + }, + "user": { + "linux": { + "gid": 26, + "supplementalGroups": [ + 26, + 101 + ], + "uid": 26 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/lib/postgresql/data", + "name": "pgdata" + }, + { + "mountPath": "/run", + "name": "scratch-data" + }, + { + "mountPath": "/controller", + "name": "scratch-data" + }, + { + "mountPath": "/dev/shm", + "name": "shm" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-578zm", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.4", + "hostIPs": [ + { + "ip": "192.168.100.4" + } + ], + "initContainerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://fe4b87a1b3c93fcb17174500e8445de138db3d837ea6dbb7fcb1f85657189e8e", + "image": "ghcr.io/cloudnative-pg/cloudnative-pg:1.28.2", + "imageID": "ghcr.io/cloudnative-pg/cloudnative-pg@sha256:510de37115a75f364e9464e1796352a80c5f4b05a62b5aac5d713e9d7548aa1f", + "lastState": {}, + "name": "bootstrap-controller", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://fe4b87a1b3c93fcb17174500e8445de138db3d837ea6dbb7fcb1f85657189e8e", + "exitCode": 0, + "finishedAt": "2026-08-29T01:53:44Z", + "reason": "Completed", + "startedAt": "2026-08-29T01:53:44Z" + } + }, + "user": { + "linux": { + "gid": 26, + "supplementalGroups": [ + 26 + ], + "uid": 26 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/lib/postgresql/data", + "name": "pgdata" + }, + { + "mountPath": "/run", + "name": "scratch-data" + }, + { + "mountPath": "/controller", + "name": "scratch-data" + }, + { + "mountPath": "/dev/shm", + "name": "shm" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-578zm", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.174", + "podIPs": [ + { + "ip": "10.244.16.174" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:53:25Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.161\"\n ],\n \"mac\": \"7e:a0:d0:3b:fd:05\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for container redis-exporter; ephemeral-storage limit for container redis-exporter", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.161", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "7e:a0:d0:3b:fd:05", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "generateName": "rfr-redis-demo-redis-", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "apps.kubernetes.io/pod-index": "0", + "controller-revision-hash": "rfr-redis-demo-redis-54564b7c8d", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "redisfailovers-role": "master", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis", + "statefulset.kubernetes.io/pod-name": "rfr-redis-demo-redis-0" + }, + "name": "rfr-redis-demo-redis-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "StatefulSet", + "name": "rfr-redis-demo-redis", + "uid": "97e2653c-b83f-4c2c-9cda-f6e87a8acd1f" + } + ], + "resourceVersion": "43951795", + "uid": "6b61ea50-a513-470e-a424-bb3937a57fb3" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchLabels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers-role": "slave", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + } + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + }, + "containers": [ + { + "command": [ + "redis-server", + "/redis/redis.conf" + ], + "env": [ + { + "name": "REDIS_ADDR", + "value": "redis://127.0.0.1:6379" + }, + { + "name": "REDIS_PORT", + "value": "6379" + }, + { + "name": "REDIS_USER", + "value": "default" + }, + { + "name": "REDIS_PASSWORD", + "valueFrom": { + "secretKeyRef": { + "key": "password", + "name": "redis-demo-redis-auth" + } + } + } + ], + "image": "redis:8.4.0", + "imagePullPolicy": "Always", + "lifecycle": { + "preStop": { + "exec": { + "command": [ + "/bin/sh", + "/redis-shutdown/shutdown.sh" + ] + } + } + }, + "livenessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 6379 --user pinger --pass pingpass --no-auth-warning ping | grep PONG" + ] + }, + "failureThreshold": 6, + "initialDelaySeconds": 30, + "periodSeconds": 15, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "redis", + "ports": [ + { + "containerPort": 6379, + "name": "redis", + "protocol": "TCP" + } + ], + "readinessProbe": { + "exec": { + "command": [ + "/bin/sh", + "/redis-readiness/ready.sh" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "redis-config" + }, + { + "mountPath": "/redis-shutdown", + "name": "redis-shutdown-config" + }, + { + "mountPath": "/redis-readiness", + "name": "redis-readiness-config" + }, + { + "mountPath": "/data", + "name": "redisfailover-persistent-data" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-p9m79", + "readOnly": true + } + ] + }, + { + "args": [ + "--web.telemetry-path", + "/metrics" + ], + "env": [ + { + "name": "REDIS_EXPORTER_LOG_FORMAT", + "value": "txt" + }, + { + "name": "REDIS_ALIAS", + "valueFrom": { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.name" + } + } + }, + { + "name": "REDIS_ADDR", + "value": "redis://127.0.0.1:6379" + }, + { + "name": "REDIS_PORT", + "value": "6379" + }, + { + "name": "REDIS_USER", + "value": "default" + }, + { + "name": "REDIS_PASSWORD", + "valueFrom": { + "secretKeyRef": { + "key": "password", + "name": "redis-demo-redis-auth" + } + } + } + ], + "image": "oliver006/redis_exporter:v1.55.0-alpine", + "imagePullPolicy": "Always", + "name": "redis-exporter", + "ports": [ + { + "containerPort": 9121, + "name": "metrics", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "1", + "ephemeral-storage": "2Gi", + "memory": "100Mi" + }, + "requests": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "50Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-p9m79", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "hostname": "rfr-redis-demo-redis-0", + "nodeName": "ws3", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "linstor-scheduler", + "securityContext": { + "fsGroup": 1000, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "subdomain": "rfr-redis-demo-redis", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "redisfailover-persistent-data", + "persistentVolumeClaim": { + "claimName": "redisfailover-persistent-data-rfr-redis-demo-redis-0" + } + }, + { + "configMap": { + "defaultMode": 420, + "name": "rfr-redis-demo-redis" + }, + "name": "redis-config" + }, + { + "configMap": { + "defaultMode": 484, + "name": "rfr-s-redis-demo-redis" + }, + "name": "redis-shutdown-config" + }, + { + "configMap": { + "defaultMode": 484, + "name": "rfr-readiness-redis-demo-redis" + }, + "name": "redis-readiness-config" + }, + { + "name": "kube-api-access-p9m79", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:29Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:11Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:04Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:04Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:11Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://007ec1aaf306ee39d8a996eb9849fa025913ec59ab1aa8a53b236cfd56efc102", + "image": "docker.io/library/redis:8.4.0", + "imageID": "docker.io/library/redis@sha256:c22af04bb576503bf16b3e34a1fd2fd82de0f765afd866d2e380145e0af30d78", + "lastState": {}, + "name": "redis", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:28Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 1000 + } + }, + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "redis-config" + }, + { + "mountPath": "/redis-shutdown", + "name": "redis-shutdown-config" + }, + { + "mountPath": "/redis-readiness", + "name": "redis-readiness-config" + }, + { + "mountPath": "/data", + "name": "redisfailover-persistent-data" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-p9m79", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + }, + { + "allocatedResources": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "50Mi" + }, + "containerID": "containerd://6feb4f00e17020a7c1b4f2560dd41d7c9f93e968b758fcf3afa1fc1eac782a75", + "image": "docker.io/oliver006/redis_exporter:v1.55.0-alpine", + "imageID": "docker.io/oliver006/redis_exporter@sha256:89d612c22490b29a31edde7e4c1f18d13b63c36150bb9ea6d155887fab063723", + "lastState": {}, + "name": "redis-exporter", + "ready": true, + "resources": { + "limits": { + "cpu": "1", + "ephemeral-storage": "2Gi", + "memory": "100Mi" + }, + "requests": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "50Mi" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:29Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 1000 + } + }, + "volumeMounts": [ + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-p9m79", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.4", + "hostIPs": [ + { + "ip": "192.168.100.4" + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.161", + "podIPs": [ + { + "ip": "10.244.16.161" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:52:11Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.163\"\n ],\n \"mac\": \"aa:2b:f8:d9:92:ee\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for init container sentinel-config-copy; ephemeral-storage limit for init container sentinel-config-copy", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.163", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "aa:2b:f8:d9:92:ee", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "generateName": "rfs-redis-demo-redis-55b64b4986-", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "pod-template-hash": "55b64b4986", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfs-redis-demo-redis-55b64b4986-72qb2", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ReplicaSet", + "name": "rfs-redis-demo-redis-55b64b4986", + "uid": "119bdb06-e80b-4754-9cb4-63f126d0be2f" + } + ], + "resourceVersion": "43952474", + "uid": "eccb8836-9d4f-489a-a1cc-7b44d096d707" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchLabels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + } + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + }, + "containers": [ + { + "command": [ + "redis-server", + "/redis/sentinel.conf", + "--sentinel" + ], + "image": "redis:6.2.6-alpine", + "imagePullPolicy": "Always", + "livenessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 26379 ping" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "sentinel", + "ports": [ + { + "containerPort": 26379, + "name": "sentinel", + "protocol": "TCP" + } + ], + "readinessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 26379 sentinel get-master-addr-by-name mymaster | head -n 1 | grep -vq '127.0.0.1'" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-rmtdn", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "initContainers": [ + { + "command": [ + "cp", + "/redis/sentinel.conf", + "/redis-writable/sentinel.conf" + ], + "image": "redis:6.2.6-alpine", + "imagePullPolicy": "Always", + "name": "sentinel-config-copy", + "resources": { + "limits": { + "cpu": "10m", + "ephemeral-storage": "2Gi", + "memory": "32Mi" + }, + "requests": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config" + }, + { + "mountPath": "/redis-writable", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-rmtdn", + "readOnly": true + } + ] + } + ], + "nodeName": "ws3", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 1000, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "rfs-redis-demo-redis" + }, + "name": "sentinel-config" + }, + { + "emptyDir": {}, + "name": "sentinel-config-writable" + }, + { + "name": "kube-api-access-rmtdn", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:20Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:20Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:22Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:22Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:06Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://1d1301cd1e585abb4f8c9eb6ba52300690416089a574d98b61713d7419660ec0", + "image": "docker.io/library/redis:6.2.6-alpine", + "imageID": "docker.io/library/redis@sha256:132337b9d7744ffee4fae83f51de53c3530935ad3ba528b7110f2d805f55cbf5", + "lastState": {}, + "name": "sentinel", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:20Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 1000 + } + }, + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-rmtdn", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.100.4", + "hostIPs": [ + { + "ip": "192.168.100.4" + } + ], + "initContainerStatuses": [ + { + "allocatedResources": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://b962bc42b937e7fd454689388962569f2eebb8e83c96d24740bd7e60e461d909", + "image": "docker.io/library/redis:6.2.6-alpine", + "imageID": "docker.io/library/redis@sha256:132337b9d7744ffee4fae83f51de53c3530935ad3ba528b7110f2d805f55cbf5", + "lastState": {}, + "name": "sentinel-config-copy", + "ready": true, + "resources": { + "limits": { + "cpu": "10m", + "ephemeral-storage": "2Gi", + "memory": "32Mi" + }, + "requests": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://b962bc42b937e7fd454689388962569f2eebb8e83c96d24740bd7e60e461d909", + "exitCode": 0, + "finishedAt": "2026-08-29T01:52:19Z", + "reason": "Completed", + "startedAt": "2026-08-29T01:52:19Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 1000 + } + }, + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config" + }, + { + "mountPath": "/redis-writable", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-rmtdn", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.163", + "podIPs": [ + { + "ip": "10.244.16.163" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:52:06Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.162\"\n ],\n \"mac\": \"8a:a7:a4:06:09:c7\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for init container sentinel-config-copy; ephemeral-storage limit for init container sentinel-config-copy", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.162", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "8a:a7:a4:06:09:c7", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "generateName": "rfs-redis-demo-redis-55b64b4986-", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "pod-template-hash": "55b64b4986", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfs-redis-demo-redis-55b64b4986-7mr9w", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ReplicaSet", + "name": "rfs-redis-demo-redis-55b64b4986", + "uid": "119bdb06-e80b-4754-9cb4-63f126d0be2f" + } + ], + "resourceVersion": "43952357", + "uid": "019e035c-3fb1-4847-832d-f297f08f432e" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchLabels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + } + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + }, + "containers": [ + { + "command": [ + "redis-server", + "/redis/sentinel.conf", + "--sentinel" + ], + "image": "redis:6.2.6-alpine", + "imagePullPolicy": "Always", + "livenessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 26379 ping" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "sentinel", + "ports": [ + { + "containerPort": 26379, + "name": "sentinel", + "protocol": "TCP" + } + ], + "readinessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 26379 sentinel get-master-addr-by-name mymaster | head -n 1 | grep -vq '127.0.0.1'" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-89mqx", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "initContainers": [ + { + "command": [ + "cp", + "/redis/sentinel.conf", + "/redis-writable/sentinel.conf" + ], + "image": "redis:6.2.6-alpine", + "imagePullPolicy": "Always", + "name": "sentinel-config-copy", + "resources": { + "limits": { + "cpu": "10m", + "ephemeral-storage": "2Gi", + "memory": "32Mi" + }, + "requests": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config" + }, + { + "mountPath": "/redis-writable", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-89mqx", + "readOnly": true + } + ] + } + ], + "nodeName": "cloudpool-4e655bd57ef87f15", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 1000, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "rfs-redis-demo-redis" + }, + "name": "sentinel-config" + }, + { + "emptyDir": {}, + "name": "sentinel-config-writable" + }, + { + "name": "kube-api-access-89mqx", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:25Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:25Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:18Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:18Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:06Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://bc504d48af9c3e669a07fd599239f8cbd444224903abbf7a204e059bec986438", + "image": "docker.io/library/redis:6.2.6-alpine", + "imageID": "docker.io/library/redis@sha256:132337b9d7744ffee4fae83f51de53c3530935ad3ba528b7110f2d805f55cbf5", + "lastState": {}, + "name": "sentinel", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:26Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 1000 + } + }, + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-89mqx", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.5", + "hostIPs": [ + { + "ip": "192.168.0.5" + } + ], + "initContainerStatuses": [ + { + "allocatedResources": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://5badec3964fdd320c34d859cffb59f9fdec5634a692fc37064cb0325f2029b7c", + "image": "docker.io/library/redis:6.2.6-alpine", + "imageID": "docker.io/library/redis@sha256:132337b9d7744ffee4fae83f51de53c3530935ad3ba528b7110f2d805f55cbf5", + "lastState": {}, + "name": "sentinel-config-copy", + "ready": true, + "resources": { + "limits": { + "cpu": "10m", + "ephemeral-storage": "2Gi", + "memory": "32Mi" + }, + "requests": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://5badec3964fdd320c34d859cffb59f9fdec5634a692fc37064cb0325f2029b7c", + "exitCode": 0, + "finishedAt": "2026-08-29T01:52:25Z", + "reason": "Completed", + "startedAt": "2026-08-29T01:52:24Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 1000 + } + }, + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config" + }, + { + "mountPath": "/redis-writable", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-89mqx", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.162", + "podIPs": [ + { + "ip": "10.244.16.162" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:52:06Z" + } + }, + { + "apiVersion": "v1", + "kind": "Pod", + "metadata": { + "annotations": { + "k8s.v1.cni.cncf.io/network-status": "[{\n \"name\": \"generic-veth\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.244.16.160\"\n ],\n \"mac\": \"5e:5e:ec:9f:57:bc\",\n \"default\": true,\n \"dns\": {},\n \"gateway\": [\n \"10.244.0.1\"\n ]\n}]", + "kubernetes.io/limit-ranger": "LimitRanger plugin set: ephemeral-storage request for init container sentinel-config-copy; ephemeral-storage limit for init container sentinel-config-copy", + "ovn.kubernetes.io/allocated": "true", + "ovn.kubernetes.io/cidr": "10.244.0.0/16", + "ovn.kubernetes.io/gateway": "10.244.0.1", + "ovn.kubernetes.io/ip_address": "10.244.16.160", + "ovn.kubernetes.io/logical_router": "ovn-cluster", + "ovn.kubernetes.io/logical_switch": "ovn-default", + "ovn.kubernetes.io/mac_address": "5e:5e:ec:9f:57:bc", + "ovn.kubernetes.io/pod_nic_type": "veth-pair", + "ovn.kubernetes.io/port_security": "true", + "ovn.kubernetes.io/routed": "true" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "generateName": "rfs-redis-demo-redis-55b64b4986-", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "pod-template-hash": "55b64b4986", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfs-redis-demo-redis-55b64b4986-pnpmz", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "apps/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ReplicaSet", + "name": "rfs-redis-demo-redis-55b64b4986", + "uid": "119bdb06-e80b-4754-9cb4-63f126d0be2f" + } + ], + "resourceVersion": "43952339", + "uid": "722da8c6-d141-482a-8975-2330f47e7e7e" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchLabels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + } + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + }, + "containers": [ + { + "command": [ + "redis-server", + "/redis/sentinel.conf", + "--sentinel" + ], + "image": "redis:6.2.6-alpine", + "imagePullPolicy": "Always", + "livenessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 26379 ping" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "sentinel", + "ports": [ + { + "containerPort": 26379, + "name": "sentinel", + "protocol": "TCP" + } + ], + "readinessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 26379 sentinel get-master-addr-by-name mymaster | head -n 1 | grep -vq '127.0.0.1'" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-4hnhm", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": true, + "initContainers": [ + { + "command": [ + "cp", + "/redis/sentinel.conf", + "/redis-writable/sentinel.conf" + ], + "image": "redis:6.2.6-alpine", + "imagePullPolicy": "Always", + "name": "sentinel-config-copy", + "resources": { + "limits": { + "cpu": "10m", + "ephemeral-storage": "2Gi", + "memory": "32Mi" + }, + "requests": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config" + }, + { + "mountPath": "/redis-writable", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-4hnhm", + "readOnly": true + } + ] + } + ], + "nodeName": "cloudpool-4cbd33a5a5c37606", + "preemptionPolicy": "PreemptLowerPriority", + "priority": 0, + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 1000, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "serviceAccount": "default", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "rfs-redis-demo-redis" + }, + "name": "sentinel-config" + }, + { + "emptyDir": {}, + "name": "sentinel-config-writable" + }, + { + "name": "kube-api-access-4hnhm", + "projected": { + "defaultMode": 420, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 3607, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + }, + { + "downwardAPI": { + "items": [ + { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.namespace" + }, + "path": "namespace" + } + ] + } + } + ] + } + } + ] + }, + "status": { + "conditions": [ + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:24Z", + "observedGeneration": 1, + "status": "True", + "type": "PodReadyToStartContainers" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:25Z", + "observedGeneration": 1, + "status": "True", + "type": "Initialized" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:17Z", + "observedGeneration": 1, + "status": "True", + "type": "Ready" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:53:17Z", + "observedGeneration": 1, + "status": "True", + "type": "ContainersReady" + }, + { + "lastProbeTime": null, + "lastTransitionTime": "2026-08-29T01:52:06Z", + "observedGeneration": 1, + "status": "True", + "type": "PodScheduled" + } + ], + "containerStatuses": [ + { + "allocatedResources": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + }, + "containerID": "containerd://93d51768cb98331337d688b842e50521b70dd608804e2fcadee71dfb5ca2d3ac", + "image": "docker.io/library/redis:6.2.6-alpine", + "imageID": "docker.io/library/redis@sha256:132337b9d7744ffee4fae83f51de53c3530935ad3ba528b7110f2d805f55cbf5", + "lastState": {}, + "name": "sentinel", + "ready": true, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "restartCount": 0, + "started": true, + "state": { + "running": { + "startedAt": "2026-08-29T01:52:26Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 1000 + } + }, + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-4hnhm", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "hostIP": "192.168.0.6", + "hostIPs": [ + { + "ip": "192.168.0.6" + } + ], + "initContainerStatuses": [ + { + "allocatedResources": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + }, + "containerID": "containerd://5c22aca56414a77b078cade61ccffa31d4a10e62d27978d191042eeadda7f301", + "image": "docker.io/library/redis:6.2.6-alpine", + "imageID": "docker.io/library/redis@sha256:132337b9d7744ffee4fae83f51de53c3530935ad3ba528b7110f2d805f55cbf5", + "lastState": {}, + "name": "sentinel-config-copy", + "ready": true, + "resources": { + "limits": { + "cpu": "10m", + "ephemeral-storage": "2Gi", + "memory": "32Mi" + }, + "requests": { + "cpu": "10m", + "ephemeral-storage": "50Mi", + "memory": "32Mi" + } + }, + "restartCount": 0, + "started": false, + "state": { + "terminated": { + "containerID": "containerd://5c22aca56414a77b078cade61ccffa31d4a10e62d27978d191042eeadda7f301", + "exitCode": 0, + "finishedAt": "2026-08-29T01:52:24Z", + "reason": "Completed", + "startedAt": "2026-08-29T01:52:24Z" + } + }, + "user": { + "linux": { + "gid": 1000, + "supplementalGroups": [ + 1000 + ], + "uid": 1000 + } + }, + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "sentinel-config" + }, + { + "mountPath": "/redis-writable", + "name": "sentinel-config-writable" + }, + { + "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", + "name": "kube-api-access-4hnhm", + "readOnly": true, + "recursiveReadOnly": "Disabled" + } + ] + } + ], + "observedGeneration": 1, + "phase": "Running", + "podIP": "10.244.16.160", + "podIPs": [ + { + "ip": "10.244.16.160" + } + ], + "qosClass": "Burstable", + "startTime": "2026-08-29T01:52:06Z" + } + } + ], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/resourcequotas-all.json b/demo-src/overlay/apps/console/src/demo/fixtures/resourcequotas-all.json new file mode 100644 index 00000000..d051feba --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/resourcequotas-all.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "v1", "kind": "ResourceQuota", "metadata": {"annotations": {"meta.helm.sh/release-name": "tenant-workshop00", "meta.helm.sh/release-namespace": "tenant-root"}, "creationTimestamp": "2026-08-29T01:50:38Z", "labels": {"app.kubernetes.io/managed-by": "Helm", "helm.toolkit.fluxcd.io/name": "tenant-workshop00", "helm.toolkit.fluxcd.io/namespace": "tenant-root"}, "name": "tenant-quota", "namespace": "tenant-workshop00", "resourceVersion": "47216026", "uid": "ab3a4b2f-2729-432d-869a-d2d12bf5ed1d"}, "spec": {"hard": {"limits.cpu": "32", "limits.memory": "64Gi", "requests.cpu": "3200m", "requests.memory": "68719476736"}}, "status": {"hard": {"limits.cpu": "32", "limits.memory": "64Gi", "requests.cpu": "3200m", "requests.memory": "68719476736"}, "used": {"limits.cpu": "6500m", "limits.memory": "3172Mi", "requests.cpu": "610m", "requests.memory": "2871001088"}}}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/resourcequotas.json b/demo-src/overlay/apps/console/src/demo/fixtures/resourcequotas.json new file mode 100644 index 00000000..4aaee78b --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/resourcequotas.json @@ -0,0 +1,51 @@ +{ + "apiVersion": "v1", + "items": [ + { + "apiVersion": "v1", + "kind": "ResourceQuota", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "tenant-workshop00", + "meta.helm.sh/release-namespace": "tenant-root" + }, + "creationTimestamp": "2026-08-29T01:50:38Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "helm.toolkit.fluxcd.io/name": "tenant-workshop00", + "helm.toolkit.fluxcd.io/namespace": "tenant-root" + }, + "name": "tenant-quota", + "namespace": "tenant-workshop00", + "resourceVersion": "47160179", + "uid": "ab3a4b2f-2729-432d-869a-d2d12bf5ed1d" + }, + "spec": { + "hard": { + "limits.cpu": "32", + "limits.memory": "64Gi", + "requests.cpu": "3200m", + "requests.memory": "68719476736" + } + }, + "status": { + "hard": { + "limits.cpu": "32", + "limits.memory": "64Gi", + "requests.cpu": "3200m", + "requests.memory": "68719476736" + }, + "used": { + "limits.cpu": "6500m", + "limits.memory": "3172Mi", + "requests.cpu": "610m", + "requests.memory": "2871001088" + } + } + } + ], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/services.json b/demo-src/overlay/apps/console/src/demo/fixtures/services.json new file mode 100644 index 00000000..5acb781d --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/services.json @@ -0,0 +1,1256 @@ +{ + "apiVersion": "v1", + "items": [ + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"name\":\"app-1-http\",\"namespace\":\"tenant-workshop00\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":80,\"protocol\":\"TCP\",\"targetPort\":8080}],\"selector\":{\"app.kubernetes.io/instance\":\"vm-instance-app-1\",\"app.kubernetes.io/name\":\"vm-instance\"}}}\n" + }, + "creationTimestamp": "2026-08-29T01:52:56Z", + "name": "app-1-http", + "namespace": "tenant-workshop00", + "resourceVersion": "43951324", + "uid": "2f2f8e96-642f-496e-bbcf-93960a369468" + }, + "spec": { + "clusterIP": "10.96.17.211", + "clusterIPs": [ + "10.96.17.211" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "http", + "port": 80, + "protocol": "TCP", + "targetPort": 8080 + } + ], + "selector": { + "app.kubernetes.io/instance": "vm-instance-app-1", + "app.kubernetes.io/name": "vm-instance" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "bucket-demo-bucket-system", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Bucket", + "apps.cozystack.io/application.name": "demo-bucket", + "helm.toolkit.fluxcd.io/name": "bucket-demo-bucket-system", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "bucket-demo-bucket-ui", + "namespace": "tenant-workshop00", + "resourceVersion": "43948330", + "uid": "a57dd960-44fc-4db3-b334-8ea3a4db82ab" + }, + "spec": { + "clusterIP": "10.96.58.80", + "clusterIPs": [ + "10.96.58.80" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "port": 8080, + "protocol": "TCP", + "targetPort": 8080 + } + ], + "selector": { + "app": "bucket-demo-bucket-ui" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-29T02:23:36Z", + "labels": { + "app.kubernetes.io/instance": "clickhouse-demo-clickhouse", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse.altinity.com/Service": "chi", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/object-version": "f072f5cb2d7ee559c950719c6e332b08f23013c9", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "true" + }, + "name": "chendpoint-clickhouse-demo-clickhouse", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseInstallation", + "name": "clickhouse-demo-clickhouse", + "uid": "1c2bc0d2-f3c0-4282-b750-bce4960dce6f" + } + ], + "resourceVersion": "44009498", + "uid": "855e2bc6-808b-4281-81f9-1bee23da5405" + }, + "spec": { + "clusterIP": "10.96.132.32", + "clusterIPs": [ + "10.96.132.32" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "http", + "port": 8123, + "protocol": "TCP", + "targetPort": 8123 + }, + { + "name": "tcp", + "port": 9000, + "protocol": "TCP", + "targetPort": 9000 + } + ], + "selector": { + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/ready": "yes" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "clickhouse.altinity.com/ready": "yes", + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-29T01:52:41Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse.altinity.com/Service": "host", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/object-version": "c18e145724036d53bc9824cd4c927c11f2aad934", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "chi-clickhouse-demo-clickhouse-clickhouse-0-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseInstallation", + "name": "clickhouse-demo-clickhouse", + "uid": "1c2bc0d2-f3c0-4282-b750-bce4960dce6f" + } + ], + "resourceVersion": "43951076", + "uid": "3df5dce4-b3fa-45ac-a637-241d16ce6880" + }, + "spec": { + "clusterIP": "None", + "clusterIPs": [ + "None" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "tcp", + "port": 9000, + "protocol": "TCP", + "targetPort": 9000 + }, + { + "name": "http", + "port": 8123, + "protocol": "TCP", + "targetPort": 8123 + }, + { + "name": "interserver", + "port": 9009, + "protocol": "TCP", + "targetPort": 9009 + } + ], + "publishNotReadyAddresses": true, + "selector": { + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:52:37Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse-keeper.altinity.com/Service": "host", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "1d159ae7dea27eb80055ead627ae9700c0e1c42e", + "clickhouse-keeper.altinity.com/replica": "0", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse-keeper.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseKeeperInstallation", + "name": "clickhouse-demo-clickhouse-keeper", + "uid": "d56221c2-889d-40f9-b697-2b60b935c5f5" + } + ], + "resourceVersion": "43950347", + "uid": "365b9712-889c-424f-9772-52c5507d0746" + }, + "spec": { + "clusterIP": "None", + "clusterIPs": [ + "None" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "zk", + "port": 2181, + "protocol": "TCP", + "targetPort": 2181 + }, + { + "name": "raft", + "port": 9444, + "protocol": "TCP", + "targetPort": 9444 + } + ], + "publishNotReadyAddresses": true, + "selector": { + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "0", + "clickhouse-keeper.altinity.com/shard": "0" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:53:04Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse-keeper.altinity.com/Service": "host", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "563e32fe98093cfbfdfd7025afd75352a748e433", + "clickhouse-keeper.altinity.com/replica": "1", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse-keeper.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseKeeperInstallation", + "name": "clickhouse-demo-clickhouse-keeper", + "uid": "d56221c2-889d-40f9-b697-2b60b935c5f5" + } + ], + "resourceVersion": "43951801", + "uid": "69df28d0-5410-44e2-993f-3033bc7713c7" + }, + "spec": { + "clusterIP": "None", + "clusterIPs": [ + "None" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "zk", + "port": 2181, + "protocol": "TCP", + "targetPort": 2181 + }, + { + "name": "raft", + "port": 9444, + "protocol": "TCP", + "targetPort": 9444 + } + ], + "publishNotReadyAddresses": true, + "selector": { + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "1", + "clickhouse-keeper.altinity.com/shard": "0" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:53:36Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse-keeper.altinity.com/Service": "host", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "ec8fe52ae9492c6cce419555408c6b4b9dfd678a", + "clickhouse-keeper.altinity.com/replica": "2", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse-keeper.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseKeeperInstallation", + "name": "clickhouse-demo-clickhouse-keeper", + "uid": "d56221c2-889d-40f9-b697-2b60b935c5f5" + } + ], + "resourceVersion": "43952952", + "uid": "45e054fa-88f0-4bf8-a3be-52dd3bd466bf" + }, + "spec": { + "clusterIP": "None", + "clusterIPs": [ + "None" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "zk", + "port": 2181, + "protocol": "TCP", + "targetPort": 2181 + }, + { + "name": "raft", + "port": 9444, + "protocol": "TCP", + "targetPort": 9444 + } + ], + "publishNotReadyAddresses": true, + "selector": { + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "2", + "clickhouse-keeper.altinity.com/shard": "0" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:53:04Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "ClickHouse", + "apps.cozystack.io/application.name": "demo-clickhouse", + "clickhouse-keeper.altinity.com/Service": "chk", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "5f31ab2622b5fae86829e0bf1d58807740fb2ebe", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "keeper-clickhouse-demo-clickhouse-keeper", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse-keeper.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseKeeperInstallation", + "name": "clickhouse-demo-clickhouse-keeper", + "uid": "d56221c2-889d-40f9-b697-2b60b935c5f5" + } + ], + "resourceVersion": "43951791", + "uid": "435d7242-dd1c-470b-ac73-14be7ad0f340" + }, + "spec": { + "clusterIP": "None", + "clusterIPs": [ + "None" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "zk", + "port": 2181, + "protocol": "TCP", + "targetPort": "zk" + }, + { + "name": "raft", + "port": 9444, + "protocol": "TCP", + "targetPort": "raft" + } + ], + "selector": { + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/ready": "yes" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "nats-demo-nats-system", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-30T06:23:37Z", + "labels": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "nats", + "app.kubernetes.io/version": "2.11.10", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "NATS", + "apps.cozystack.io/application.name": "demo-nats", + "helm.sh/chart": "nats-1.3.16", + "helm.toolkit.fluxcd.io/name": "nats-demo-nats-system", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "true" + }, + "name": "nats-demo-nats", + "namespace": "tenant-workshop00", + "resourceVersion": "47158913", + "uid": "fddd59fe-d501-45c9-aa59-3de0450fc646" + }, + "spec": { + "clusterIP": "10.96.238.186", + "clusterIPs": [ + "10.96.238.186" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "appProtocol": "tcp", + "name": "nats", + "port": 4222, + "protocol": "TCP", + "targetPort": "nats" + } + ], + "selector": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/name": "nats" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "nats-demo-nats-system", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-30T06:23:37Z", + "labels": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "nats", + "app.kubernetes.io/version": "2.11.10", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "NATS", + "apps.cozystack.io/application.name": "demo-nats", + "helm.sh/chart": "nats-1.3.16", + "helm.toolkit.fluxcd.io/name": "nats-demo-nats-system", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "nats-demo-nats-headless", + "namespace": "tenant-workshop00", + "resourceVersion": "47158908", + "uid": "1c49fa1e-f9f4-4f95-83ec-e8dbd4f1627e" + }, + "spec": { + "clusterIP": "None", + "clusterIPs": [ + "None" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "appProtocol": "tcp", + "name": "nats", + "port": 4222, + "protocol": "TCP", + "targetPort": "nats" + }, + { + "appProtocol": "tcp", + "name": "cluster", + "port": 6222, + "protocol": "TCP", + "targetPort": "cluster" + }, + { + "appProtocol": "http", + "name": "monitor", + "port": 8222, + "protocol": "TCP", + "targetPort": "monitor" + } + ], + "publishNotReadyAddresses": true, + "selector": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/name": "nats" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "cnpg.io/lastAppliedSpec": "{\"ports\":[{\"name\":\"postgres\",\"protocol\":\"TCP\",\"port\":5432,\"targetPort\":5432}],\"selector\":{\"cnpg.io/cluster\":\"postgres-demo-postgres\",\"cnpg.io/podRole\":\"instance\"},\"type\":\"ClusterIP\"}", + "cnpg.io/operatorVersion": "1.28.2" + }, + "creationTimestamp": "2026-08-29T01:52:05Z", + "labels": { + "app.kubernetes.io/component": "database", + "app.kubernetes.io/instance": "postgres-demo-postgres", + "app.kubernetes.io/managed-by": "cloudnative-pg", + "app.kubernetes.io/name": "postgres.apps.cozystack.io", + "app.kubernetes.io/version": "18", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Postgres", + "apps.cozystack.io/application.name": "demo-postgres", + "cnpg.io/cluster": "postgres-demo-postgres", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "true", + "policy.cozystack.io/allow-to-apiserver": "true" + }, + "name": "postgres-demo-postgres-r", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "postgresql.cnpg.io/v1", + "controller": true, + "kind": "Cluster", + "name": "postgres-demo-postgres", + "uid": "2f40d223-adab-4bc8-bbfc-28573efa5ce6" + } + ], + "resourceVersion": "43948014", + "uid": "1b2b1501-5129-4cf5-b98f-af83cc80195f" + }, + "spec": { + "clusterIP": "10.96.107.105", + "clusterIPs": [ + "10.96.107.105" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "postgres", + "port": 5432, + "protocol": "TCP", + "targetPort": 5432 + } + ], + "selector": { + "cnpg.io/cluster": "postgres-demo-postgres", + "cnpg.io/podRole": "instance" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "cnpg.io/lastAppliedSpec": "{\"ports\":[{\"name\":\"postgres\",\"protocol\":\"TCP\",\"port\":5432,\"targetPort\":5432}],\"selector\":{\"cnpg.io/cluster\":\"postgres-demo-postgres\",\"cnpg.io/instanceRole\":\"replica\"},\"type\":\"ClusterIP\"}", + "cnpg.io/operatorVersion": "1.28.2" + }, + "creationTimestamp": "2026-08-29T01:52:05Z", + "labels": { + "app.kubernetes.io/component": "database", + "app.kubernetes.io/instance": "postgres-demo-postgres", + "app.kubernetes.io/managed-by": "cloudnative-pg", + "app.kubernetes.io/name": "postgres.apps.cozystack.io", + "app.kubernetes.io/version": "18", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Postgres", + "apps.cozystack.io/application.name": "demo-postgres", + "cnpg.io/cluster": "postgres-demo-postgres", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "true", + "policy.cozystack.io/allow-to-apiserver": "true" + }, + "name": "postgres-demo-postgres-ro", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "postgresql.cnpg.io/v1", + "controller": true, + "kind": "Cluster", + "name": "postgres-demo-postgres", + "uid": "2f40d223-adab-4bc8-bbfc-28573efa5ce6" + } + ], + "resourceVersion": "43948019", + "uid": "eb5a1e81-2791-4402-8902-52036e03e804" + }, + "spec": { + "clusterIP": "10.96.250.26", + "clusterIPs": [ + "10.96.250.26" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "postgres", + "port": 5432, + "protocol": "TCP", + "targetPort": 5432 + } + ], + "selector": { + "cnpg.io/cluster": "postgres-demo-postgres", + "cnpg.io/instanceRole": "replica" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "cnpg.io/lastAppliedSpec": "{\"ports\":[{\"name\":\"postgres\",\"protocol\":\"TCP\",\"port\":5432,\"targetPort\":5432}],\"selector\":{\"cnpg.io/cluster\":\"postgres-demo-postgres\",\"cnpg.io/instanceRole\":\"primary\"},\"type\":\"ClusterIP\"}", + "cnpg.io/operatorVersion": "1.28.2" + }, + "creationTimestamp": "2026-08-29T01:52:05Z", + "labels": { + "app.kubernetes.io/component": "database", + "app.kubernetes.io/instance": "postgres-demo-postgres", + "app.kubernetes.io/managed-by": "cloudnative-pg", + "app.kubernetes.io/name": "postgres.apps.cozystack.io", + "app.kubernetes.io/version": "18", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Postgres", + "apps.cozystack.io/application.name": "demo-postgres", + "cnpg.io/cluster": "postgres-demo-postgres", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "true", + "policy.cozystack.io/allow-to-apiserver": "true" + }, + "name": "postgres-demo-postgres-rw", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "postgresql.cnpg.io/v1", + "controller": true, + "kind": "Cluster", + "name": "postgres-demo-postgres", + "uid": "2f40d223-adab-4bc8-bbfc-28573efa5ce6" + } + ], + "resourceVersion": "43948025", + "uid": "411ba4b8-a51a-41b2-bbdf-c7a00f53de9b" + }, + "spec": { + "clusterIP": "10.96.154.42", + "clusterIPs": [ + "10.96.154.42" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "postgres", + "port": 5432, + "protocol": "TCP", + "targetPort": 5432 + } + ], + "selector": { + "cnpg.io/cluster": "postgres-demo-postgres", + "cnpg.io/instanceRole": "primary" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "redis-demo-redis", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-29T01:52:05Z", + "labels": { + "app": "redis-demo-redis-metrics", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false" + }, + "name": "redis-demo-redis-metrics", + "namespace": "tenant-workshop00", + "resourceVersion": "43948116", + "uid": "5cd485cc-7586-4e61-b544-5bfa3d432e66" + }, + "spec": { + "clusterIP": "10.96.33.84", + "clusterIPs": [ + "10.96.33.84" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "metrics", + "port": 9121, + "protocol": "TCP", + "targetPort": "metrics" + } + ], + "selector": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "prometheus.io/path": "/metrics", + "prometheus.io/port": "http", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:52:05Z", + "labels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "false", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfr-redis-demo-redis", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "databases.spotahome.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "RedisFailover", + "name": "redis-demo-redis", + "uid": "2d06e18d-9d48-4bbe-9d5a-8384411b4d0a" + } + ], + "resourceVersion": "43948148", + "uid": "cbcfb8ac-98d7-4dfd-8629-46fe499aab87" + }, + "spec": { + "clusterIP": "None", + "clusterIPs": [ + "None" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "http-metrics", + "port": 9121, + "protocol": "TCP", + "targetPort": 9121 + } + ], + "selector": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "creationTimestamp": "2026-08-29T01:52:06Z", + "labels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "true", + "redisfailovers-role": "master", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfrm-redis-demo-redis", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "databases.spotahome.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "RedisFailover", + "name": "redis-demo-redis", + "uid": "2d06e18d-9d48-4bbe-9d5a-8384411b4d0a" + } + ], + "resourceVersion": "43948194", + "uid": "37f2ca85-9bd2-4768-bace-e8ba8cd44664" + }, + "spec": { + "clusterIP": "10.96.143.50", + "clusterIPs": [ + "10.96.143.50" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "redis", + "port": 6379, + "protocol": "TCP", + "targetPort": "redis" + } + ], + "selector": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "redisfailovers-role": "master" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "creationTimestamp": "2026-08-29T01:52:06Z", + "labels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "true", + "redisfailovers-role": "slave", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfrs-redis-demo-redis", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "databases.spotahome.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "RedisFailover", + "name": "redis-demo-redis", + "uid": "2d06e18d-9d48-4bbe-9d5a-8384411b4d0a" + } + ], + "resourceVersion": "43948203", + "uid": "d87ba9fa-68a1-44c1-b166-52ab44d90027" + }, + "spec": { + "clusterIP": "10.96.68.109", + "clusterIPs": [ + "10.96.68.109" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "redis", + "port": 6379, + "protocol": "TCP", + "targetPort": "redis" + } + ], + "selector": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "redisfailovers-role": "slave" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "creationTimestamp": "2026-08-29T01:52:05Z", + "labels": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "apps.cozystack.io/application.group": "apps.cozystack.io", + "apps.cozystack.io/application.kind": "Redis", + "apps.cozystack.io/application.name": "demo-redis", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "internal.cozystack.io/managed-by-cozystack": "true", + "internal.cozystack.io/tenantresource": "true", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfs-redis-demo-redis", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "databases.spotahome.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "RedisFailover", + "name": "redis-demo-redis", + "uid": "2d06e18d-9d48-4bbe-9d5a-8384411b4d0a" + } + ], + "resourceVersion": "43948170", + "uid": "b3ab58b3-a795-4b3b-859a-b327fab15384" + }, + "spec": { + "clusterIP": "10.96.255.52", + "clusterIPs": [ + "10.96.255.52" + ], + "internalTrafficPolicy": "Cluster", + "ipFamilies": [ + "IPv4" + ], + "ipFamilyPolicy": "SingleStack", + "ports": [ + { + "name": "sentinel", + "port": 26379, + "protocol": "TCP", + "targetPort": 26379 + } + ], + "selector": { + "app.kubernetes.io/component": "sentinel", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover" + }, + "sessionAffinity": "None", + "type": "ClusterIP" + }, + "status": { + "loadBalancer": {} + } + } + ], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/statefulsets.json b/demo-src/overlay/apps/console/src/demo/fixtures/statefulsets.json new file mode 100644 index 00000000..21395713 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/statefulsets.json @@ -0,0 +1,1801 @@ +{ + "apiVersion": "v1", + "items": [ + { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-29T01:52:09Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/object-version": "c666b65219d1a6379bd15c3b2fe66b75f1e221a0", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "chi-clickhouse-demo-clickhouse-clickhouse-0-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseInstallation", + "name": "clickhouse-demo-clickhouse", + "uid": "1c2bc0d2-f3c0-4282-b750-bce4960dce6f" + } + ], + "resourceVersion": "43950482", + "uid": "d619e8e2-79a2-4154-beab-597b30e64a81" + }, + "spec": { + "persistentVolumeClaimRetentionPolicy": { + "whenDeleted": "Retain", + "whenScaled": "Retain" + }, + "podManagementPolicy": "OrderedReady", + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0" + } + }, + "serviceName": "chi-clickhouse-demo-clickhouse-clickhouse-0-0", + "template": { + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "labels": { + "app.kubernetes.io/instance": "clickhouse-demo-clickhouse", + "app.kubernetes.io/managed-by": "Helm", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/ready": "yes", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "clickhouse-per-host" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": [ + { + "labelSelector": { + "matchExpressions": [ + { + "key": "clickhouse.altinity.com/chi", + "operator": "In", + "values": [ + "clickhouse-demo-clickhouse" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + } + ] + } + }, + "containers": [ + { + "env": [ + { + "name": "CLICKHOUSE_SKIP_USER_SETUP", + "value": "1" + } + ], + "image": "clickhouse/clickhouse-server:24.9.2.42", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "failureThreshold": 10, + "httpGet": { + "path": "/ping", + "port": "http", + "scheme": "HTTP" + }, + "initialDelaySeconds": 60, + "periodSeconds": 3, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "name": "clickhouse", + "ports": [ + { + "containerPort": 9000, + "name": "tcp", + "protocol": "TCP" + }, + { + "containerPort": 8123, + "name": "http", + "protocol": "TCP" + }, + { + "containerPort": 9009, + "name": "interserver", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/ping", + "port": "http", + "scheme": "HTTP" + }, + "initialDelaySeconds": 10, + "periodSeconds": 3, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "resources": { + "limits": { + "cpu": "1", + "ephemeral-storage": "2Gi", + "memory": "512Mi" + }, + "requests": { + "cpu": "100m", + "ephemeral-storage": "53687091", + "memory": "536870912" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/lib/clickhouse", + "name": "data-volume-template" + }, + { + "mountPath": "/var/log/clickhouse-server", + "name": "log-volume-template" + }, + { + "mountPath": "/etc/clickhouse-server/config.d/", + "name": "chi-clickhouse-demo-clickhouse-common-configd" + }, + { + "mountPath": "/etc/clickhouse-server/users.d/", + "name": "chi-clickhouse-demo-clickhouse-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-server/conf.d/", + "name": "chi-clickhouse-demo-clickhouse-deploy-confd-clickhouse-0-0" + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "hostAliases": [ + { + "hostnames": [ + "chi-clickhouse-demo-clickhouse-clickhouse-0-0" + ], + "ip": "127.0.0.1" + } + ], + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": {}, + "terminationGracePeriodSeconds": 30, + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "chi-clickhouse-demo-clickhouse-common-configd" + }, + "name": "chi-clickhouse-demo-clickhouse-common-configd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chi-clickhouse-demo-clickhouse-common-usersd" + }, + "name": "chi-clickhouse-demo-clickhouse-common-usersd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chi-clickhouse-demo-clickhouse-deploy-confd-clickhouse-0-0" + }, + "name": "chi-clickhouse-demo-clickhouse-deploy-confd-clickhouse-0-0" + } + ] + } + }, + "updateStrategy": { + "type": "RollingUpdate" + }, + "volumeClaimTemplates": [ + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "data-volume-template" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + }, + "volumeMode": "Filesystem" + }, + "status": { + "phase": "Pending" + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse.altinity.com/app": "chop", + "clickhouse.altinity.com/chi": "clickhouse-demo-clickhouse", + "clickhouse.altinity.com/cluster": "clickhouse", + "clickhouse.altinity.com/namespace": "tenant-workshop00", + "clickhouse.altinity.com/replica": "0", + "clickhouse.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "log-volume-template" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + }, + "volumeMode": "Filesystem" + }, + "status": { + "phase": "Pending" + } + } + ] + }, + "status": { + "availableReplicas": 1, + "collisionCount": 0, + "currentReplicas": 1, + "currentRevision": "chi-clickhouse-demo-clickhouse-clickhouse-0-0-9b9c86458", + "observedGeneration": 1, + "readyReplicas": 1, + "replicas": 1, + "updateRevision": "chi-clickhouse-demo-clickhouse-clickhouse-0-0-9b9c86458", + "updatedReplicas": 1 + } + }, + { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:52:37Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "6335b86a52d132e0da89bf3866ff683c1857a865", + "clickhouse-keeper.altinity.com/replica": "0", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse-keeper.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseKeeperInstallation", + "name": "clickhouse-demo-clickhouse-keeper", + "uid": "d56221c2-889d-40f9-b697-2b60b935c5f5" + } + ], + "resourceVersion": "43951307", + "uid": "51aee869-46ef-4227-9426-079509eb2230" + }, + "spec": { + "persistentVolumeClaimRetentionPolicy": { + "whenDeleted": "Retain", + "whenScaled": "Retain" + }, + "podManagementPolicy": "OrderedReady", + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "0", + "clickhouse-keeper.altinity.com/shard": "0" + } + }, + "serviceName": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0", + "template": { + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app": "clickhouse-demo-clickhouse-keeper", + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/ready": "yes", + "clickhouse-keeper.altinity.com/replica": "0", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "default" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": [ + { + "labelSelector": { + "matchExpressions": [ + { + "key": "app", + "operator": "In", + "values": [ + "clickhouse-demo-clickhouse-keeper" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + } + ] + } + }, + "containers": [ + { + "env": [ + { + "name": "CLICKHOUSE_DATA_DIR", + "value": "/var/lib/clickhouse-keeper" + } + ], + "image": "clickhouse/clickhouse-keeper:24.9.2.42", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "exec": { + "command": [ + "bash", + "-xc", + "date \u0026\u0026 OK=$(exec 3\u003c\u003e/dev/tcp/127.0.0.1/2181; printf 'ruok' \u003e\u00263; IFS=; tee \u003c\u00263; exec 3\u003c\u0026-;);if [[ \"${OK}\" == \"imok\" ]]; then exit 0; else exit 1; fi" + ] + }, + "failureThreshold": 12, + "initialDelaySeconds": 5, + "periodSeconds": 5, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "name": "clickhouse-keeper", + "ports": [ + { + "containerPort": 2181, + "name": "zk", + "protocol": "TCP" + }, + { + "containerPort": 9444, + "name": "raft", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-0" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "hostAliases": [ + { + "hostnames": [ + "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0" + ], + "ip": "127.0.0.1" + } + ], + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 101 + }, + "terminationGracePeriodSeconds": 30, + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-0" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-0" + } + ] + } + }, + "updateStrategy": { + "type": "RollingUpdate" + }, + "volumeClaimTemplates": [ + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "0", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "default" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "volumeMode": "Filesystem" + }, + "status": { + "phase": "Pending" + } + } + ] + }, + "status": { + "availableReplicas": 1, + "collisionCount": 0, + "currentReplicas": 1, + "currentRevision": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-77f7fb584f", + "observedGeneration": 1, + "readyReplicas": 1, + "replicas": 1, + "updateRevision": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-0-77f7fb584f", + "updatedReplicas": 1 + } + }, + { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:53:04Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "31d4d8053e0cb2505d47f6bb46111239c09401f2", + "clickhouse-keeper.altinity.com/replica": "1", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse-keeper.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseKeeperInstallation", + "name": "clickhouse-demo-clickhouse-keeper", + "uid": "d56221c2-889d-40f9-b697-2b60b935c5f5" + } + ], + "resourceVersion": "43952661", + "uid": "6dae3b49-34df-4c9d-b3bc-fc6d00a360e1" + }, + "spec": { + "persistentVolumeClaimRetentionPolicy": { + "whenDeleted": "Retain", + "whenScaled": "Retain" + }, + "podManagementPolicy": "OrderedReady", + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "1", + "clickhouse-keeper.altinity.com/shard": "0" + } + }, + "serviceName": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1", + "template": { + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app": "clickhouse-demo-clickhouse-keeper", + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/ready": "yes", + "clickhouse-keeper.altinity.com/replica": "1", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "default" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": [ + { + "labelSelector": { + "matchExpressions": [ + { + "key": "app", + "operator": "In", + "values": [ + "clickhouse-demo-clickhouse-keeper" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + } + ] + } + }, + "containers": [ + { + "env": [ + { + "name": "CLICKHOUSE_DATA_DIR", + "value": "/var/lib/clickhouse-keeper" + } + ], + "image": "clickhouse/clickhouse-keeper:24.9.2.42", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "exec": { + "command": [ + "bash", + "-xc", + "date \u0026\u0026 OK=$(exec 3\u003c\u003e/dev/tcp/127.0.0.1/2181; printf 'ruok' \u003e\u00263; IFS=; tee \u003c\u00263; exec 3\u003c\u0026-;);if [[ \"${OK}\" == \"imok\" ]]; then exit 0; else exit 1; fi" + ] + }, + "failureThreshold": 12, + "initialDelaySeconds": 5, + "periodSeconds": 5, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "name": "clickhouse-keeper", + "ports": [ + { + "containerPort": 2181, + "name": "zk", + "protocol": "TCP" + }, + { + "containerPort": 9444, + "name": "raft", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-1" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "hostAliases": [ + { + "hostnames": [ + "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1" + ], + "ip": "127.0.0.1" + } + ], + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 101 + }, + "terminationGracePeriodSeconds": 30, + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-1" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-1" + } + ] + } + }, + "updateStrategy": { + "type": "RollingUpdate" + }, + "volumeClaimTemplates": [ + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "1", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "default" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "volumeMode": "Filesystem" + }, + "status": { + "phase": "Pending" + } + } + ] + }, + "status": { + "availableReplicas": 1, + "collisionCount": 0, + "currentReplicas": 1, + "currentRevision": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-c4486dc88", + "observedGeneration": 1, + "readyReplicas": 1, + "replicas": 1, + "updateRevision": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-1-c4486dc88", + "updatedReplicas": 1 + } + }, + { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "creationTimestamp": "2026-08-29T01:53:36Z", + "generation": 1, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/object-version": "47552a8719830d3307a5044f94baa6b8f1098b52", + "clickhouse-keeper.altinity.com/replica": "2", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "clickhouse-keeper.altinity.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "ClickHouseKeeperInstallation", + "name": "clickhouse-demo-clickhouse-keeper", + "uid": "d56221c2-889d-40f9-b697-2b60b935c5f5" + } + ], + "resourceVersion": "43953597", + "uid": "aa42ec25-5cfa-40f6-a983-b823a7fbdf71" + }, + "spec": { + "persistentVolumeClaimRetentionPolicy": { + "whenDeleted": "Retain", + "whenScaled": "Retain" + }, + "podManagementPolicy": "OrderedReady", + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "2", + "clickhouse-keeper.altinity.com/shard": "0" + } + }, + "serviceName": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2", + "template": { + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app": "clickhouse-demo-clickhouse-keeper", + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/ready": "yes", + "clickhouse-keeper.altinity.com/replica": "2", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "default" + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": [ + { + "labelSelector": { + "matchExpressions": [ + { + "key": "app", + "operator": "In", + "values": [ + "clickhouse-demo-clickhouse-keeper" + ] + } + ] + }, + "topologyKey": "kubernetes.io/hostname" + } + ] + } + }, + "containers": [ + { + "env": [ + { + "name": "CLICKHOUSE_DATA_DIR", + "value": "/var/lib/clickhouse-keeper" + } + ], + "image": "clickhouse/clickhouse-keeper:24.9.2.42", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "exec": { + "command": [ + "bash", + "-xc", + "date \u0026\u0026 OK=$(exec 3\u003c\u003e/dev/tcp/127.0.0.1/2181; printf 'ruok' \u003e\u00263; IFS=; tee \u003c\u00263; exec 3\u003c\u0026-;);if [[ \"${OK}\" == \"imok\" ]]; then exit 0; else exit 1; fi" + ] + }, + "failureThreshold": 12, + "initialDelaySeconds": 5, + "periodSeconds": 5, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "name": "clickhouse-keeper", + "ports": [ + { + "containerPort": 2181, + "name": "zk", + "protocol": "TCP" + }, + { + "containerPort": 9444, + "name": "raft", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "500m", + "ephemeral-storage": "2Gi", + "memory": "256Mi" + }, + "requests": { + "cpu": "50m", + "ephemeral-storage": "53687091", + "memory": "268435456" + } + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/clickhouse-keeper/keeper_config.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "mountPath": "/etc/clickhouse-keeper/users.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "mountPath": "/etc/clickhouse-keeper/conf.d/", + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-2" + }, + { + "mountPath": "/var/lib/clickhouse-keeper", + "name": "default" + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "hostAliases": [ + { + "hostnames": [ + "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2" + ], + "ip": "127.0.0.1" + } + ], + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 101 + }, + "terminationGracePeriodSeconds": 30, + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-configd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-common-usersd" + }, + { + "configMap": { + "defaultMode": 420, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-2" + }, + "name": "chk-clickhouse-demo-clickhouse-keeper-deploy-confd-cluster1-0-2" + } + ] + } + }, + "updateStrategy": { + "type": "RollingUpdate" + }, + "volumeClaimTemplates": [ + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "clickhouse-demo-clickhouse", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "prometheus.io/port": "7000", + "prometheus.io/scrape": "true" + }, + "labels": { + "app.kubernetes.io/managed-by": "Helm", + "clickhouse-keeper.altinity.com/app": "chop", + "clickhouse-keeper.altinity.com/chk": "clickhouse-demo-clickhouse-keeper", + "clickhouse-keeper.altinity.com/cluster": "cluster1", + "clickhouse-keeper.altinity.com/namespace": "tenant-workshop00", + "clickhouse-keeper.altinity.com/replica": "2", + "clickhouse-keeper.altinity.com/shard": "0", + "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "default" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "volumeMode": "Filesystem" + }, + "status": { + "phase": "Pending" + } + } + ] + }, + "status": { + "availableReplicas": 1, + "collisionCount": 0, + "currentReplicas": 1, + "currentRevision": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-77cd98b47", + "observedGeneration": 1, + "readyReplicas": 1, + "replicas": 1, + "updateRevision": "chk-clickhouse-demo-clickhouse-keeper-cluster1-0-2-77cd98b47", + "updatedReplicas": 1 + } + }, + { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "nats-demo-nats-system", + "meta.helm.sh/release-namespace": "tenant-workshop00" + }, + "creationTimestamp": "2026-08-30T06:23:37Z", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "nats", + "app.kubernetes.io/version": "2.11.10", + "helm.sh/chart": "nats-1.3.16", + "helm.toolkit.fluxcd.io/name": "nats-demo-nats-system", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00" + }, + "name": "nats-demo-nats", + "namespace": "tenant-workshop00", + "resourceVersion": "47158965", + "uid": "0f3d6b47-2933-4356-afda-7dcdd2ad8dcb" + }, + "spec": { + "persistentVolumeClaimRetentionPolicy": { + "whenDeleted": "Delete", + "whenScaled": "Delete" + }, + "podManagementPolicy": "Parallel", + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/name": "nats" + } + }, + "serviceName": "nats-demo-nats-headless", + "template": { + "metadata": { + "annotations": { + "checksum/config": "e5444580c919938dcc8ecf942a2e0171dd51dd54c3df5862c620ee8defea12e7" + }, + "labels": { + "app.kubernetes.io/component": "nats", + "app.kubernetes.io/instance": "nats-demo-nats-system", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "nats", + "app.kubernetes.io/version": "2.11.10", + "helm.sh/chart": "nats-1.3.16" + } + }, + "spec": { + "containers": [ + { + "args": [ + "--config", + "/etc/nats-config/nats.conf" + ], + "env": [ + { + "name": "POD_NAME", + "valueFrom": { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.name" + } + } + }, + { + "name": "SERVER_NAME", + "value": "$(POD_NAME)" + } + ], + "image": "nats:2.11.10-alpine", + "imagePullPolicy": "IfNotPresent", + "lifecycle": { + "preStop": { + "exec": { + "command": [ + "nats-server", + "-sl=ldm=/var/run/nats/nats.pid" + ] + } + } + }, + "livenessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz?js-enabled-only=true", + "port": "monitor", + "scheme": "HTTP" + }, + "initialDelaySeconds": 10, + "periodSeconds": 30, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "nats", + "ports": [ + { + "containerPort": 4222, + "name": "nats", + "protocol": "TCP" + }, + { + "containerPort": 6222, + "name": "cluster", + "protocol": "TCP" + }, + { + "containerPort": 8222, + "name": "monitor", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz?js-server-only=true", + "port": "monitor", + "scheme": "HTTP" + }, + "initialDelaySeconds": 10, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "startupProbe": { + "failureThreshold": 90, + "httpGet": { + "path": "/healthz", + "port": "monitor", + "scheme": "HTTP" + }, + "initialDelaySeconds": 10, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/etc/nats-config", + "name": "config" + }, + { + "mountPath": "/var/run/nats", + "name": "pid" + }, + { + "mountPath": "/data", + "name": "nats-demo-nats-js" + } + ] + }, + { + "args": [ + "-pid", + "/var/run/nats/nats.pid", + "-config", + "/etc/nats-config/nats.conf" + ], + "image": "natsio/nats-server-config-reloader:0.20.1", + "imagePullPolicy": "IfNotPresent", + "name": "reloader", + "resources": {}, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/var/run/nats", + "name": "pid" + }, + { + "mountPath": "/etc/nats-config", + "name": "config" + } + ] + }, + { + "args": [ + "-port=7777", + "-connz", + "-routez", + "-subz", + "-varz", + "-prefix=nats", + "-use_internal_server_id", + "-jsz=all", + "http://localhost:8222/" + ], + "image": "natsio/prometheus-nats-exporter:0.17.3", + "imagePullPolicy": "IfNotPresent", + "name": "prom-exporter", + "ports": [ + { + "containerPort": 7777, + "name": "prom-metrics", + "protocol": "TCP" + } + ], + "resources": {}, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File" + } + ], + "dnsPolicy": "ClusterFirst", + "enableServiceLinks": false, + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": {}, + "shareProcessNamespace": true, + "terminationGracePeriodSeconds": 60, + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "nats-demo-nats-config" + }, + "name": "config" + }, + { + "emptyDir": {}, + "name": "pid" + } + ] + } + }, + "updateStrategy": { + "rollingUpdate": { + "partition": 0 + }, + "type": "RollingUpdate" + }, + "volumeClaimTemplates": [ + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "nats-demo-nats-js" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "10Gi" + } + }, + "storageClassName": "replicated", + "volumeMode": "Filesystem" + }, + "status": { + "phase": "Pending" + } + } + ] + }, + "status": { + "availableReplicas": 0, + "collisionCount": 0, + "currentReplicas": 1, + "currentRevision": "nats-demo-nats-55db96f9d4", + "observedGeneration": 1, + "replicas": 1, + "updateRevision": "nats-demo-nats-55db96f9d4", + "updatedReplicas": 1 + } + }, + { + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "redis-demo-redis", + "meta.helm.sh/release-namespace": "tenant-workshop00", + "storageCapacity": "1073741824" + }, + "creationTimestamp": "2026-08-29T01:52:06Z", + "generation": 1, + "labels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers-role": "slave", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + }, + "name": "rfr-redis-demo-redis", + "namespace": "tenant-workshop00", + "ownerReferences": [ + { + "apiVersion": "databases.spotahome.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "RedisFailover", + "name": "redis-demo-redis", + "uid": "2d06e18d-9d48-4bbe-9d5a-8384411b4d0a" + } + ], + "resourceVersion": "43951804", + "uid": "97e2653c-b83f-4c2c-9cda-f6e87a8acd1f" + }, + "spec": { + "persistentVolumeClaimRetentionPolicy": { + "whenDeleted": "Retain", + "whenScaled": "Retain" + }, + "podManagementPolicy": "Parallel", + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover" + } + }, + "serviceName": "rfr-redis-demo-redis", + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers-role": "slave", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + } + }, + "spec": { + "affinity": { + "podAntiAffinity": { + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "podAffinityTerm": { + "labelSelector": { + "matchLabels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "redis-demo-redis", + "app.kubernetes.io/part-of": "redis-failover", + "helm.toolkit.fluxcd.io/name": "redis-demo-redis", + "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", + "redisfailovers-role": "slave", + "redisfailovers.databases.spotahome.com/name": "redis-demo-redis" + } + }, + "topologyKey": "kubernetes.io/hostname" + }, + "weight": 100 + } + ] + } + }, + "containers": [ + { + "command": [ + "redis-server", + "/redis/redis.conf" + ], + "env": [ + { + "name": "REDIS_ADDR", + "value": "redis://127.0.0.1:6379" + }, + { + "name": "REDIS_PORT", + "value": "6379" + }, + { + "name": "REDIS_USER", + "value": "default" + }, + { + "name": "REDIS_PASSWORD", + "valueFrom": { + "secretKeyRef": { + "key": "password", + "name": "redis-demo-redis-auth" + } + } + } + ], + "image": "redis:8.4.0", + "imagePullPolicy": "Always", + "lifecycle": { + "preStop": { + "exec": { + "command": [ + "/bin/sh", + "/redis-shutdown/shutdown.sh" + ] + } + } + }, + "livenessProbe": { + "exec": { + "command": [ + "sh", + "-c", + "redis-cli -h $(hostname) -p 6379 --user pinger --pass pingpass --no-auth-warning ping | grep PONG" + ] + }, + "failureThreshold": 6, + "initialDelaySeconds": 30, + "periodSeconds": 15, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "name": "redis", + "ports": [ + { + "containerPort": 6379, + "name": "redis", + "protocol": "TCP" + } + ], + "readinessProbe": { + "exec": { + "command": [ + "/bin/sh", + "/redis-readiness/ready.sh" + ] + }, + "failureThreshold": 3, + "initialDelaySeconds": 30, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 5 + }, + "resources": { + "limits": { + "cpu": "250m", + "ephemeral-storage": "2Gi", + "memory": "128Mi" + }, + "requests": { + "cpu": "25m", + "ephemeral-storage": "53687091", + "memory": "134217728" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/redis", + "name": "redis-config" + }, + { + "mountPath": "/redis-shutdown", + "name": "redis-shutdown-config" + }, + { + "mountPath": "/redis-readiness", + "name": "redis-readiness-config" + }, + { + "mountPath": "/data", + "name": "redisfailover-persistent-data" + } + ] + }, + { + "args": [ + "--web.telemetry-path", + "/metrics" + ], + "env": [ + { + "name": "REDIS_EXPORTER_LOG_FORMAT", + "value": "txt" + }, + { + "name": "REDIS_ALIAS", + "valueFrom": { + "fieldRef": { + "apiVersion": "v1", + "fieldPath": "metadata.name" + } + } + }, + { + "name": "REDIS_ADDR", + "value": "redis://127.0.0.1:6379" + }, + { + "name": "REDIS_PORT", + "value": "6379" + }, + { + "name": "REDIS_USER", + "value": "default" + }, + { + "name": "REDIS_PASSWORD", + "valueFrom": { + "secretKeyRef": { + "key": "password", + "name": "redis-demo-redis-auth" + } + } + } + ], + "image": "oliver006/redis_exporter:v1.55.0-alpine", + "imagePullPolicy": "Always", + "name": "redis-exporter", + "ports": [ + { + "containerPort": 9121, + "name": "metrics", + "protocol": "TCP" + } + ], + "resources": { + "limits": { + "cpu": "1", + "memory": "100Mi" + }, + "requests": { + "cpu": "10m", + "memory": "50Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "privileged": false, + "readOnlyRootFilesystem": true, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File" + } + ], + "dnsPolicy": "ClusterFirst", + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 1000, + "runAsGroup": 1000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "terminationGracePeriodSeconds": 30, + "volumes": [ + { + "configMap": { + "defaultMode": 420, + "name": "rfr-redis-demo-redis" + }, + "name": "redis-config" + }, + { + "configMap": { + "defaultMode": 484, + "name": "rfr-s-redis-demo-redis" + }, + "name": "redis-shutdown-config" + }, + { + "configMap": { + "defaultMode": 484, + "name": "rfr-readiness-redis-demo-redis" + }, + "name": "redis-readiness-config" + } + ] + } + }, + "updateStrategy": { + "type": "OnDelete" + }, + "volumeClaimTemplates": [ + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "labels": { + "app.kubernetes.io/component": "redis", + "app.kubernetes.io/instance": "redis-demo-redis" + }, + "name": "redisfailover-persistent-data", + "ownerReferences": [ + { + "apiVersion": "databases.spotahome.com/v1", + "blockOwnerDeletion": true, + "controller": true, + "kind": "RedisFailover", + "name": "redis-demo-redis", + "uid": "2d06e18d-9d48-4bbe-9d5a-8384411b4d0a" + } + ] + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "storageClassName": "replicated", + "volumeMode": "Filesystem" + }, + "status": { + "phase": "Pending" + } + } + ] + }, + "status": { + "availableReplicas": 1, + "collisionCount": 0, + "currentReplicas": 1, + "currentRevision": "rfr-redis-demo-redis-54564b7c8d", + "observedGeneration": 1, + "readyReplicas": 1, + "replicas": 1, + "updateRevision": "rfr-redis-demo-redis-54564b7c8d", + "updatedReplicas": 1 + } + } + ], + "kind": "List", + "metadata": { + "resourceVersion": "" + } +} diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/storageclasses.json b/demo-src/overlay/apps/console/src/demo/fixtures/storageclasses.json new file mode 100644 index 00000000..d65845bd --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/storageclasses.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"allowVolumeExpansion": true, "apiVersion": "storage.k8s.io/v1", "kind": "StorageClass", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"allowVolumeExpansion\":true,\"apiVersion\":\"storage.k8s.io/v1\",\"kind\":\"StorageClass\",\"metadata\":{\"annotations\":{\"storageclass.kubernetes.io/is-default-class\":\"true\"},\"name\":\"local\"},\"parameters\":{\"linstor.csi.linbit.com/allowRemoteVolumeAccess\":\"false\",\"linstor.csi.linbit.com/layerList\":\"storage\",\"linstor.csi.linbit.com/storagePool\":\"data\"},\"provisioner\":\"linstor.csi.linbit.com\",\"volumeBindingMode\":\"WaitForFirstConsumer\"}\n", "storageclass.kubernetes.io/is-default-class": "true"}, "creationTimestamp": "2026-08-12T10:07:00Z", "name": "local", "resourceVersion": "26265", "uid": "ad29b283-a5a8-401c-a8ad-8ac9cf587d13"}, "parameters": {"linstor.csi.linbit.com/allowRemoteVolumeAccess": "false", "linstor.csi.linbit.com/layerList": "storage", "linstor.csi.linbit.com/storagePool": "data"}, "provisioner": "linstor.csi.linbit.com", "reclaimPolicy": "Delete", "volumeBindingMode": "WaitForFirstConsumer"}, {"allowVolumeExpansion": true, "apiVersion": "storage.k8s.io/v1", "kind": "StorageClass", "metadata": {"annotations": {"kubectl.kubernetes.io/last-applied-configuration": "{\"allowVolumeExpansion\":true,\"apiVersion\":\"storage.k8s.io/v1\",\"kind\":\"StorageClass\",\"metadata\":{\"annotations\":{},\"name\":\"replicated\"},\"parameters\":{\"linstor.csi.linbit.com/allowRemoteVolumeAccess\":\"true\",\"linstor.csi.linbit.com/autoPlace\":\"3\",\"linstor.csi.linbit.com/layerList\":\"drbd storage\",\"linstor.csi.linbit.com/storagePool\":\"data\",\"property.linstor.csi.linbit.com/DrbdOptions/Net/rr-conflict\":\"retry-connect\",\"property.linstor.csi.linbit.com/DrbdOptions/Resource/on-no-data-accessible\":\"suspend-io\",\"property.linstor.csi.linbit.com/DrbdOptions/Resource/on-suspended-primary-outdated\":\"force-secondary\",\"property.linstor.csi.linbit.com/DrbdOptions/auto-quorum\":\"suspend-io\"},\"provisioner\":\"linstor.csi.linbit.com\",\"volumeBindingMode\":\"Immediate\"}\n"}, "creationTimestamp": "2026-08-12T10:07:00Z", "name": "replicated", "resourceVersion": "26272", "uid": "151b2402-34fe-481d-a729-df160499e8a1"}, "parameters": {"linstor.csi.linbit.com/allowRemoteVolumeAccess": "true", "linstor.csi.linbit.com/autoPlace": "3", "linstor.csi.linbit.com/layerList": "drbd storage", "linstor.csi.linbit.com/storagePool": "data", "property.linstor.csi.linbit.com/DrbdOptions/Net/rr-conflict": "retry-connect", "property.linstor.csi.linbit.com/DrbdOptions/Resource/on-no-data-accessible": "suspend-io", "property.linstor.csi.linbit.com/DrbdOptions/Resource/on-suspended-primary-outdated": "force-secondary", "property.linstor.csi.linbit.com/DrbdOptions/auto-quorum": "suspend-io"}, "provisioner": "linstor.csi.linbit.com", "reclaimPolicy": "Delete", "volumeBindingMode": "Immediate"}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/tenantmodules-all.json b/demo-src/overlay/apps/console/src/demo/fixtures/tenantmodules-all.json new file mode 100644 index 00000000..0fbd6568 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/tenantmodules-all.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "core.cozystack.io/v1alpha1", "kind": "TenantModule", "metadata": {"annotations": {"meta.helm.sh/release-name": "tenant-workshop00", "meta.helm.sh/release-namespace": "tenant-root"}, "creationTimestamp": "2026-08-29T01:50:38Z", "labels": {"app.kubernetes.io/instance": "tenant-workshop00", "app.kubernetes.io/managed-by": "Helm", "apps.cozystack.io/application.group": "apps.cozystack.io", "apps.cozystack.io/application.kind": "Info", "apps.cozystack.io/application.name": "info", "helm.toolkit.fluxcd.io/name": "tenant-workshop00", "helm.toolkit.fluxcd.io/namespace": "tenant-root", "sharding.fluxcd.io/key": "shard2"}, "name": "info", "namespace": "tenant-workshop00", "resourceVersion": "47220134", "uid": "7105c8d3-4ff0-4eeb-be02-bd192d13bec2"}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T01:50:39Z", "message": "Helm install succeeded for release tenant-workshop00/info.v1 with chart info@0.0.0+19f5895647a2", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T01:50:39Z", "message": "Helm install succeeded for release tenant-workshop00/info.v1 with chart info@0.0.0+19f5895647a2", "reason": "InstallSucceeded", "status": "True", "type": "Released"}], "version": "0.0.0+19f5895647a2"}}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/tenantmodules-ns.json b/demo-src/overlay/apps/console/src/demo/fixtures/tenantmodules-ns.json new file mode 100644 index 00000000..0fbd6568 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/tenantmodules-ns.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "core.cozystack.io/v1alpha1", "kind": "TenantModule", "metadata": {"annotations": {"meta.helm.sh/release-name": "tenant-workshop00", "meta.helm.sh/release-namespace": "tenant-root"}, "creationTimestamp": "2026-08-29T01:50:38Z", "labels": {"app.kubernetes.io/instance": "tenant-workshop00", "app.kubernetes.io/managed-by": "Helm", "apps.cozystack.io/application.group": "apps.cozystack.io", "apps.cozystack.io/application.kind": "Info", "apps.cozystack.io/application.name": "info", "helm.toolkit.fluxcd.io/name": "tenant-workshop00", "helm.toolkit.fluxcd.io/namespace": "tenant-root", "sharding.fluxcd.io/key": "shard2"}, "name": "info", "namespace": "tenant-workshop00", "resourceVersion": "47220134", "uid": "7105c8d3-4ff0-4eeb-be02-bd192d13bec2"}, "status": {"conditions": [{"lastTransitionTime": "2026-08-29T01:50:39Z", "message": "Helm install succeeded for release tenant-workshop00/info.v1 with chart info@0.0.0+19f5895647a2", "reason": "InstallSucceeded", "status": "True", "type": "Ready"}, {"lastTransitionTime": "2026-08-29T01:50:39Z", "message": "Helm install succeeded for release tenant-workshop00/info.v1 with chart info@0.0.0+19f5895647a2", "reason": "InstallSucceeded", "status": "True", "type": "Released"}], "version": "0.0.0+19f5895647a2"}}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/tenantnamespaces.json b/demo-src/overlay/apps/console/src/demo/fixtures/tenantnamespaces.json new file mode 100644 index 00000000..9ffae3cd --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/tenantnamespaces.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "core.cozystack.io/v1alpha1", "kind": "TenantNamespace", "metadata": {"annotations": {"meta.helm.sh/release-name": "tenant-workshop00", "meta.helm.sh/release-namespace": "tenant-root", "ovn.kubernetes.io/cidr": "10.244.0.0/16", "ovn.kubernetes.io/exclude_ips": "10.244.0.1", "ovn.kubernetes.io/logical_switch": "ovn-default"}, "creationTimestamp": "2026-08-29T01:50:38Z", "labels": {"alpha.kubevirt.io/auto-memory-limits-ratio": "1.0", "app.kubernetes.io/managed-by": "Helm", "helm.toolkit.fluxcd.io/name": "tenant-workshop00", "helm.toolkit.fluxcd.io/namespace": "tenant-root", "internal.cozystack.io/flux-shard": "shard2", "kubernetes.io/metadata.name": "tenant-workshop00", "namespace.cozystack.io/etcd": "tenant-root", "namespace.cozystack.io/gateway": "", "namespace.cozystack.io/host": "workshop00.workshop.aenix.io", "namespace.cozystack.io/ingress": "tenant-root", "namespace.cozystack.io/monitoring": "tenant-root", "namespace.cozystack.io/seaweedfs": "tenant-root", "tenant.cozystack.io/tenant-root": "", "tenant.cozystack.io/tenant-workshop00": ""}, "name": "tenant-workshop00", "resourceVersion": "43948056", "uid": "6efe43c1-1733-4ee8-bc58-b48627654971"}}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/fixtures/tenantsecrets.json b/demo-src/overlay/apps/console/src/demo/fixtures/tenantsecrets.json new file mode 100644 index 00000000..a100aa41 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/fixtures/tenantsecrets.json @@ -0,0 +1 @@ +{"apiVersion": "v1", "items": [{"apiVersion": "core.cozystack.io/v1alpha1", "data": {"accessKey": "ZGVtby1hY2Nlc3Mta2V5", "bucketName": "ZGVtby1idWNrZXQ=", "endpoint": "aHR0cHM6Ly9zMy5kZW1vLmNvenlzdGFjay5pbw==", "secretKey": "ZGVtby1zZWNyZXQta2V5LW5vdC1yZWFs"}, "kind": "TenantSecret", "metadata": {"annotations": {"meta.helm.sh/release-name": "bucket-demo-bucket-system", "meta.helm.sh/release-namespace": "tenant-workshop00"}, "creationTimestamp": "2026-08-29T01:52:06Z", "labels": {"app.kubernetes.io/managed-by": "Helm", "apps.cozystack.io/application.group": "apps.cozystack.io", "apps.cozystack.io/application.kind": "Bucket", "apps.cozystack.io/application.name": "demo-bucket", "apps.cozystack.io/user-secret": "true", "helm.toolkit.fluxcd.io/name": "bucket-demo-bucket-system", "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", "internal.cozystack.io/managed-by-cozystack": "true"}, "name": "bucket-demo-bucket-app-credentials", "namespace": "tenant-workshop00", "resourceVersion": "43948320", "uid": "291aac90-2e7a-4b20-a94e-f834ff6d9ae4"}, "type": "Opaque"}, {"apiVersion": "core.cozystack.io/v1alpha1", "data": {"app": "ZGVtby1wYXNzd29yZA==", "backup": "ZGVtby1iYWNrdXAtcGFzc3dvcmQ="}, "kind": "TenantSecret", "metadata": {"annotations": {"meta.helm.sh/release-name": "clickhouse-demo-clickhouse", "meta.helm.sh/release-namespace": "tenant-workshop00"}, "creationTimestamp": "2026-08-29T01:52:05Z", "labels": {"app.kubernetes.io/managed-by": "Helm", "apps.cozystack.io/application.group": "apps.cozystack.io", "apps.cozystack.io/application.kind": "ClickHouse", "apps.cozystack.io/application.name": "demo-clickhouse", "helm.toolkit.fluxcd.io/name": "clickhouse-demo-clickhouse", "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", "internal.cozystack.io/managed-by-cozystack": "true"}, "name": "clickhouse-demo-clickhouse-credentials", "namespace": "tenant-workshop00", "resourceVersion": "44008992", "uid": "c244a423-11f4-4ea5-8946-61f39162f315"}, "type": "Opaque"}, {"apiVersion": "core.cozystack.io/v1alpha1", "data": {"kubeconfig": "IyBkZW1vIGt1YmVjb25maWcg4oCUIG5vdCBhIHJlYWwgY3JlZGVudGlhbAphcGlWZXJzaW9uOiB2MQpraW5kOiBDb25maWcKY2x1c3RlcnM6IFtdCnVzZXJzOiBbXQpjb250ZXh0czogW10K"}, "kind": "TenantSecret", "metadata": {"annotations": {"meta.helm.sh/release-name": "info", "meta.helm.sh/release-namespace": "tenant-workshop00"}, "creationTimestamp": "2026-08-29T01:50:39Z", "labels": {"app.kubernetes.io/managed-by": "Helm", "apps.cozystack.io/application.group": "apps.cozystack.io", "apps.cozystack.io/application.kind": "Info", "apps.cozystack.io/application.name": "info", "helm.toolkit.fluxcd.io/name": "info", "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", "internal.cozystack.io/managed-by-cozystack": "true"}, "name": "kubeconfig-tenant-workshop00", "namespace": "tenant-workshop00", "resourceVersion": "43945257", "uid": "0191c48e-6725-4369-ab2a-835000e0985d"}, "type": "Opaque"}, {"apiVersion": "core.cozystack.io/v1alpha1", "data": {"app": "ZGVtby1wYXNzd29yZA=="}, "kind": "TenantSecret", "metadata": {"annotations": {"meta.helm.sh/release-name": "postgres-demo-postgres", "meta.helm.sh/release-namespace": "tenant-workshop00"}, "creationTimestamp": "2026-08-29T01:52:05Z", "labels": {"app.kubernetes.io/managed-by": "Helm", "apps.cozystack.io/application.group": "apps.cozystack.io", "apps.cozystack.io/application.kind": "Postgres", "apps.cozystack.io/application.name": "demo-postgres", "helm.toolkit.fluxcd.io/name": "postgres-demo-postgres", "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", "internal.cozystack.io/managed-by-cozystack": "true"}, "name": "postgres-demo-postgres-credentials", "namespace": "tenant-workshop00", "resourceVersion": "43947984", "uid": "2d9905ea-c4c1-45b7-9778-38c882f3e36f"}, "type": "Opaque"}, {"apiVersion": "core.cozystack.io/v1alpha1", "data": {"password": "ZGVtby1wYXNzd29yZA=="}, "kind": "TenantSecret", "metadata": {"annotations": {"meta.helm.sh/release-name": "redis-demo-redis", "meta.helm.sh/release-namespace": "tenant-workshop00"}, "creationTimestamp": "2026-08-29T01:52:05Z", "labels": {"app.kubernetes.io/managed-by": "Helm", "apps.cozystack.io/application.group": "apps.cozystack.io", "apps.cozystack.io/application.kind": "Redis", "apps.cozystack.io/application.name": "demo-redis", "helm.toolkit.fluxcd.io/name": "redis-demo-redis", "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", "internal.cozystack.io/managed-by-cozystack": "true"}, "name": "redis-demo-redis-auth", "namespace": "tenant-workshop00", "resourceVersion": "43948097", "uid": "152328b0-fdb1-4c61-adeb-df7f6bf35e7f"}, "type": "Opaque"}, {"apiVersion": "core.cozystack.io/v1alpha1", "data": {"ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCkRFTU8tTk9ULUEtUkVBTC1DRVJUCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "namespace": "dGVuYW50LXdvcmtzaG9wMDA=", "token": "ZGVtby5qd3QudG9rZW4tbm90LXJlYWw="}, "kind": "TenantSecret", "metadata": {"annotations": {"kubernetes.io/service-account.name": "tenant-workshop00", "kubernetes.io/service-account.uid": "66565e30-cd68-4587-a0cc-699c46b94289", "meta.helm.sh/release-name": "info", "meta.helm.sh/release-namespace": "tenant-workshop00"}, "creationTimestamp": "2026-08-29T01:50:39Z", "labels": {"app.kubernetes.io/managed-by": "Helm", "apps.cozystack.io/application.group": "apps.cozystack.io", "apps.cozystack.io/application.kind": "Info", "apps.cozystack.io/application.name": "info", "helm.toolkit.fluxcd.io/name": "info", "helm.toolkit.fluxcd.io/namespace": "tenant-workshop00", "internal.cozystack.io/managed-by-cozystack": "true"}, "name": "tenant-workshop00", "namespace": "tenant-workshop00", "resourceVersion": "43945260", "uid": "70135b0d-a678-4037-8ea2-8ce23b082690"}, "type": "kubernetes.io/service-account-token"}], "kind": "List", "metadata": {"resourceVersion": ""}} \ No newline at end of file diff --git a/demo-src/overlay/apps/console/src/demo/handlers.ts b/demo-src/overlay/apps/console/src/demo/handlers.ts new file mode 100644 index 00000000..c04924f3 --- /dev/null +++ b/demo-src/overlay/apps/console/src/demo/handlers.ts @@ -0,0 +1,240 @@ +import { http, HttpResponse } from "msw" +import apis from "./fixtures/apis-discovery.json" +import appDefs from "./fixtures/applicationdefinitions.json" +import instances from "./fixtures/instances.json" +import info from "./fixtures/info.json" +import namespace from "./fixtures/namespace.json" +import nodeMetrics from "./fixtures/node-metrics.json" +import tenantNamespaces from "./fixtures/tenantnamespaces.json" +import pods from "./fixtures/pods.json" +import services from "./fixtures/services.json" +import pvcs from "./fixtures/persistentvolumeclaims.json" +import events from "./fixtures/events.json" +import resourceQuotas from "./fixtures/resourcequotas.json" +import deployments from "./fixtures/deployments.json" +import statefulSets from "./fixtures/statefulsets.json" +import daemonSets from "./fixtures/daemonsets.json" +import tenantSecrets from "./fixtures/tenantsecrets.json" +import nodes from "./fixtures/nodes.json" +import storageClasses from "./fixtures/storageclasses.json" +import backupClasses from "./fixtures/backupclasses.json" +import options from "./fixtures/options.json" +import tenantModulesNs from "./fixtures/tenantmodules-ns.json" +import tenantModulesAll from "./fixtures/tenantmodules-all.json" +import clusterResourceQuotas from "./fixtures/resourcequotas-all.json" +import crdBackupClasses from "./fixtures/crds/backupclasses.backups.cozystack.io.json" +import crdPlans from "./fixtures/crds/plans.backups.cozystack.io.json" +import crdBackupJobs from "./fixtures/crds/backupjobs.backups.cozystack.io.json" +import crdBackups from "./fixtures/crds/backups.backups.cozystack.io.json" +import crdRestoreJobs from "./fixtures/crds/restorejobs.backups.cozystack.io.json" + +// Демо крутится целиком в браузере: MSW перехватывает k8s REST, отдаёт снятые +// с живого workshop00 фикстуры. Никакого backend, поэтому и никакой auth. + +const NS = "tenant-workshop00" +const COZY = "/apis/apps.cozystack.io/v1alpha1" // инстансы (Postgres, Kafka, …) +const CORE = "/apis/cozystack.io/v1alpha1" // ApplicationDefinition (каталог) +const CORE2 = "/apis/core.cozystack.io/v1alpha1" // tenantnamespaces +type Obj = { kind: string; metadata: { name: string } } + +// plural ресурса -> kind, чтобы отфильтровать общий instances.json. +const PLURAL_TO_KIND: Record = { + postgreses: "Postgres", kafkas: "Kafka", redises: "Redis", + clickhouses: "ClickHouse", mongodbs: "MongoDB", natses: "NATS", buckets: "Bucket", +} + +const list = (items: Obj[], kind: string) => ({ + apiVersion: "apps.cozystack.io/v1alpha1", + kind: `${kind}List`, + metadata: { resourceVersion: "1" }, + items, +}) + +// watch=1 -> стрим строк {type, object}; отдаём всё как ADDED, потом держим открытым. +function watchStream(items: Obj[]) { + const enc = new TextEncoder() + const body = new ReadableStream({ + start(c) { + for (const o of items) c.enqueue(enc.encode(JSON.stringify({ type: "ADDED", object: o }) + "\n")) + c.enqueue(enc.encode(JSON.stringify({ type: "BOOKMARK", object: { metadata: { resourceVersion: "1" } } }) + "\n")) + // не закрываем: watch-слой считает соединение живым + }, + }) + return new HttpResponse(body, { headers: { "content-type": "application/json" } }) +} + +const isWatch = (req: Request) => new URL(req.url).searchParams.has("watch") + +// пустой список ресурса (для сущностей, которых в демо нет) +const emptyList = (kind: string, apiVersion: string) => ({ + apiVersion, kind: `${kind}List`, metadata: { resourceVersion: "1" }, items: [] as Obj[], +}) + +// CRD по имени — нужны формам создания (use-crd-schema) +const CRD_BY_NAME: Record = { + "backupclasses.backups.cozystack.io": crdBackupClasses, + "plans.backups.cozystack.io": crdPlans, + "backupjobs.backups.cozystack.io": crdBackupJobs, + "backups.backups.cozystack.io": crdBackups, + "restorejobs.backups.cozystack.io": crdRestoreJobs, +} + +// labelSelector "k1=v1,k2=v2" -> все пары должны совпасть с metadata.labels. +type LabeledObj = Obj & { metadata: { name: string; labels?: Record } } +function filterByLabels(items: LabeledObj[], req: Request): LabeledObj[] { + const sel = new URL(req.url).searchParams.get("labelSelector") + if (!sel) return items + const pairs = sel.split(",").map((p) => p.split("=")).filter((p) => p.length === 2) + return items.filter((i) => pairs.every(([k, v]) => i.metadata.labels?.[k] === v)) +} +// fieldSelector "spec.type=LoadBalancer" — поддерживаем ровно то, что шлёт UI (ExternalIpsPage) +function filterByFields(items: LabeledObj[], req: Request): LabeledObj[] { + const sel = new URL(req.url).searchParams.get("fieldSelector") + if (!sel) return items + const pairs = sel.split(",").map((p) => p.split("=")).filter((p) => p.length === 2) + return items.filter((i) => + pairs.every(([k, v]) => { + const path = k.split(".") + let cur: unknown = i + for (const seg of path) cur = (cur as Record | undefined)?.[seg] + return cur === v + }), + ) +} + +// список ресурсов с фильтром по labelSelector + поддержкой watch +function labeled(fixture: { items: unknown[] }, kind: string, apiVersion: string) { + return ({ request }: { request: Request }) => { + const items = filterByLabels(fixture.items as unknown as LabeledObj[], request) + if (isWatch(request)) return watchStream(items) + return HttpResponse.json({ apiVersion, kind: `${kind}List`, metadata: { resourceVersion: "1" }, items }) + } +} + +export const handlers = [ + // discovery + http.get("/apis", () => HttpResponse.json(apis)), + http.get("/api/v1", () => HttpResponse.json({ kind: "APIResourceList", groupVersion: "v1", resources: [] })), + + // каталог: ApplicationDefinition (группа cozystack.io, cluster-scoped) + http.get(`${CORE}/applicationdefinitions`, ({ request }) => + isWatch(request) ? watchStream(appDefs.items as Obj[]) : HttpResponse.json(appDefs)), + + // тенанты пользователя (в демо — один, workshop00) + http.get(`${CORE2}/tenantnamespaces`, ({ request }) => + isWatch(request) ? watchStream(tenantNamespaces.items as Obj[]) : HttpResponse.json(tenantNamespaces)), + + // ресурс info (модуль cozystack «info» — сводка тенанта); отдаём снапшот + http.get(`${COZY}/namespaces/:ns/infos`, ({ request }) => + isWatch(request) + ? watchStream([info as Obj]) + : HttpResponse.json({ apiVersion: "apps.cozystack.io/v1alpha1", kind: "InfoList", metadata: { resourceVersion: "1" }, items: [info] })), + http.get(`${COZY}/namespaces/:ns/infos/:name`, () => HttpResponse.json(info)), + + // инстансы конкретного типа в namespace + http.get(`${COZY}/namespaces/:ns/:resource`, ({ params, request }) => { + const kind = PLURAL_TO_KIND[params.resource as string] + const items = kind ? (instances.items as Obj[]).filter((i) => i.kind === kind) : [] + return isWatch(request) ? watchStream(items) : HttpResponse.json(list(items, kind ?? "Unknown")) + }), + + // одиночный инстанс + http.get(`${COZY}/namespaces/:ns/:resource/:name`, ({ params }) => { + const kind = PLURAL_TO_KIND[params.resource as string] + const obj = (instances.items as Obj[]).find((i) => i.kind === kind && i.metadata.name === params.name) + return obj ? HttpResponse.json(obj) : new HttpResponse(null, { status: 404 }) + }), + + // namespace + http.get(`/api/v1/namespaces/${NS}`, () => HttpResponse.json(namespace)), + // опции для форм (storageClass, image, instancetype, backupclass, …) + http.get(`${CORE2}/namespaces/:ns/options`, ({ request }) => + isWatch(request) ? watchStream(options.items as Obj[]) : HttpResponse.json(options)), + + + + // workloads/сервисы/тома/секреты/события инстанса (табы карточки) — фильтр по labelSelector + http.get(`/api/v1/namespaces/:ns/pods`, labeled(pods, "Pod", "v1")), + http.get("/api/v1/pods", ({ request }) => + isWatch(request) ? watchStream(pods.items as Obj[]) : HttpResponse.json(pods)), + + http.get(`/api/v1/namespaces/:ns/services`, ({ request }) => { + const items = filterByFields(filterByLabels(services.items as unknown as LabeledObj[], request), request) + return isWatch(request) + ? watchStream(items) + : HttpResponse.json({ apiVersion: "v1", kind: "ServiceList", metadata: { resourceVersion: "1" }, items }) + }), + http.get(`/api/v1/namespaces/:ns/persistentvolumeclaims`, labeled(pvcs, "PersistentVolumeClaim", "v1")), + http.get("/api/v1/persistentvolumeclaims", ({ request }) => + isWatch(request) ? watchStream(pvcs.items as Obj[]) : HttpResponse.json(pvcs)), + + http.get(`/api/v1/namespaces/:ns/events`, ({ request }) => + isWatch(request) ? watchStream(events.items as Obj[]) : HttpResponse.json(events)), + http.get(`/api/v1/namespaces/:ns/resourcequotas`, ({ request }) => + isWatch(request) ? watchStream(resourceQuotas.items as Obj[]) : HttpResponse.json(resourceQuotas)), + http.get(`/apis/apps/v1/namespaces/:ns/deployments`, labeled(deployments, "Deployment", "apps/v1")), + http.get(`/apis/apps/v1/namespaces/:ns/statefulsets`, labeled(statefulSets, "StatefulSet", "apps/v1")), + http.get(`/apis/apps/v1/namespaces/:ns/daemonsets`, labeled(daemonSets, "DaemonSet", "apps/v1")), + http.get(`${CORE2}/namespaces/:ns/tenantsecrets`, labeled(tenantSecrets, "TenantSecret", "core.cozystack.io/v1alpha1")), + http.get(`/apis/networking.k8s.io/v1/namespaces/:ns/ingresses`, ({ request }) => + isWatch(request) + ? watchStream([]) + : HttpResponse.json({ apiVersion: "networking.k8s.io/v1", kind: "IngressList", metadata: { resourceVersion: "1" }, items: [] })), + + // namespaced backup-ресурсы (Console → Backups: Plans/BackupJobs/Backups/RestoreJobs) — в демо пусто + http.get(`/apis/backups.cozystack.io/v1alpha1/namespaces/:ns/:resource`, ({ params, request }) => { + const kindMap: Record = { plans: "Plan", backupjobs: "BackupJob", backups: "Backup", restorejobs: "RestoreJob" } + const kind = kindMap[params.resource as string] ?? "Backup" + return isWatch(request) ? watchStream([]) : HttpResponse.json(emptyList(kind, "backups.cozystack.io/v1alpha1")) + }), + + // модули тенанта (Console → Administration → Modules) + http.get(`${CORE2}/namespaces/:ns/tenantmodules`, ({ request }) => + isWatch(request) ? watchStream(tenantModulesNs.items as Obj[]) : HttpResponse.json(tenantModulesNs)), + // модули по кластеру + список тенантов (Console → Administration → Tenants) + http.get(`${CORE2}/tenantmodules`, ({ request }) => + isWatch(request) ? watchStream(tenantModulesAll.items as Obj[]) : HttpResponse.json(tenantModulesAll)), + http.get(`/api/v1/resourcequotas`, ({ request }) => + isWatch(request) ? watchStream(clusterResourceQuotas.items as Obj[]) : HttpResponse.json(clusterResourceQuotas)), + + // CRD-схемы для форм создания backup-объектов (use-crd-schema) + http.get(`/apis/apiextensions.k8s.io/v1/customresourcedefinitions/:name`, ({ params }) => { + const crd = CRD_BY_NAME[params.name as string] + return crd ? HttpResponse.json(crd) : new HttpResponse(null, { status: 404 }) + }), + + // конфиг дашборда и имя пользователя (оба graceful, но отдадим осмысленное) + http.get("/api/v1/namespaces/cozy-dashboard/configmaps/cozy-dashboard-console-config", () => + new HttpResponse(null, { status: 404 })), + http.get("/oauth2/userinfo", () => HttpResponse.json({ email: "demo@cozystack.io", user: "demo" })), + + // права: в демо всё разрешено + http.post("/apis/authorization.k8s.io/v1/selfsubjectaccessreviews", async ({ request }) => { + const body = (await request.json()) as { spec?: unknown } + return HttpResponse.json({ apiVersion: "authorization.k8s.io/v1", kind: "SelfSubjectAccessReview", spec: body.spec ?? {}, status: { allowed: true } }) + }), + + // метрики узлов + http.get("/api/v1/nodes", ({ request }) => + isWatch(request) ? watchStream(nodes.items as Obj[]) : HttpResponse.json(nodes)), + http.get("/apis/storage.k8s.io/v1/storageclasses", ({ request }) => + isWatch(request) ? watchStream(storageClasses.items as Obj[]) : HttpResponse.json(storageClasses)), + http.get("/apis/backups.cozystack.io/v1alpha1/backupclasses", ({ request }) => + isWatch(request) ? watchStream(backupClasses.items as Obj[]) : HttpResponse.json(backupClasses)), + http.get("/apis/backups.cozystack.io/v1alpha1/backups", ({ request }) => + isWatch(request) + ? watchStream([]) + : HttpResponse.json({ apiVersion: "backups.cozystack.io/v1alpha1", kind: "BackupList", metadata: { resourceVersion: "1" }, items: [] })), + http.get("/apis/metrics.k8s.io/v1beta1/nodes", () => HttpResponse.json(nodeMetrics)), + http.get("/apis/metrics.k8s.io/v1beta1/namespaces/:ns/pods", () => + HttpResponse.json({ kind: "PodMetricsList", apiVersion: "metrics.k8s.io/v1beta1", items: [] })), + + // создание инстанса в демо: возвращаем как будто создано (в список не добавляем — статичная витрина) + http.post(`${COZY}/namespaces/:ns/:resource`, async ({ request }) => { + const obj = await request.json() + return HttpResponse.json(obj, { status: 201 }) + }), + + // всё прочее из apps.cozystack.io — пустой список, чтобы UI не падал + http.get(`${COZY}/namespaces/:ns/:resource`, () => HttpResponse.json(list([], "Unknown"))), +] diff --git a/demo-src/patches/01-main.patch b/demo-src/patches/01-main.patch new file mode 100644 index 00000000..7d26e5bb --- /dev/null +++ b/demo-src/patches/01-main.patch @@ -0,0 +1,33 @@ +diff --git a/apps/console/src/main.tsx b/apps/console/src/main.tsx +index d8a6965..d69d62b 100644 +--- a/apps/console/src/main.tsx ++++ b/apps/console/src/main.tsx +@@ -6,16 +6,25 @@ import "./index.css" + import App from "./App.tsx" + import { loadConfig, loadUsername } from "./lib/config.ts" + +-Promise.all([loadConfig(), loadUsername()]).then(([config, username]) => { ++async function boot() { ++ // Демо-режим: поднимаем MSW-моки до первых запросов, backend не нужен. ++ if (import.meta.env.VITE_DEMO) { ++ const { startDemo } = await import("./demo/browser.ts") ++ await startDemo() ++ } ++ ++ const [config, username] = await Promise.all([loadConfig(), loadUsername()]) + if (config.titleText) document.title = config.titleText + + createRoot(document.getElementById("root")!).render( + + +- ++ + + + + , + ) +-}) ++} ++ ++boot() diff --git a/demo-src/patches/02-vite.patch b/demo-src/patches/02-vite.patch new file mode 100644 index 00000000..bea6fe7a --- /dev/null +++ b/demo-src/patches/02-vite.patch @@ -0,0 +1,17 @@ +diff --git a/apps/console/vite.config.ts b/apps/console/vite.config.ts +index 1e33159..de2d2dd 100644 +--- a/apps/console/vite.config.ts ++++ b/apps/console/vite.config.ts +@@ -9,7 +9,12 @@ import path from "path" + * The VNC console streams over a WebSocket, so `ws: true` is set on the + * proxies below to forward the upgrade to kubectl proxy. + */ ++// Base path for the built assets. Empty/"/" → served from the domain root; ++// "/demo/" → served under a sub-path of another site. Also feeds ++// import.meta.env.BASE_URL, which the demo uses for the MSW worker scope and ++// the router basename. + export default defineConfig({ ++ base: process.env.DEMO_BASE_PATH || "/", + plugins: [react(), tailwindcss()], + resolve: { + alias: { diff --git a/demo-src/patches/03-package.patch b/demo-src/patches/03-package.patch new file mode 100644 index 00000000..56774f97 --- /dev/null +++ b/demo-src/patches/03-package.patch @@ -0,0 +1,27 @@ +diff --git a/apps/console/package.json b/apps/console/package.json +index 9129d43..92b8208 100644 +--- a/apps/console/package.json ++++ b/apps/console/package.json +@@ -10,7 +10,8 @@ + "test": "vitest run", + "test:watch": "vitest", + "typecheck": "tsc --noEmit", +- "preview": "vite preview" ++ "preview": "vite preview", ++ "demo:smoke": "node demo-smoke.mjs" + }, + "dependencies": { + "@base-ui/react": "^1.4.1", +@@ -42,9 +43,11 @@ + "@vitejs/plugin-react": "^6.0.1", + "@vitest/ui": "^4.1.6", + "jsdom": "^29.1.1", ++ "msw": "^2.15.0", + "tailwindcss": "^4.2.2", + "typescript": "~6.0.2", + "vite": "^8.0.4", +- "vitest": "^4.1.6" ++ "vitest": "^4.1.6", ++ "@playwright/test": "^1.50.0" + } + } diff --git a/demo-src/patches/04-workspace.patch b/demo-src/patches/04-workspace.patch new file mode 100644 index 00000000..191fe042 --- /dev/null +++ b/demo-src/patches/04-workspace.patch @@ -0,0 +1,10 @@ +diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml +index 0e5a073..12ff19f 100644 +--- a/pnpm-workspace.yaml ++++ b/pnpm-workspace.yaml +@@ -1,3 +1,5 @@ + packages: + - "packages/*" + - "apps/*" ++allowBuilds: ++ msw: false diff --git a/hugo.yaml b/hugo.yaml index fe119eec..b2245dc8 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -303,24 +303,24 @@ menus: # and takes the label from that page's linkTitle. - pageRef: /docs/ weight: 40 - - name: OSS Health - identifier: oss-health - weight: 35 + - name: Resources + identifier: resources + weight: 30 - name: Telemetry url: /oss-health/telemetry/ - parent: oss-health + parent: resources weight: 1 - name: DevStats url: /oss-health/devstats/ - parent: oss-health + parent: resources weight: 2 - name: OpenSSF url: /oss-health/openssf/ - parent: oss-health + parent: resources weight: 3 - name: OSS Insight url: /oss-health/oss-insight/ - parent: oss-health + parent: resources weight: 4 - name: Compliance identifier: compliance @@ -347,10 +347,12 @@ menus: weight: 5 - name: Community url: /community/ - weight: 30 + parent: resources + weight: 5 - name: Enterprise support url: /support - weight: 5 + parent: resources + weight: 6 - name: GitHub url: https://github.com/cozystack/cozystack weight: 10