Container Registry and Software Supply Chain Platform  ·  View 05 of 33  ·  2 · Structure

Container and Component Architecture

Every deployable unit, its technology, and how many of it there are.

Editable source SVG draw.io All views
Artifact plane Harbor harbor-core Go · 6 replicas harbor-registry distribution · 8 harbor-jobservice GC · replication · 4 harbor-proxy-cache 1 per region Artifact state MinIO 12 nodes · EC 8+4 PostgreSQL Patroni · 3 nodes Redis sentinel · 3 Evidence plane Evidence services attestation-api Go · gRPC · 6 verifier Go · 4 indexer Go · 8 workers findings-api Go · 4 Sigstore Fulcio private CA · 3 Rekor Trillian · 3 TUF Repository root of trust Evidence state ClickHouse 6 shards × 2 Kafka Strimzi · 5 brokers Policy plane Policy services bundle-builder opa build · CI job policy-api Go · 4 exception-api Go · 2 dryrun-runner batch job Enforcement plane — replicated into every workload cluster Cluster add-on admission-webhook Go + OPA · 3 evidence-sync Kafka consumer · 2 local cache BoltDB on PVC Tekton build identity Keycloak human OIDC SPIRE workload SVID Vault + HSM PKCS#11 push + referrers artifact events DSSE bytes component rows evidence topic local read CA key Container and Component Architecture Interface / broker Application we own Data store Security / platform Queue / topic External / third party synchronous event / async Replica counts are sized for 400 admission reviews/s per cluster and 2,500 builds on a release day. v 1.0 · owner Platform Engineering · date 2026-09

Sizing rationale

  • 8 harbor-registry replicas sized for 25,000 pulls/hour steady, with the regional cache absorbing the 250,000/hour burst
  • 8 indexer workers to keep 90 MB/day of new SBOM and attestation data within the 10-minute push-to-verdict budget
  • 3 admission-webhook replicas per cluster for 400 reviews/s sustained and 2,000/s for 60 s

Assumptions

  • ClickHouse at 6 shards × 2 replicas keeps the component query inside p95 ≤ 3 s at 40,000 artifacts × 1,800 components
  • Kafka retains the evidence topic for 7 days, long enough to rebuild an edge cache without touching the origin
  • PostgreSQL under Patroni, one write region per repository — no global synchronous write anywhere

Risks

  • The platform operates seven stateful systems on premises; this is the largest single operational cost of choosing open source over managed services
  • ClickHouse and Kafka both need a named owner or the rebuild budget of 4 hours is fiction