--- # buildkit — the image builder for CI (.gitea/workflows/images.yaml). Operator decision on PR #81 # (2026-10-29): images are built by a ROOTLESS BuildKit daemon reached over mTLS, and NO CI job # may reach a privileged daemon. See README.md for the whole design. # # A NAMESPACE OF ITS OWN, deliberately NOT `gitea-actions`: # * The act-runner namespace exists to hold a PRIVILEGED DinD sidecar. Putting the builder # beside it would put a TLS server key next to a privileged container for no benefit. # * Its NetworkPolicies, Secrets and quota then belong to one component, and the ingress rule # ("only the act-runner pod may connect") can be written from the outside. # # NO `app-namespace` LABEL, like gitea-actions: this is CI plumbing, not a user-facing app. That # is also why NO Kyverno exception is needed — every applied ClusterPolicy # (platform-config/kustomization.yaml) matches only namespaces labelled # homelab.keithjackson.dev/app-namespace: "true", and none of the job-shape policies match here. # # NO pod-security.kubernetes.io LABEL, on purpose. Rootless BuildKit needs seccomp AND AppArmor # `Unconfined` (measured — see deployment.yaml), which PSS `baseline` forbids; there is no # cluster-wide PSA default here, so an unlabelled namespace admits it. It is NOT privileged and # the deployment's securityContext is the boundary — read it before relaxing anything. apiVersion: v1 kind: Namespace metadata: name: buildkit labels: homelab.keithjackson.dev/ci: buildkit