Wiki Page Revisions
6 Commits
6 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
81980279c4
|
NetworkPolicies in every chart (Gitea #5): the convention, the gate, and what it does not do
29 chart pages plus Chart-Style-Guide, CI-CD, Charts and Lessons-Learned. Chart-Style-Guide gains section 15, and its core is the FOUR PORT CLASSES - the part that is actually hard to get right. A port a network probe addresses stays open until probeSources is set, because the kubelet probes from the worker node's IP and no chart can know it. A NodePort-published port stays open because the source is already masqueraded. Everything else can be and is restricted by source, which is why the charts with a real inbound restriction are exactly those whose probes use a different port. A replica-to-replica bus gets a bare podSelector - and, since policyTypes lists Egress, its outbound side needs a rule of its own or the cluster never forms while every node looks healthy. The exec-probe distinction is written down as load-bearing rather than pedantic: it is the whole reason valkey and minecraft-server are the tightest policies in the repository and every HTTP-probed web app is looser. CI-CD gains the networkpolicy job as section 8 (the later two renumbered), and it ends with the measurement rather than a claim. Two experiments ran on the PR and were reverted: cyberchef's probe port restricted to an address no probe can come from stayed GREEN at 1m9s, and outline with its DNS egress rule removed went RED at 5m59s. Together those say k3s exempts the kubelet's probe traffic while enforcing everything else - so the install-test's net is an EGRESS net, and a wrong ingress port is caught by the render assertion or not at all. Every chart page gets a networkPolicy values table and an operating note naming that chart's own trap, not a boilerplate one: - keycloak carries the blast radius: it is the cluster's identity provider, its http rule is the only source-restricted inbound rule in the repo, and nothing in CI can catch a wrong controller - so the page asks for a real login and a look at consumers' issuer URLs after the first upgrade. - garage asks the reader to check their S3 consumers, because anything in another namespace is blocked until it is in allowedNamespaces. - bulwark names the quietest failure in the sweep: its probes test its own port, so a jmapServerUrl on a blocked port yields a Ready pod serving an empty webmail. - gotenberg explains what its DNS-only cap COSTS - HTML conversion silently loses remote assets - rather than only what it buys. - satisfactory and homeassistant each argue their own Ingress-only policy; satisfactory's deciding half is that it is the one chart with no install-test at all, so an egress cap there would be the only one with no empirical check behind it. - paperless-ngx names the two pods of its release that the object does NOT cover, including the consume CronJob whose pod template carries no labels. - freesailarr explains why ten containers behind a VPN need only three egress rules, and that extraPorts cannot help with an alternative WireGuard port because it is TCP-only. valkey and stalwart are corrected rather than extended. valkey's page now says why having no probeSources is what makes it the tightest policy here and not an incomplete one. stalwart's carries a dated correction: this page and the chart both advised putting the ingress controller's namespace into allowedNamespaces with ["ingress-nginx"] as the example, and both halves are wrong - ingress-nginx is gone from the cluster entirely, and allowedNamespaces would have opened http to every pod in that namespace anyway. Charts drops the claim that valkey is "the first chart with a NetworkPolicy on by default" and says instead that every chart has one, with the two shapes a reader needs before opening any chart page. Lessons-Learned gains four, all transferable: - the net that existed for a different failure than the one it was built for, and why both experiments were needed before either could be read; - a comment that could not describe its own syntax (a template comment must not spell out its own closing delimiter; the render then fails pointing at the template, not at the sentence); - three values that reached no rule and would have read as controls - a convention about value NAMES is not a convention about which values exist; - the subchart whose comments the parent could not fix, and the rule it produced: before making a check a gate, ask which failures the author of this diff can actually fix. |
||
|
|
1b9dd9de5b
|
rss-bridge, CI-CD, Lessons learned: #51 was closed, and the cause was never identified
PR #124 merged and the maintainer closed Gitea #51 one second later, on the strength of that round's green install-test. Three wiki passages written minutes earlier say the opposite - that the issue stays open, and that the standing instruction is to close it only after checking the cause. Corrected, with the emphasis moved to the part that outlives the colour: the chart was ruled out by a byte-identical render, the runner is the implicated layer, and THE CAUSE WAS NEVER IDENTIFIED. The diagnostic programme in #51's body - docker info for userns and the dind configuration, the same image in a local k3d without remapping - was not executed. Which produces the sentence that now matters most and that a closed issue cannot carry: if this chart's install-test goes red again, that is a fresh finding and not a known quirk. It is recorded on the chart page and in the repository's overlay comment, i.e. in the two places whoever sees the red will be reading, rather than only in a tracker nobody reopens. Also drops the pinned run count in favour of "every run of that branch after the first" - a third green had arrived with the push after the commit that said "two", so each commit recording the number invalidated it. Repo side: PR #127, a patch bump to 2.1.1+up2026.09.30, since a comment in a chart directory is still a change to that chart. |
||
|
|
3b9293706e
|
rss-bridge, CI-CD, Lessons learned: the green install-test reproduced, so "twice" rather than "one run"
The previous wiki commit recorded rss-bridge's install-test going green after months of failing on the Gitea runner, and hedged it with "it is one run". A second run on a second commit of the same PR came back green too - run 792 job 2623 and run 794 job 2638, both with the chart genuinely in the matrix, a k3d cluster built and the pod Ready. So the result is not a fluke, and the real caution is a different one: nobody has identified what changed on the runner. A green test does not explain itself, and the diagnostic programme in Gitea #51's body - docker info on the runner for userns and the dind configuration, the same image in a local k3d without remapping - remains unexecuted. That, and not the run count, is why the issue stays open. "Close an issue on a cause, not on a colour" is unaffected by the count. |
||
|
|
3fd7e65d5e
|
rss-bridge on the Gateway API, the production proof of the Gateway mode, and the red check that went green
Three rounds of knowledge in one commit, all of it measured rather than relayed. rss-bridge: the last chart of the Gateway-API sweep (Gitea #114). New Routing row and prerequisites per mode, a Gateway-mode install example, the httpRoute values table, and four operating-notes sections: the mode guards, why httpRoute.hostnames is this chart's own mandatory value (the third hostname shape in the repo - no ingress.domain to fall back to, and ingress.hosts deliberately not reused because its tlsSecretName entries address nothing once TLS sits on the listener), that rss-bridge.tlsGroups is therefore inert in that mode, and that nothing is lost on the switch - measured on the live Ingress, which carries no nginx annotation at all, so this is the one chart of the sweep whose Gateway branch has no loss to explain. Also records the ingress.enabled-derived-value screen coming back CLEAN for this chart, because an unrecorded clean screen is indistinguishable from one nobody ran. The install-test section is new and was rewritten once while being written: the chart's test had been red on the Gitea runner since the move (#51) and went GREEN on 2026-10-13, pod Ready in 22s with 0 restarts. The chart is ruled out as the cause by a diff, not an argument - the PR's rendered defaults are byte-identical to origin/main, so the spec that succeeded is the spec that had been failing. One run, no identified change on the runner, so #51 stays open: close on a cause, not on a colour. freesailarr: the Gateway mode is in production, which is the claim all four PRs of the sweep refused to make. No freesailarr Ingress objects in any namespace while the host answers; /radarr answers 302 from Kestrel with returnUrl=%2Fradarr, so the freesailarr.published helper works in production; /qbittorrent 301s to the slashed form from the chart's own rule; and the query string survives the redirect. The query-string answer is written as a measured data point and NOT as a promise - the specification still has no query field, so a different implementation may legitimately drop it. Three limits recorded with it: httproutes and gatewayclasses are RBAC-forbidden so the implementation cannot be named, there is no freesailarr namespace in the cluster at all, and every HTTP measurement passed through a front proxy. The attribution of the 301 to the chart's rule is inference from the snippet's carrier being gone plus the changed response signature, and says so. CI-CD: the httproute render test goes to 58 assertions over 22 charts, two overlays now have to supply hostnames rather than one, and the all-charts install-test note is corrected - rss-bridge's last green run is no longer a GitHub one. Lessons learned: three entries. The claim four PRs refused to make and where the measurement that reached it actually stopped; a screen that finds nothing is still a result worth writing down; and the red check that was kept red so it could say something, and then said it - an excluded test is not a quiet test but a blind one, because you also lose the moment the fault stops existing. |
||
|
|
311293e164
|
chart pages carry no version numbers any more
Both version rows leave every chart page's at-a-glance table; the image repository stays, because it does not rot. A plain app-version bump obliges no wiki edit — that rule is deliberate and stays — so any number written here is stale within a Renovate round, as urlaubsverwaltung's already was. Chart.yaml is where the pair is read, exactly as the chart index has said from the start. Home and Workflow no longer promise version snapshots. Forge and tooling described remotes named github and JLab-Git; the checkout has exactly one, origin, pointing at Gitea. Workflow gains the rule the wiki never had: fetch and rebase before every push, never force-push. |
||
|
|
f62f2e5871
|
Fill the wiki as the repository's knowledge base
One page per chart - prerequisites, installation walkthrough, the required 1Password fields, the complete values reference and the chart's operating traps - plus the long form of the workflow, the forge and its measured differences, the pipelines, versioning, Renovate, the chart style guide, the procedure for a new chart, local development, and the incidents each rule was bought with. Chart pages quote versions as snapshots; Chart.yaml stays authoritative, because Renovate moves app versions continuously and never edits the wiki. |