Sizing
Glossary:
User workloads: User applications (e-commerce frontend, backend APIs, etc.)
SAAP workloads: Supporting applications for software lifecycle
Summary
Resource requirements for a single SAAP cluster is as follows:
Resource | Minimum | Recommended |
---|---|---|
vCPUs (m) | 60 | 76 |
Memory (Gib) | 240 | 304 |
Storage Block (Gib) | 2850 | 3450 |
Storage Snapshots (Gib) | 330 | 330 |
Storage Buckets (Backups) | 1 | 1 |
Load Balancers* | 3 | 3 |
Public/Floating IPs | 2 | 2 |
Note
- Load Balancers are only required for AWS, Azure and GCP.
Minimum
The overall minimum resource requirements are:
Machine pool role | Minimum size (vCPU x Memory x Storage) | Minimum pool size | Total vCPUs | Total Memory (GiB) | Total Storage (GiB) |
---|---|---|---|---|---|
Control plane | 8 x 32 x 350 | 3 | 24 | 96 | 1050 (Provisioned IOPS 1000) |
Infra | 8 x 32 x 300 | 3 | 24 | 96 | 900 (General Purpose SSDs) |
Worker | 4 x 16 x 300 | 3 | 12 | 48 | 900 (General Purpose SSDs) |
Grand Total | 9 | 60 | 240 | 2850 |
Recommended
The recommended resource requirements are:
Machine pool role | Minimum size (vCPU x Memory x Storage) | Minimum pool size | Total vCPUs | Total Memory (GiB) | Total Storage (GiB) |
---|---|---|---|---|---|
Control plane | 8 x 32 x 350 | 3 | 24 | 96 | 1050 (Provisioned IOPS 1000) |
Infra | 8 x 32 x 300 | 2 | 16 | 64 | 600 (General Purpose SSDs) |
Monitoring | 8 x 32 x 300 | 1 | 8 | 32 | 300 (General Purpose SSDs) |
Logging | 8 x 32 x 300 | 1 | 8 | 32 | 300 (General Purpose SSDs) |
Pipeline | 8 x 32 x 300 | 1 | 8 | 32 | 300 (General Purpose SSDs) |
Worker | 4 x 16 x 300 | 3 | 12 | 48 | 900 (General Purpose SSDs) |
Grand Total | 11 | 76 | 304 | 3450 |
Compute
3 x Control plane
The control plane manages the SAAP cluster. The control plane nodes run the control plane.
Note
- No user workloads run on control plane nodes.
2 x Infra
At least two infrastructure nodes are required for the SAAP infrastructure workloads:
SAAP component | vCPU requirement (m) | Memory requirement (GiB) |
---|---|---|
Stakater Forecastle | 50 | 0.20 |
Stakater Ingress Monitor Controller | 150 | 0.60 |
Stakater Kubehealth (SAAP components monitoring) | 150 | 0.40 |
Stakater Multi Tenant Operator | 600 | 1.20 |
Stakater Konfigurator | 20 | 0.30 |
Stakater Reloader | 20 | 0.50 |
Stakater Tronador | 100 | 0.20 |
cert-manager | 100 | 1.50 |
External Secrets operator | 50 | 0.30 |
Kubernetes replicator | 50 | 0.30 |
group-sync-operator | 50 | 0.10 |
Helm operator | 500 | 0.80 |
Nexus | 200 | 1.60 |
OpenShift GitOps | 530 | 0.50 |
OpenShift Image Registry | 50 | 0.40 |
OpenShift Router | 300 | 0.30 |
SonarQube | 350 | 1.50 |
Vault | 255 | 0.36 |
Velero | 500 | 0.15 |
Volume Expander Operator | 50 | 0.10 |
Total | 4275 | 11.61 |
Note
- No user workloads run on control plane nodes.
1 x Monitoring
Monitoring components to monitor SAAP workloads
and user workloads are deployed on monitoring nodes. The monitoring stack includes the Prometheus stack (Prometheus, Grafana and Alertmanager).
Minimum one monitoring node must be used for all production deployments. For high availability consider using two monitoring nodes.
Type of monitoring | SAAP component | vCPU requirement (m) | Memory requirement (GiB) |
---|---|---|---|
Infrastructure | |||
Alertmanager | 500 | 1.00 | |
Grafana | 50 | 0.10 | |
Node exporter | 50 | 0.50 | |
Prometheus | 2500 | 7.50 | |
Thanos | 50 | 0.20 | |
User Workloads | |||
Alertmanager | 20 | 0.25 | |
Grafana | 20 | 0.10 | |
Prometheus | 100 | 2.50 | |
Total | 3290 | 12.15 |
For more details of monitoring, please visit Creating Application Alerts.
Note
- No user workloads run on control plane nodes.
1 x Logging (optional)
Logging components aggregate all logs and store them centrally. These components run on logging nodes. The logging stack includes the EFK stack (Elasticsearch, Fluentd and Kibana).
The logging pool is optional, if there is no need for it, it will not be deployed. Logging infrastructure is still highly recommended for troubleshooting purposes.
Minimum one logging node is required. For high availability consider using three logging nodes.
SAAP component | vCPU requirement (m) | Memory requirement (GiB) |
---|---|---|
Collector | 200 | 2.0 |
Elasticsearch | 500 | 4.0 |
Fluentd | 20 | 0.6 |
Kibana | 300 | 0.5 |
Total | 1020 | 7.1 |
Note
- No user workloads run on control plane nodes.
1 x Pipeline (optional)
Pipeline nodes hold pods running for Tekton based CI/CD pipelines.
The pipeline pool is optional, if there is no need for it, it will not be deployed.
Minimum requirements for pipeline infrastructure is:
SAAP component | vCPU requirement (m) | Memory requirement (GiB) |
---|---|---|
OpenShift pipelines | 100 | 0.2 |
Note
- No user workloads run on control plane nodes.
3 x Worker
In a SAAP cluster, users run their applications on worker nodes. By default, a SAAP subscription comes with three worker nodes.
Storage
Block Storage
SAAP uses high performance disks i.e. SSDs
for storage requirements which includes:
- Boot Volumes (attached to nodes for OS)
- Persistent Volumes (Additionally attached volumes for application consumption)
Following are the storage requirements used as Persistent Volumes consumed by SAAP workloads
:
SAAP component | Volume Size (GiB) |
---|---|
Elasticsearch Logging | 300 |
Nexus | 100 |
Prometheus - Infrastructure Monitoring | 100 |
Prometheus - workload Monitoring | 100 |
SonarQube | 15 |
Vault | 10 |
Total | 625 |
Object Storage
1 x Object storage bucket
is required for keeping Backups of Kubernetes Objects.
Volume Snapshot Requirements
Volume Snapshots are backups of volumes for critical SAAP workloads
that only include Nexus
and Vault
By default backups are taken daily and are retained for 3 days. So at a given instance 3 day old backups for SAAP workloads
are kept.
SAAP component | PV size | backup frequency | Backup size (GiB) |
---|---|---|---|
Nexus | 100 | 3 | 300 |
Vault | 10 | 3 | 30 |
Total | 330 |
Network
Load Balancers
For AWS, Azure, GCP
Each SAAP cluster deploys 3 x Loadbalancers
:
-
2 x Public (for cluster API and cluster dashboard)
-
1 x Private (for control plane communication)
For OpenStack
No LoadBalancers required.
Floating IPs
For AWS, Azure, GCP
No additional Floating IPs/Public IPs are required.
For OpenStack
2 x Floating IPs
are required (for cluster API and cluster dashboard).