Skip to content

fix: in-cluster Host, job-execution warning, assistant image tag - #3

Merged
krlex merged 3 commits into
mainfrom
hardening-followup-2026-07
Jul 25, 2026
Merged

fix: in-cluster Host, job-execution warning, assistant image tag#3
krlex merged 3 commits into
mainfrom
hardening-followup-2026-07

Conversation

@krlex

@krlex krlex commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Three chart fixes needed before 2026.07.0:

  • M9 rejected the forail-web Service DNS names as Host, so in-cluster callers were refused (found against a live cluster 2026-07-23).
  • NOTES.txt now warns when task.privileged=false, where every job dies at 0s in podman with 'mount /var/lib/containers/storage/overlay: permission denied' and the only symptom is a project stuck Pending.
  • The assistant image pointed at 2026.07.0, a tag that will not be published; pinned to 2026.06.0.

krlex added 3 commits July 23, 2026 14:32
Clients inside the cluster reach the API through the forail-web Service, so
their Host header is the Service name, not the ingress host. The hardened
allowedHosts list did not cover it, so Django answered 400 and the documented
forail-operator install (--set forail.url=http://forail-web.<ns>.svc.cluster.local:8013)
could not resolve a single object.

Append the four Service DNS forms to whatever allowedHosts is set to. They are
cluster-internal and derived from the release, so this keeps the list tight —
an unknown Host is still rejected with 400 — while making in-cluster access
work without every caller having to override its Host header.

Verified in the dev cluster: in-cluster calls return 200 with no hostHeader
override, a bogus Host still gets 400 at the Django layer, forail-web stays at
0 restarts, and the full Cypress suite passes 101/101.
task.privileged=false is the right default to publish -- a privileged pod with
a host cgroup mount is a trivial container escape to node-root. But Forail runs
project updates and automation jobs through podman inside the task pod, and
podman cannot mount its overlay storage without those privileges, so with the
shipped defaults every job dies moments after launch with

  [graphdriver] prior storage driver overlay failed:
    mount /var/lib/containers/storage/overlay: permission denied

Nothing surfaces that. The UI shows a project or job sitting in "Pending", the
pods are all healthy, and the reason is buried in the task container's log. The
install looks successful and simply cannot do the one thing it exists for.

Add NOTES.txt so helm prints the warning, the exact error to expect and the
two flags that enable execution, right after install -- and stays quiet once
they are set. Verified both ways with helm install --dry-run.
forail-assistant is not part of the 2026.07.0 release. It ships disabled and
was not built or tested for it, but values.yaml still pointed at
forail-assistant:2026.07.0 -- a tag nobody is going to push. Nothing pulls it
while assistant.enabled=false, so the trap only springs on whoever turns the
assistant on, and it springs as ImagePullBackOff with no hint that the tag was
never published.

Point it at 2026.06.0, which exists, and say in the values file that it moves
in lockstep with the next assistant release.
@krlex
krlex merged commit a76c9ef into main Jul 25, 2026
1 check passed
@krlex
krlex deleted the hardening-followup-2026-07 branch July 30, 2026 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant