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 SSD) |
Worker | 4 x 16 x 300 | 3 | 12 | 48 | 900 (General Purpose SSD) |
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 SSD) |
Monitoring | 8 x 32 x 300 | 1 | 8 | 32 | 300 (General Purpose SSD) |
Logging | 8 x 32 x 300 | 1 | 8 | 32 | 300 (General Purpose SSD) |
Pipeline | 8 x 32 x 300 | 1 | 8 | 32 | 300 (General Purpose SSD) |
Worker | 4 x 16 x 300 | 3 | 12 | 48 | 900 (General Purpose SSD) |
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).