Fixed
postgres.imagePullSecretsandpostgres.affinity, declared by both charts and rendered asCluster.spec.imagePullSecretsandCluster.spec.affinityon the platform PostgresCluster(#311, gap 4).affinityis CNPG’sAffinityConfiguration, not a core KubernetesAffinity: any other key fails the render, a corepodAffinityorpodAntiAffinitywith a message of its own. Both render no field while unset.- A network policy for the Backstage app pods, in both flavours, with
components.backstage.enabledandnetworkPolicy.enabled(#311, gap 1). Ingress: the Gateway that serves the portal’s route — the proxy pods of the namespaces the route names as its parents (backstage.parentRefs, elseglobal.gatewayApi.parentRefs), or the agentgateway data plane while the route attaches to it (backstage.parentRefswins overgatewayApi.gateway.createfor the policy as it does for the route) — and the kubelet’s probes, onbackstage.port. Egress: DNS, the kube-apiserver, the identity provider, the edge, muster, the portal’s own CNPG cluster onbackstage.database.engine: postgresql, and the scaffolder catalog location onbackstage.catalogs.version. The egress leg to the edge follows the Gateways the routes the app-config calls attach to (ingress.parentRefs,kagent.controllerRoute.parentRef,modelManager.route.parentRef), not the portal’s own route, and is opened on 443 and 10443: an Envoy Gateway proxy binds the listener’s port plus 10000, so the pod behind a 443 listener listens on 10443.