agent-platform release v4.44.3

Fixed

  • Image verification renders the egress Kyverno’s admission controller needs, so a model pod is admitted on an installation whose Kyverno may reach the API server only (giantswarm/agent-platform#599). A verifyImages rule is evaluated by Kyverno’s admission controller itself: it fetches the image’s Sigstore bundle from the registry and verifies it against the Sigstore trust root. The fleet’s Kyverno chart gives the admission controller a CiliumNetworkPolicy allowing egress to the API server only, and Cilium’s default-deny takes the rest — DNS included —, so every fetch failed before it started (failed to fetch bundles: … dial tcp: lookup gsoci.azurecr.io: i/o timeout), and since verifyImages runs in the mutating webhook with failurePolicy: Fail, the error denied the pod whatever failureAction said (Audit too): from the switch’s default-on (4.43.0) every model pod on such an installation was refused, its ReplicaSet retried with backoff, the LLMInferenceService stayed MinimumReplicasUnavailable and no GPU node was launched — seen on an installation minutes after the release rolled, invisible to the lab’s proof, whose Kyverno runs without that policy. The connectivity chart now renders, where the image-verification ClusterPolicy renders and the network-policy flavor is cilium, one CiliumNetworkPolicy <release>-model-serving-image-verification-egress in Kyverno’s namespace selecting the admission controller pods, with DNS through Cilium’s DNS proxy and TCP 443 to the registry hosts (gsoci.azurecr.io, the Azure Container Registry data endpoints *.*.data.azurecr.io a blob read is redirected to) and the Sigstore hosts (tuf-repo-cdn.sigstore.dev, the trust root; rekor.sigstore.dev, the transparency log the keyless attestor names) — additive to whatever Kyverno’s own policies allow. The block is modelServing.imageVerification.kyvernoEgress (enabled, namespace, podSelector, hosts as toFQDNs entries), mirrored in both charts; enabled: false renders none for a Kyverno that reaches the registry already; an empty podSelector (the default) selects the upstream chart’s admission-controller labels and a set one renders alone; the guards refuse an empty namespace or host list, a selector that is no mapping, a host that is no toFQDNs entry, a nulled block and an unknown key, naming the key. make verify-model-serving-policies asserts the default render, the switches, the guards and the meta chart’s forwarded values. UPGRADE.md, “image verification renders the egress Kyverno’s admission controller needs”.