Commit Graph
210 Commits
Author SHA1 Message Date
jklein 1bbd2a6b2f Merge pull request #37 from jk-cluster/feat/paperless-ngx-2.20.15
Update paperless-ngx to 2.20.15
2026-08-22 07:16:39 +00:00
jklein a50b50ab49 Update paperless-ngx to 2.20.15 2026-08-22 09:14:58 +02:00
jklein 29322d2047 Merge pull request #36 from jk-cluster/feat/cyberchef-11.4.0
Update cyberchef to 11.4.0
2026-08-22 07:12:50 +00:00
jklein 45a764cb46 Update cyberchef application version to 11.4.0
Major jump 10.22.1 -> 11.4.0: the upstream image switched to
nginxinc/nginx-unprivileged (serving port 80 -> 8080, pid/temp dirs
under /tmp). Adjust container port, writable-volume mounts and the
pod security context (sysctl net.ipv4.ip_unprivileged_port_start no
longer needed). Chart major bump 4.1.0 -> 5.0.0 accordingly.
2026-08-22 09:09:40 +02:00
jklein 751bba2e10 Merge pull request #35 from jk-cluster/feat/homeassistant-2026.8.3
Update homeassistant to 2026.8.3
2026-08-22 07:03:45 +00:00
jklein bb58c84bc5 Update homeassistant application version to 2026.8.3 2026-08-22 08:58:28 +02:00
jklein af47176cef Merge pull request #34 from jk-cluster/feat/app-updates-batch
Update app versions (batch): tika, gotenberg, synapse, rallly, samba, urlaubsverwaltung, voucher-vault, zipline, teamspeak
2026-08-22 06:47:57 +00:00
jklein ea68a69a3e Update app versions (batch): tika, gotenberg, synapse, rallly, samba, urlaubsverwaltung, voucher-vault, zipline, teamspeak
Nine non-critical app-version bumps, each with a chart patch bump:

- apache-tika 3.2.3.0-full -> 3.3.1.0-full
- gotenberg 8.26.0 -> 8.36.0
- matrix-synapse v1.149.1 -> v1.159.0
- rallly 4.8.1 -> 4.12.3
- samba 4.23.5 -> 4.23.10
- urlaubsverwaltung 6.5.0 -> 6.7.0
- voucher-vault 1.27.4 -> 1.30.1
- zipline 4.6.4 -> 4.7.0
- teamspeak-server v6.0.0-beta8 -> 6.0.0-beta12.1 (new tag format has no v prefix)

Release notes of every chart were checked for environment-variable
changes; none of the charts needs an env adjustment.

The teamspeak-server install-test is reactivated: beta12.1 ships a
valid default license, so the exclusion is removed, CI fixtures are
added under ci/teamspeak-server/, and the install-test was verified
in a local k3d cluster. README list of excluded charts updated.
2026-08-22 08:44:00 +02:00
jklein 0aff3a12ca Merge pull request #33 from jk-cluster/feat/scale-to-zero
Per-workload replicas values and chart-global scaleDown (scale to zero)
2026-08-22 06:29:41 +00:00
jklein 6779e49355 Add per-workload replicas values and a chart-global scaleDown flag
Every Deployment/StatefulSet now takes its replica count from a replicas
value (default 1, explicit 0 allowed) via a new per-chart <chart>.replicas
helper; the helper uses a kindIs "invalid" nil check so an explicit 0 is
not swallowed by Helm's default function. A chart-global scaleDown flag
(default false) takes precedence: it renders every workload with
replicas: 0 and suspends the paperless-ngx consume CronJob, stopping the
app without uninstalling it (PVCs, Secrets, Services and Ingress remain).

Defaults leave the rendered manifests byte-identical to main, so all
published charts get a minor version bump; the template-chart carries the
reference helper implementation and stays unversioned.

