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 toolshelm (v3.8+), kubectl, openssl on 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#

TierDaily ingestAWS (EKS)Azure (AKS)Total capacity
Evaluationup to 25 GB/day3 × m6i.xlarge3 × D4s_v512 vCPU / 48 GB
Standardup to 500 GB/day4 × m6i.2xlarge4 × D8s_v532 vCPU / 128 GB
High volume~1 TB/day6 × m6i.2xlarge6 × D8s_v548 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/config
  • Add 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, openssl installed
  • [ ] 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.