You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Measured 2026-08-17 while running the required prod authorization validator locally.
Two entries in the prod controllers render fetch third-party manifests over the network at render time:
k8s/providers/hetzner/infrastructure/controllers/origin-ca-issuer/kustomization.yaml:8-9 — two CRDs from Cloudflare's trunk branch (a moving branch, not a pin)
k8s/providers/hetzner/infrastructure/controllers/kubelet-serving-cert-approver/kustomization.yaml:21 — an install bundle pinned to tag v0.11.0 (a tag, no digest)
Both are active in the prod render (controllers/kustomization.yaml:43 and :45).
Observed today: raw.githubusercontent.com returned HTTP 429 on repeated attempts, and kubectl kustomize k8s/providers/hetzner/infrastructure/controllers aborted with accumulating resources ... 429: Too Many Requests. Four render-dependent tests in scripts/validate-eks-ci-role-policy failed identically on clean main and on a feature branch, which is what establishes the dependency as the cause rather than any change.
Problem
The render is not reproducible.trunk can move between two renders of the same commit, so one commit can produce two different expectedRenderedSurfaceSHA values with nothing in this repository having changed. That is directly relevant to the aggregate-fingerprint churn tracked in The EKS authorization surface hash goes stale on every HelmRelease dependency bump #2768.
Unreviewed third-party content reaches the prod authorization surface. The cert-approver install bundle contributes ServiceAccount / ClusterRole / (Cluster)RoleBinding documents to the very surface validate-eks-ci-role-policy exists to pin. A trunk move lands with no PR, no review, and no digest.
A required security gate is hostage to a third-party CDN. While the fetch rate-limits, the authorization measurement cannot be produced at all — which is how this was found.
Expected
Prod renders resolve entirely from reviewed, digest-pinned content in this repository.
Precedent — the pattern already exists here
scripts/update-vendored-operators.sh vendors pinned upstream bundles with SHA-256 verification and reviewed Checkov dispositions (CDI, KubeVirt), and CI re-validates the committed bytes against the pinned digest via --validate-committed. These two remotes are the outliers, not a new problem needing a new mechanism.
Acceptance criteria
No kustomization.yaml reachable from a prod render path references a remote URL.
Both dependencies are vendored under version control, pinned by digest, and refreshed through a reviewed updater path, with CI validating the committed bytes against that pin.
The five authorization roots and k8s/clusters/prod render with no network access.
A regression check fails if a new remote URL is introduced into a render path.
Suggested decomposition
A guard that fails when a render path references a remote URL — small, immediately valuable, and prevents a third outlier.
Vendor the origin-ca-issuer CRDs — most urgent, because trunk is unpinned today.
Vendor the kubelet-serving-cert-approver bundle — pinned to a tag, so lower risk than (2), but it is the one contributing authorization documents.
Evidence
Measured 2026-08-17 while running the required prod authorization validator locally.
Two entries in the prod controllers render fetch third-party manifests over the network at render time:
k8s/providers/hetzner/infrastructure/controllers/origin-ca-issuer/kustomization.yaml:8-9— two CRDs from Cloudflare'strunkbranch (a moving branch, not a pin)k8s/providers/hetzner/infrastructure/controllers/kubelet-serving-cert-approver/kustomization.yaml:21— an install bundle pinned to tagv0.11.0(a tag, no digest)Both are active in the prod render (
controllers/kustomization.yaml:43and:45).Observed today:
raw.githubusercontent.comreturned HTTP 429 on repeated attempts, andkubectl kustomize k8s/providers/hetzner/infrastructure/controllersaborted withaccumulating resources ... 429: Too Many Requests. Four render-dependent tests inscripts/validate-eks-ci-role-policyfailed identically on cleanmainand on a feature branch, which is what establishes the dependency as the cause rather than any change.Problem
trunkcan move between two renders of the same commit, so one commit can produce two differentexpectedRenderedSurfaceSHAvalues with nothing in this repository having changed. That is directly relevant to the aggregate-fingerprint churn tracked in The EKS authorization surface hash goes stale on every HelmRelease dependency bump #2768.validate-eks-ci-role-policyexists to pin. Atrunkmove lands with no PR, no review, and no digest.Expected
Prod renders resolve entirely from reviewed, digest-pinned content in this repository.
Precedent — the pattern already exists here
scripts/update-vendored-operators.shvendors pinned upstream bundles with SHA-256 verification and reviewed Checkov dispositions (CDI, KubeVirt), and CI re-validates the committed bytes against the pinned digest via--validate-committed. These two remotes are the outliers, not a new problem needing a new mechanism.Acceptance criteria
kustomization.yamlreachable from a prod render path references a remote URL.k8s/clusters/prodrender with no network access.Suggested decomposition
origin-ca-issuerCRDs — most urgent, becausetrunkis unpinned today.kubelet-serving-cert-approverbundle — pinned to a tag, so lower risk than (2), but it is the one contributing authorization documents.Rough size: M overall; child (1) is S.