bedrock
tenant layer

Admission policies

Kyverno policies

Files are in kyverno/.

PolicyChecksNamespacesActionIf Kyverno is down
disallow-latest-tagEvery container, init container and ephemeral container has an explicit tag that is not latestapplication, node-agentsDenyFail closed
require-resource-limitsCPU and memory limits on containers and init containersapplication, node-agentsDenyFail closed
harden-run-as-nonrootFills in runAsNonRoot, seccompProfile, allowPrivilegeEscalation: false and drop: ALLapplicationMutateFail closed
registry-allowlist-strictImages come from an allowed publisherapplication, node-agents, reloaderDenyFail closed
registry-allowlist-dataImages come from an allowed publishergarage, falco, nats, redis, kafka, cluster-1, cluster-2, cluster-3, prometheus-operatorDenyFail open
restrict-priority-classesReserved priority classes are used only where allowedallDenyFail open

bedrock-replica-secret-sync in database/replica-secret-sync.yaml is a generate policy. It copies the replication certificates from cluster-1 into cluster-2 and cluster-3 and keeps them in sync.

Allowed image publishers

RegistryAllowed
Docker Hubgrafana/*, falcosecurity/*, nats, redis, dxflrs/garage, alpine/k8s
ghcr.iocloudnative-pg/*, opencost/*, stakater/reloader
quay.ioprometheus/*, prometheus-operator/*, strimzi/*, kiwigrid/k8s-sidecar
registry.k8s.iokube-state-metrics/kube-state-metrics

ValidatingAdmissionPolicy

bedrock-reserved-priority-classes in platform/priorityclasses.yaml runs inside the API server and needs no webhook. It denies pod creation when:

  • bedrock-storage is used outside garage
  • bedrock-data is used outside cluster-1, cluster-2, cluster-3 and falco
  • system-cluster-critical or system-node-critical is used outside kube-system and kyverno

Pod Security Admission

The restricted level is enforced on every namespace except node-agents, falco and longhorn-system, which are privileged, and the namespaces created by RKE2 and upstream bundles. See namespaces.