Fixes #25
2026-08-22 08:12:40 +02:00
jklein 9a00149ea6 Merge pull request #31 from jk-cluster/feat/auto-limits
Compute memory/ephemeral-storage limits from requests, drop default CPU limits
2026-08-21 21:37:24 +00:00
jklein 91a2fbcb05 Compute memory/ephemeral-storage limits from requests, drop default CPU limits
Every chart now renders its container resources through a duplicated
_helpers.tpl helper (reference implementation in template-chart): requests
ship as chart defaults, missing memory and ephemeral-storage limits are
computed as resources.limitFactor x the request (default 3, satisfactory
keeps 2 to preserve its previously published 8Gi limit), an explicitly set
limit always wins, and a CPU limit is only rendered when set explicitly.
Fixed limit defaults are removed from all values.yaml files; teamspeak-server
gains a values-driven resources block instead of hardcoded template values.
Major version bump for all published charts.
2026-08-21 23:34:09 +02:00
jklein ad4d4c492d Merge pull request #30 from jk-cluster/docs/audit
Bring CLAUDE.md up to date with current practice
2026-08-21 21:27:06 +00:00
jklein 13d9abb6d2 Bring CLAUDE.md up to date with current validation and versioning practice
- validation happens via strict lint, PR pipeline and install-test stage
- new charts need ci/ fixtures or an exclusion entry
- codify semver conventions (patch/minor/major)
- app updates via PRs with stepped major upgrades
2026-08-21 23:26:32 +02:00
jklein f2c0b01f80 Merge pull request #27 from jk-cluster/feat/install-test-pipeline
CI: install-test stage for changed charts in the PR pipeline (k3d)
2026-08-21 21:16:12 +00:00
jklein ebc3606269 Merge pull request #28 from jk-cluster/fix/cwa-sfs-servicename
Add missing serviceName to calibre-web-automated StatefulSet
2026-08-21 21:15:20 +00:00
jklein 325d526714 Add missing serviceName to calibre-web-automated StatefulSet
The StatefulSet spec lacked the mandatory serviceName field, causing
permanent drift in Fleet (spec.serviceName reported as modified).
Points to the chart's existing cwa-service. Bumps chart to 2.0.1.
2026-08-21 23:14:48 +02:00
jklein dfa8d3386c Revert "TEMP: bump cyberchef to demonstrate the install-test job (will be reverted)"
This reverts commit ab5e5c02d1.
2026-08-21 23:14:37 +02:00
jklein ab5e5c02d1 TEMP: bump cyberchef to demonstrate the install-test job (will be reverted) 2026-08-21 23:13:23 +02:00
jklein cc6084ca58 Add install-test stage to the PR pipeline (k3d)
New install-test job in validate-charts.yml: for exactly the charts a PR
changes, install them into an ephemeral k3d cluster (pinned k3d v5.9.0,
k3s v1.35.5-k3s1) and require every Deployment/StatefulSet to become
Ready. Runs non-blocking (continue-on-error) during the stabilization
phase.

Fixtures live at the repo root under ci/ (not inside chart directories,
so they neither trigger publishes on merge nor get packaged): a stub
OnePasswordItem CRD, per-chart test values and fixtures (dummy secrets
with in-cluster DSNs, throwaway postgres/redis/dex, synapse-generate
seed job, static hostPath PVs where charts pin storage classes or need
RWX), plus a shared ci/run-install-test.sh harness that also runs
locally.

Excluded with documented reasons (ci/excluded-charts.txt): satisfactory
(multi-GB image), teamspeak-server (TS6 beta license expired, image
crashes on start), template-chart (placeholder image).

All 14 non-excluded charts verified locally in k3d using only the
committed fixtures.
2026-08-21 23:12:38 +02:00
jklein 9f258e2440 Merge pull request #26 from jk-cluster/fix/security-hardening
Harden pod and container security contexts across all workloads
2026-08-21 20:00:58 +00:00
jklein b5eba4cbf1 Harden pod and container security contexts across all workloads
Add securityContext hardening (runAsNonRoot, readOnlyRootFilesystem,
capabilities drop ALL, allowPrivilegeEscalation false) to the 10 workloads
that lacked it: apache-tika, cyberchef, gotenberg, homeassistant,
matrix-delegation-nginx, paperless-server, paperless-consume cronjob
(plus automountServiceAccountToken false), patchmon-frontend,
urlaubsverwaltung and zipline. All contexts are configurable via
securityContext.pod / securityContext.container in values.yaml; writable
paths are provided as emptyDirs. Image-forced deviations (Home Assistant
root start for s6-overlay + NET_RAW for discovery, paperless root init
container for /run ownership) are documented in the charts' values.yaml.
Major version bump for every changed published chart.
2026-08-21 21:49:05 +02:00
jklein 6dd80e3874 Merge pull request #21 from jk-cluster/fix/probes
Ensure liveness, readiness and startup probes on all workloads
2026-08-21 16:49:25 +00:00
jklein be8ec3590e Remove stray helper script 2026-08-21 18:44:22 +02:00
jklein 7f1ef4055f Refine probes based on k3d cluster verification
Every chart was installed twice in a throwaway k3d cluster (origin/main
vs this branch) with real Postgres/Redis/dex instances and observed for
readiness ordering, stability and dependency-outage behavior. Findings:

- voucher-vault: Django only accepts Hosts 127.0.0.1 and the configured
  DOMAIN; the default probe Host (pod IP) always got 400. Probes now
  send 'Host: 127.0.0.1'.
- zipline: /api/healthcheck includes the database, so liveness now uses
  '/' (readiness/startup keep /api/healthcheck). Verified live: on a
  Postgres outage the pod turns NotReady within 30s and is never
  restarted by the kubelet.
- outline: '/' also returns 500 when the database is down, so there is
  no dependency-free endpoint; all three probes use /_health.
2026-08-21 18:44:13 +02:00
jklein 535776ccdd Merge pull request #23 from jk-cluster/docs/keep-docs-current
Keep CLAUDE.md workflow and README repo info current
2026-08-21 16:37:52 +00:00
jklein f349428d0e Keep workflow docs in CLAUDE.md and general repo info in README current
- CLAUDE.md: document plan-on-issue step, doc-currency rules, k3d verification convention
- README: document validate-charts PR pipeline, branch-filtered publish trigger, strict lint, local k3d runtime verification
2026-08-21 18:36:31 +02:00
jklein 78d78973c5 Ensure liveness, readiness and startup probes on all workloads
Every container in every Deployment/StatefulSet now defines all three
probes. The paperless-ngx consume CronJob intentionally has none (batch
workload).

