On this page
Introduction and Goals
This HLD describes the selected target Red Hat Quay registry pattern for DC 3.0. It turns the product-neutral registry ABB into an implementable solution architecture for the red-hat-quay SBB, while leaving service-onboarding evidence to the SBB activation gates.
Primary goals:
- Provide a controlled enterprise OCI registry for OpenShift platform, workload, and automation flows.
- Support restricted-network operations by mirroring approved upstream content into a governed internal endpoint.
- Define the target tiering model: one main ACM-governed seed Quay tier for approved platform content, one DCS-internal platform Quay tier in each AM1 and AM4 Datacenter Services cluster, and one shared tenant-facing Quay service tier per datacenter for tenant push/pull.
- Make the tenant access model explicit: tenants use tenant-facing Quay endpoints and do not directly use DCS-internal registry services; the main seed tier is not the normal tenant endpoint.
- Preserve a path toward stronger disconnected or air-gapped models without imposing that operating cost on Phase 1.
- Make registry security, evidence, retention, backup, and operations explicit enough for service onboarding.
Stakeholders:
| Stakeholder | Interest |
|---|---|
| Platform Architecture | Target-state registry design, OpenShift integration, and delivery gates. |
| Platform Operations | Quay lifecycle, monitoring, backup, restore, tenant onboarding, and runbooks. |
| Security Architecture | Vulnerability visibility, trust evidence, access control, and auditability. |
| Application teams | Reliable image pull/push path, tenant namespaces, robot credentials, and promotion rules. |
| Storage and Network teams | Object-storage, database/cache, ingress, DNS, TLS, and load-balancing dependencies. |
Constraints
- adr-005-datacenter-services-baseline selects Red Hat Quay as the Registry SBB for Datacenter Services.
- adr-011-connected-vs-disconnected defines Phase 1 as restricted-network, not fully disconnected or air-gapped.
- adr-004-single-active-phased-rollout defines rollout sequencing; the Quay target topology itself is location-neutral and applies per available Datacenter Services locality.
- Quay production durability requires highly available object storage, database, and cache dependencies; local storage and raw block/PVC storage are not acceptable production blob backends.
- Quay scan visibility does not by itself enforce release policy; deployment gates require separate policy tooling.
- ACM governs fleet lifecycle and policy. Quay provides trusted content distribution and registry evidence, not ACM governance replacement.
- Red Hat generally prefers a single shared Quay registry with organizations, repositories, and RBAC. The RWS target uses distinct platform-facing and tenant-facing registries only because the DCS security boundary, endpoint exposure, and configuration differ by audience.
Context and Scope
Business Context
The registry service is a shared DC 3.0 platform capability. It reduces uncontrolled external image consumption, gives platform teams a governed mirror and artifact endpoint, and supports fleet lifecycle operations such as operator catalogs and update content.
Technical Context
| External party | Interaction with Quay |
|---|---|
| Upstream registries | The main ACM-governed seed Quay tier synchronizes approved content from Red Hat and other approved registries. |
| DCS-internal platform Quay instances | AM1 and AM4 local tiers synchronize approved platform content from the main seed tier for cluster lifecycle and platform pull paths. |
| Tenant-facing Quay service endpoints | AM1 and AM4 tenant-facing tiers host tenant organizations, CI/CD push endpoints, workload pull paths, and selected cross-datacenter repository mirrors. |
| CI/CD and GitOps | Pipelines push signed or promoted workload images and deployment artifacts to the target tenant-facing Quay endpoint. |
| OpenShift clusters | Clusters pull mirrored platform content from DCS-internal platform Quay and workload content from tenant-facing Quay endpoints. |
| Identity provider | Quay uses OIDC for human access and may use robot-account federation for automation. |
| Object storage | Stores image and artifact blobs through an S3-compatible object API. |
| PostgreSQL and Redis | Store Quay metadata and runtime state. |
| Security tooling | Consumes vulnerability, tag, signature, SBOM, and repository evidence. |
In Scope
- Red Hat Quay Operator deployment on OpenShift.
- Quay application, Clair, mirror workers, and registry endpoint design.
- Integration with object storage, PostgreSQL, Redis, OIDC, TLS, monitoring, and backup.
- Tenant model, access model, automation credentials, and evidence controls.
- Main seed, DCS-internal platform, and tenant-facing registry tier responsibilities.
Out of Scope
- Formal product selection for signing, SBOM, and admission-control tooling.
- Full air-gapped transfer logistics and offline vulnerability-feed handling.
- Detailed implementation manifests, runbook commands, bucket names, and account names.
- Dedicated tenant-owned Quay instance design, except for stating the exception boundary.
Solution Strategy
Use Operator-managed Quay instances as a tiered registry fabric. The main ACM-governed seed tier curates upstream content for the fleet. The AM1 and AM4 Datacenter Services clusters each host a DCS-internal platform Quay instance for platform and cluster lifecycle pull paths. Tenant publishing and workload image pulls use one shared tenant-facing Quay service per datacenter so tenant traffic is not direct access to DCS-internal services.
This is a workable and recommended RWS target because the platform-facing and tenant-facing audiences need different exposure and security posture. It is not a recommendation to deploy one Quay per tenant or one Quay per cluster: tenant isolation remains Quay organizations, teams, repository permissions, and robot accounts inside the tenant-facing service.
Strategy highlights:
- Deploy Quay through the Red Hat Quay Operator for repeatability, OpenShift integration, and lifecycle management.
- Keep state outside Quay pods: PostgreSQL for metadata, Redis for runtime cache/state, and S3-compatible object storage for blobs.
- Mirror curated upstream content into the main seed tier, then synchronize the approved platform subset to each AM1 and AM4 DCS-internal platform Quay instance.
- Make clusters pull platform content from DCS-internal platform Quay and workload content from tenant-facing Quay through configured mirror policies and digest-based references wherever possible.
- Synchronize tenant images between AM1 and AM4 tenant-facing endpoints only for selected repositories, tags, or promoted digests; do not duplicate whole registries by default and do not copy the platform mirror catalog into tenant-facing Quay.
- Use OIDC-backed human access, scoped teams, and robot accounts for automation.
- Enable Clair for vulnerability visibility and feed results into security operations and release governance.
- Treat signing, SBOM, provenance, and admission blocking as adjacent controls that reference registry evidence.
Building Block View
Level 1
| Building block | Responsibility |
|---|---|
| Main ACM-governed seed Quay tier | Approved upstream intake, platform mirror catalog, and fleet content seeding. |
| DCS-internal platform Quay tier | Local platform mirror and cluster lifecycle pull endpoint for each AM1 and AM4 Datacenter Services cluster. |
| Tenant-facing Quay tier | Shared tenant organizations, CI/CD push endpoints, workload pull paths, and selected cross-datacenter synchronization per datacenter. |
| Registry dependencies | PostgreSQL, Redis, object storage, IAM, TLS, DNS, load balancing, backup, and observability. |
| Consumer ecosystem | OpenShift clusters, CI/CD, GitOps, platform automation, and security tooling. |
Level 2
| Building block | Detail |
|---|---|
| Quay Operator | Reconciles QuayRegistry custom resources and managed components. |
| Quay app replicas | Serve registry API, UI, authentication, repository metadata, and pull/push flows. |
| Clair | Scans container images and exposes vulnerability findings. |
| Mirror workers | Execute upstream-to-main, main-to-DCS, and tenant-facing cross-datacenter repository and organization mirror synchronization. |
| PostgreSQL | Durable metadata store for users, organizations, teams, permissions, repositories, tags, and manifests. |
| Redis | Runtime support for events, garbage collection, and build-related functions. |
| Object storage | Durable S3-compatible image and artifact blob store. |
| External route | DNS, TLS, and load-balancer entry point for registry clients. |
Runtime View
Mirrored Upstream Content
- Platform Operations approves an upstream source, repository, organization, and tag pattern.
- Main seed Quay mirror workers authenticate to the upstream registry where required.
- Mirrored content lands in a controlled main seed organization or repository.
- AM1 and AM4 DCS-internal platform Quay instances synchronize the approved subset needed by their local platform and cluster lifecycle flows.
- OpenShift mirror configuration redirects platform pulls to DCS-internal platform Quay.
- Security and platform operations monitor mirror backlog, sync errors, scan state, and content freshness across both tiers.
Workload Image Promotion
- CI builds or imports an image and pushes it to a non-production repository.
- Release automation signs, scans, labels, and promotes the image according to the selected release policy.
- The promoted digest is published in the target tenant-facing Quay organization.
- GitOps references the digest or governed tag.
- Admission policy verifies the required trust evidence before deployment.
- If the same tenant image must be available in another datacenter, controlled mirroring copies the selected repository, tag, or digest between AM1 and AM4 tenant-facing Quay endpoints.
Tenant and Cluster Consumption
- Tenant onboarding creates a tenant-facing Quay organization, teams, repository defaults, robot accounts, retention class, and naming contract.
- CI/CD pushes workload images and OCI artifacts to the tenant organization in the tenant-facing Quay service endpoint for the target datacenter or service domain.
- Local OpenShift clusters pull platform lifecycle content from DCS-internal platform Quay and workload content from tenant-facing Quay.
- The main seed tier is used for approved platform content distribution, bootstrap, recovery, or governed fallback; it is not the normal tenant push/pull endpoint.
- A dedicated tenant Quay instance requires an exception decision or time-bound exception record with owner, expiry, IAM, mirroring, backup, scanning, logging, and admission-control evidence.
Vulnerability Visibility
- Quay stores image metadata and blobs after push or mirror sync.
- Clair indexes the image and reports vulnerability findings.
- Security tooling and platform dashboards consume scan results and freshness indicators.
- Release governance decides whether the finding blocks promotion or deployment.
Deployment View
| Deployment element | Placement |
|---|---|
| Main ACM-governed seed Quay namespace | Global hub / ACM-governed platform environment; used for approved upstream intake and fleet content seeding. |
| DCS-internal platform Quay namespace | One namespace per internal platform Quay instance in each AM1 and AM4 Datacenter Services cluster. |
| Tenant-facing Quay namespace | One shared platform-managed namespace or service boundary per datacenter, exposed only through approved tenant-facing ingress, DNS, TLS, firewall, and ADC controls. |
| Quay Operator | Installed per Quay instance, managed by platform GitOps and OpenShift lifecycle policy. |
| Quay app and Clair replicas | Deployed per Quay instance, scaled horizontally and monitored. |
| PostgreSQL | Highly available dependency per Quay instance, with backup, monitoring, lifecycle, and ownership evidence captured during service onboarding. |
| Redis | Highly available cache/state dependency per Quay instance, with backup or rebuild semantics, monitoring, lifecycle, and ownership evidence captured during service onboarding. |
| Object storage | S3-compatible ODF-provisioned object bucket per Quay instance, backed by the dedicated Ceph platform from block-file-s3-storage, adr-001-storage-backend, and adr-009-odf-structure. Raw block or file storage may back the object service, but Quay consumes the object API. |
| External endpoint | Datacenter Services external profile using approved DNS, TLS, firewall, and ADC controls for each exposed registry endpoint. |
| Backup target | backup-and-disaster-recovery service with tested restore evidence per Quay instance. |
The baseline uses explicit mirroring rather than Quay geo-replication: main-to-DCS mirroring for platform content and tenant-facing cross-datacenter mirroring for selected workload repositories or digests. Multi-site geo-replication is a later design because it needs storage-health, database/cache, and global load-balancing decisions and does not provide selective repository synchronization.
Cross-cutting Concepts
Identity and Access
- OIDC is the target human authentication path through Keycloak.
- Quay organizations map to platform tenants, service domains, or curated mirror domains.
- Teams and default permissions define repository access; superuser rights stay restricted to platform operations.
- Robot accounts are scoped per automation use case and rotated through the secrets-management process.
- Main seed organizations are controlled by Platform Operations and release governance.
- Tenant-facing organizations are the default tenant onboarding unit inside the shared AM1 or AM4 tenant-facing Quay service.
- DCS-internal platform repositories are not tenant push targets.
- Dedicated tenant Quay instances are not self-service; they require an exception decision or time-bound exception record.
Network and TLS
- Registry routes are exposed only through approved Datacenter Services external-profile ingress and load-balancing paths for their audience.
- TLS is mandatory for user-facing and machine-facing endpoints.
- Tenant-facing endpoints and DCS-internal platform endpoints use separate audience-specific routing and firewall policy.
- Backend TLS for database, Redis, and object storage is required where the selected dependency supports it.
Data Protection
- PostgreSQL backup protects registry metadata.
- Object-storage backup or replication protects image and artifact blobs.
- Config bundle backup protects Quay application configuration.
- Restore tests must include push, pull by digest, OIDC login, main-to-DCS mirror sync, tenant-facing cross-datacenter mirror sync, and Clair scan validation.
Observability
- Quay metrics are scraped through the Operator-managed metrics service.
- Alerts cover registry availability, dependency health, object-storage errors, upstream mirror lag, main-to-DCS mirror lag, tenant-facing cross-datacenter mirror lag, garbage collection, scan freshness, certificate expiry, and capacity thresholds.
- Action logs and repository logs feed audit and security operations workflows.
Supply-chain Governance
- Quay stores and distributes images, OCI artifacts, signatures, SBOMs, and related metadata where supported.
- Quay does not replace release governance. Admission policy and promotion automation remain responsible for trust decisions.
- Mirroring policies must account for current vendor limits, including OCI referrers such as Cosign signatures and SBOMs that are not mirrored automatically by repository or organization mirroring.
Architecture Decisions
Accepted Decisions
- Accepted: Red Hat Quay realizes registry in the Datacenter Services baseline through adr-005-datacenter-services-baseline.
- Accepted: Phase 1 is restricted-network and keeps stronger disconnected models out of baseline through adr-011-connected-vs-disconnected.
- Accepted: adr-004-single-active-phased-rollout constrains implementation sequencing; this HLD defines the final Quay target topology without using rollout location labels as architecture tiers.
Implementation Stance
- Accepted in this HLD: Quay Operator is the target deployment model; standalone Quay requires a future exception decision.
- Accepted in this HLD: Quay image blobs use the S3-compatible ODF object path backed by the dedicated Ceph platform baseline; raw block/PVC storage is not the production blob backend, and any other S3 endpoint requires an exception ADR.
- Accepted in this HLD: PostgreSQL and Redis are highly available Datacenter Services dependencies with service-onboarding evidence for ownership, monitoring, lifecycle, and recovery.
- Accepted in this HLD: tenant-facing Quay is separate from DCS-internal platform Quay; tenants do not push to, or directly consume from, DCS-internal registry services.
- Accepted in this HLD: AM1 and AM4 each host one shared tenant-facing Quay service for HCP tenants; tenant isolation is handled by organizations, teams, repository permissions, and robot accounts, while dedicated tenant-owned Quay stays exception-only.
- Accepted in this HLD: dedicated tenant Quay instances are exception patterns with explicit owner, expiry, IAM, mirroring, backup, scanning, logging, and admission-control evidence.
- Adjacent control plane: signing, SBOM, provenance, and admission-control products remain release-governance implementation choices that consume Quay evidence.
Quality Requirements
| Quality | Requirement |
|---|---|
| Availability | Quay service remains available through application replicas and highly available dependencies. |
| Recoverability | Restore procedures recover config, metadata, and blobs and prove image pull by digest. |
| Security | Human and automation access is scoped, auditable, TLS-protected, and integrated with IAM. |
| Integrity | Trusted deployment paths consume signed, traceable artifacts and policy evidence. |
| Operability | Metrics, logs, health checks, capacity signals, and runbooks are available before production cutover. |
| Scalability | Capacity model includes object-storage growth, pull traffic, metadata growth, mirror cadence, and garbage collection. |
| Portability | Cluster pull configuration can redirect to Quay without application-level image reference rewrites where possible. |
| Locality | Clusters use local platform and tenant-facing endpoints to avoid unnecessary cross-datacenter registry dependency. |
| Boundary control | Tenant traffic is routed to tenant-facing Quay endpoints, not to DCS-internal platform registry services. |
| Storage efficiency | Tenant-facing Quay stores tenant images and selected cross-datacenter copies only; platform mirror catalogs stay in the main seed and DCS-internal tiers. |
Risks and Technical Debt
| Risk | Impact | Mitigation |
|---|---|---|
| Object-bucket and database/cache runbooks missing | Service activation evidence remains incomplete. | Publish object bucket, PostgreSQL, Redis, backup, restore, and lifecycle runbooks before SBB promotion to active. |
| Scan results treated as hard policy | Security expectations become misleading. | Keep Clair as visibility and define admission gates separately. |
| Mirror catalog unmanaged | Storage growth and stale images increase quickly. | Define mirror owners, tag patterns, deletion behavior, and retention classes. |
| Main-to-DCS synchronization fails silently | Local clusters may use stale platform content. | Alert on sync freshness, failed mirrors, and local content drift. |
| Tenant-facing synchronization is over-broad | Duplicate registry data grows quickly across datacenters. | Mirror only selected repositories, tags, or promoted digests with owner, retention class, and expiry. |
| Tenant-facing Quay treated as one instance per tenant | Operational cost and storage duplication increase without improving the DCS boundary. | Use one shared tenant-facing Quay service per datacenter and apply tenant isolation through Quay organizations, teams, permissions, and robot accounts. |
| Tenant-facing endpoint collapses into DCS-internal exposure | Tenant traffic reaches services intended only for platform operations. | Keep separate routes, firewall policy, organizations, credentials, and audit streams for tenant-facing and DCS-internal tiers. |
| Dedicated tenant Quay bypasses controls | Tenant registry path becomes ungoverned. | Require exception evidence covering IAM, backup, mirroring, scanning, logging, and admission integration. |
| Exception registry paths linger | Platform has multiple registry paths after cutover. | Track retirement gates in owning workpackages; do not treat exception registries as part of the DC 3.0 target registry pattern. |
Glossary
| Term | Meaning |
|---|---|
| Quay | Red Hat enterprise OCI registry product selected as the Registry SBB. |
| Clair | Vulnerability scanning component integrated with Quay. |
| Robot account | Quay automation identity scoped to a namespace or organization. |
| Mirroring | Synchronization of selected upstream repositories, organizations, tags, or promoted digests into or between Quay instances. |
| Main seed Quay | Main ACM-governed upstream Quay tier that curates approved platform content and seeds DCS-internal platform Quay tiers. |
| DCS-internal platform Quay | Quay instance serving platform mirror and cluster lifecycle pull traffic for one AM1 or AM4 Datacenter Services cluster. |
| Tenant-facing Quay | Platform-operated Quay endpoint for application tenant organizations, CI/CD push, workload pulls, and selected cross-datacenter tenant synchronization. |
| Geo-replication | Multi-location Quay storage distribution pattern that requires separate database/cache and load-balancing design. |
| Restricted network | Network posture with limited controlled egress, as defined in adr-011-connected-vs-disconnected. |