On-Prem Deployment Prerequisites
Below is everything needed before deploying Middleware on premise. The installation guide is shared by the Middleware team during onboarding.
At a glance, you will need:
- From Middleware team — registry username + token, installation guide
- Kubernetes cluster — v1.25+, sized as per the table below, kubeconfig with cluster-admin access
- CLI tools —
helm(v3.8+),kubectl,opensslon the machine running the install - Storage class — a default storage class with dynamic provisioning (~260 GB of volumes are created)
- Object storage — S3 bucket / Blob container with access credentials
- Domain — one domain for Middleware, used by UI and agents (example:
mw.your-company.com) - SSL — certificate and key files for that domain
- Network egress — Middleware registry, public container registries, your object storage,
app.middleware.io(emails) - Credentials — owner login + datastore passwords, decided before install
Cluster Sizing#
| Tier | Daily ingest | AWS (EKS) | Azure (AKS) | Total capacity |
|---|---|---|---|---|
| Evaluation | up to 25 GB/day | 3 × m6i.xlarge | 3 × D4s_v5 | 12 vCPU / 48 GB |
| Standard | up to 500 GB/day | 4 × m6i.2xlarge | 4 × D8s_v5 | 32 vCPU / 128 GB |
| High volume | ~1 TB/day | 6 × m6i.2xlarge | 6 × D8s_v5 | 48 vCPU / 192 GB |
- Add one 8-core node per additional 100 GB/day beyond the table.
- No burstable instances (
t2/t3/B-series) in production. - Node root disk: 100 GB per node (50 GB is enough for the evaluation tier).
- Optional: a dedicated database node pool — 1 node, 8 core / 32 GB, taint
dedicated=database:NoSchedule. - A load balancer is assigned automatically to Middleware's ingress on deploy.
Cloud-Specific Prerequisites#
AWS (EKS)#
Make sure the EBS storage driver addon is installed.
Storage class: verify there is one storage class when you create the cluster and ensure it's marked as default.
Keep all default settings which AWS suggests while creating the cluster for permissions and roles.
To get kubeconfig, run this in cloudshell:
1aws eks update-kubeconfig --region {{region_in_which_cluster_deployed}} --name {{your_cluster_name}} 2cat /home/cloudshell-user/.kube/configAdd users in cluster IAM access entries (Click on cluster > Access tab).
S3 bucket to store telemetry data, and an IAM user (access key ID + secret) that can access only this bucket. Attach this policy to that user:
1{ 2 "Version": "2012-10-17", 3 "Statement": [{ 4 "Effect": "Allow", 5 "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket", "s3:AbortMultipartUpload", "s3:ListBucketMultipartUploads"], 6 "Resource": ["arn:aws:s3:::YOUR_BUCKET", "arn:aws:s3:::YOUR_BUCKET/*"] 7 }] 8}
Azure (AKS)#
- A storage account, its key and secret.
- Blob containers to store data.
- Get kubeconfig from cloudshell of Azure.
Bare Metal#
- A default storage class with dynamic provisioning (local-path, Longhorn, Rook).
- MetalLB or similar to assign load balancer IPs.
- 500 GB - 2 TB extra disk for telemetry storage (S3-compatible storage runs in cluster).
Credentials#
⚠️ Decide all passwords before the first install. Changing them after install needs a manual rotation procedure.
- Owner email + password — first UI login. Use a real inbox — the activation email goes there.
- Datastore passwords — full list in the installation guide.
- Password rules — minimum 8 characters, letters and digits (not only numbers), always in quotes in YAML.
Checklist#
- [ ] Registry credentials and installation guide received
- [ ] Cluster created as per sizing table, kubeconfig working with cluster-admin
- [ ]
helm,kubectl,opensslinstalled - [ ] Default storage class present
- [ ] Bucket/container created with access credentials
- [ ] Domain and SSL certificate ready
- [ ] Outbound access approved
- [ ] All passwords decided
Need assistance or want to learn more about Middleware? Get in touch with us via our Contact Us or join our Slack channel.