Scale and Production Considerations
This page addresses common questions from enterprise customers evaluating the RHACM + AMQ Broker pattern at fleet scale. The lab demonstrates the architecture with 2–3 SNO clusters; the guidance below covers what changes when scaling to hundreds or thousands of managed sites.
These are not extra lab steps.
RHACM hub sizing at scale
Red Hat Advanced Cluster Management 2.17 has been tested managing 3,500 single-node OpenShift clusters from a three-node bare-metal hub. The test configuration used 112 CPU cores and 512 GiB RAM per control-plane node.
The maximum number of managed clusters varies based on the number of policies, applications, add-ons, and reconciliation workloads. Approximate hub sizing formulas from the documentation:
-
CPU: ~50m base + ~0.05m per managed cluster
-
Memory: ~1000Mi base + ~10Mi per managed cluster
These are component-level estimates. Actual hub sizing depends on how many ManifestWorks, policies, and add-ons are active per cluster.
| Resource | Why it matters |
|---|---|
Hub sizing formulas, 3,500-cluster scale test results, and the hardware used in the reference testbed. |
|
Factors affecting hub capacity: resource allocation, storage IOPS, network latency, managed cluster complexity, number of policies, and monitoring workloads. |
Mode 1 vs Mode 2 — when do you need Global Hub?
This lab runs Mode 1 (single hub). In Mode 1 a single RHACM hub manages all edge clusters directly.
Mode 2 (Multicluster Global Hub) adds a layer above regional hubs. Each regional hub manages a subset of edge clusters, and the Global Hub aggregates compliance, inventory, and policy status across all hubs.
Decision criteria:
-
Below ~2,000 managed clusters: a single hub (Mode 1) is typically sufficient with appropriate hardware.
-
Above ~2,000 managed clusters or with geographically distributed management needs: evaluate Mode 2 to distribute the management load across regional hubs.
-
If compliance reporting must span multiple independent hub clusters: Mode 2 provides a unified view.
Mode 2 is available in this demo when deployed with --mode multi-hub (see Module 7: Global Hub).
| Resource | Why it matters |
|---|---|
Architecture, installation, importing managed hub clusters, and Grafana dashboards for fleet-of-fleets observability. |
Policy parameterization at scale
This demo uses Helm range .Values.edgeBrokers to generate one ACM Policy + Placement per edge broker entry. Each Policy targets a cluster by its edge-region label. This approach works well for a small number of regions but requires an explicit entry in values.yaml for each site.
For fleet-scale deployments (hundreds or thousands of sites), RHACM provides the PolicyGenerator — a Kustomize generator plug-in that builds ACM policies from standard Kubernetes manifests. PolicyGenerator eliminates the need for per-site YAML by combining:
-
A single
PolicyGeneratormanifest defining policy defaults and placement selectors -
Base Kubernetes manifests (Namespace, Subscription, ActiveMQArtemis CR)
-
Kustomize overlays for per-region or per-site variable substitution
This demo includes a PolicyGenerator scaffold at ztp/policygenerator/ that is not used in the lab exercises but demonstrates the production pattern.
For per-cluster variable injection, RHACM policy templates support functions like {{ fromClusterClaim }} and {{ fromConfigMap }} that resolve values from the managed cluster at policy evaluation time. This means a single policy template can render site-specific broker configurations (such as messages.STORE-{id}.# address patterns) without maintaining N separate policy objects.
| Resource | Why it matters |
|---|---|
PolicyGenerator configuration reference, Kustomize integration, and examples of generating policies from manifests. |
Observability at scale
Module 8 deploys Multicluster Observability (MCO) with a GCS-backed Thanos instance. At fleet scale, metric cardinality and storage costs become significant considerations.
Controlling metric cardinality:
MCO collects a default set of metrics from each managed cluster. You can extend or restrict collection using two ConfigMaps in the open-cluster-management-observability namespace:
-
observability-metrics-allowlist— the default metrics (read-only, cannot be modified) -
observability-metrics-custom-allowlist— add custom metrics or define collection rules
Hub AMQ is scraped by user-workload Prometheus, so the hub ConfigMap must include uwl_metrics_list.yaml as well as metrics_list.yaml. SNO AMQ uses the same UWL path: Policy policy-sno-uwl-amq-metrics sets enableUserWorkload: true on managed SNOs and places a spoke allowlist in the artemis namespace so uwl-metrics-collector can federate artemis_* into Thanos.
To add AMQ Broker metrics (artemis_*) to the custom allowlist:
apiVersion: v1
kind: ConfigMap
metadata:
name: observability-metrics-custom-allowlist
namespace: open-cluster-management-observability
data:
metrics_list.yaml: |
names:
- artemis_message_count
- artemis_messages_added
- artemis_messages_acknowledged
- artemis_connection_count
- artemis_address_memory_usage
- artemis_consumer_count
Collection rules can be defined to collect certain metrics only when conditions are met (e.g., high CPU or memory usage), reducing baseline cardinality. MCO includes a built-in SNOResourceUsage rule group for single-node OpenShift clusters.
Scrape intervals: The default Prometheus scrape interval is 30 seconds (configurable between 5s and 5m via the Cluster Monitoring Operator scrapeInterval setting). At 1,800 clusters scraping 6 AMQ metrics every 30 seconds, plan for approximately 360 time series per scrape cycle from the broker workload alone, plus the default platform metrics per cluster.
| Resource | Why it matters |
|---|---|
Custom metrics allowlist, collection rules, scrape configuration, and Thanos storage architecture. |
SNO bare-metal hardware requirements
This lab provisions SNOs on GCP using n2-standard-8 instances (8 vCPU, 32 GB RAM). For on-premises bare-metal deployments, the OpenShift 4.22 documentation specifies the following SNO minimums:
| Profile | CPU | Memory | Storage |
|---|---|---|---|
Minimum (OCP 4.22) |
4 vCPU |
16 GB RAM |
120 GB |
Recommended (SNO + AMQ Broker) |
8 vCPU |
32 GB RAM |
120 GB SSD |
| Running SNO at 4 vCPU leaves minimal headroom for workloads. For SNO running the AMQ Broker operator plus a broker instance, 8 vCPU / 32 GB RAM is the practical floor — matching the GCP instance type used in this lab. |
Bare-metal SNO provisioning uses the Assisted Installer (not Hive, which is used in this lab for GCP). The Assisted Installer supports USB boot, Redfish virtual media, and iPXE. A Baseboard Management Controller (BMC) with Redfish support is required for virtual media provisioning.
| Resource | Why it matters |
|---|---|
Minimum hardware requirements, supported platforms, BMC requirements, and CPU architecture support. |
|
On-premises SNO provisioning via USB, Redfish, or iPXE — the bare-metal alternative to Hive on GCP. |