- Add probes: apache-tika, calibre-web-automated, cyberchef, gotenberg,
  homeassistant, patchmon-backend, samba (tcp/445), teamspeak-server
  (tcp/30033), zipline (/api/healthcheck)
- Fix voucher-vault null probe values with real defaults
- Fix startup-probe semantics in template-chart and rallly (no
  initialDelaySeconds, generous failureThreshold)
- Switch outline probes to its /_health endpoint
- Add readiness/startup probes to satisfactory
- Add startup probes to matrix-synapse, matrix-delegation-nginx,
  paperless-server, patchmon-frontend, urlaubsverwaltung
- Major version bump for all published charts
2026-08-21 17:36:53 +02:00
jklein 947b5eae35 Merge pull request #18 from jk-cluster/docs/agent-driven-workflow
Update issue workflow to agent-driven model
2026-08-21 15:24:36 +00:00
jklein 0d3b722dd1 Update issue workflow: manager plans, dev agent implements and tends its PR 2026-08-21 17:17:48 +02:00
jklein 391785165d Merge pull request #17 from jk-cluster/fix/paperless-cronjob-resources
Add resource requests/limits to paperless consume cronjob
2026-08-21 15:12:57 +00:00
jklein b27fcddc6f Add resource requests/limits to paperless consume cronjob
Configurable via smbConnection.cron.resources with minimal defaults
for the busybox container. Bumps chart version to 4.4.1+up2.20.13.

Fixes #10
2026-08-21 17:09:37 +02:00
jklein 96566a8618 Merge pull request #16 from jk-cluster/feat/validate-charts-workflow
Add PR pipeline validating changed helm charts
2026-08-21 17:04:14 +02:00
jklein ded2f59020 Rename detect job output to any-chart-changed for clarity 2026-08-21 17:03:22 +02:00
jklein 5a5c45fa41 Revert "TEMP: touch cyberchef chart to demo validate pipeline (will be reverted)"
This reverts commit 4f40aad6c2.
2026-08-21 16:57:28 +02:00
jklein 4f40aad6c2 TEMP: touch cyberchef chart to demo validate pipeline (will be reverted) 2026-08-21 16:56:46 +02:00
jklein 79f9260f56 Add PR pipeline validating changed helm charts
On every pull request, detect which chart directories were touched and
run helm lint --strict, helm package, and a chart-version bump check
for exactly those charts. PRs without chart changes skip the build.

Fixes #5
2026-08-21 16:55:47 +02:00
jklein 26c347290b Merge pull request #15 from jk-cluster/chore/remove-music-assistant-skill
Remove unused music-assistant-skill chart
2026-08-21 16:51:41 +02:00
jklein 3c7e7f8e00 Remove unused music-assistant-skill chart
The chart is no longer needed. Removes the chart directory, its publish
workflow, and its row in the README chart table. Already published
versions remain in the registry.

Fixes #7
2026-08-21 16:50:43 +02:00
jklein ff1b4b62ab Merge pull request #14 from jk-cluster/fix/upgrade-checkout-action
Upgrade actions/checkout from v2 to v4
2026-08-21 16:48:15 +02:00
jklein 1b56c4bdb2 Upgrade actions/checkout from v2 to v4
Fixes #6
2026-08-21 16:47:29 +02:00
jklein 3bed5a1717 Merge pull request #13 from jk-cluster/fix/publish-branch-filter
Restrict publish workflows to pushes on main
2026-08-21 16:42:21 +02:00
jklein 321aed387a Merge pull request #3 from jk-cluster/worktree-init-claude-md
Add repo documentation (CLAUDE.md + README) and remove dependabot config
2026-08-21 16:42:07 +02:00
jkleinandClaude Fable 5 62d2caae66 Restrict publish workflows to pushes on main
Without a branch filter, any push on any branch touching a chart
directory packaged and published the chart to the registry.

Fixes #4

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:40:20 +02:00
jkleinandClaude Fable 5 0275c01a18 Document mandatory issue workflow in CLAUDE.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:35:05 +02:00
jkleinandClaude Fable 5 04283df8c4 Remove non-functional dependabot config
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:20:49 +02:00
jkleinandClaude Fable 5 50685603e6 Document repo structure, charts, CI/CD and conventions in README
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:18:55 +02:00
jkleinandClaude Fable 5 116a0499c5 Add CLAUDE.md with repo guidance for Claude Code
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:17:19 +02:00
jk-cluster-bot f03d6cb870 Updated outline application version to 1.9.2 2026-08-11 13:43:17 +00:00
jk-cluster-bot 7fad2ee18a Updated zipline application version to 4.6.4 2026-07-28 12:00:29 +00:00