AWS Deployment
Manual infrastructure provisioning on AWS for the MCM Platform.
AWS Infrastructure Provisioning
To deploy the required 3-tier network infrastructure on AWS, follow the guided console setup below to manually provision your VPC, subnets, gateways, security groups, and EC2 instances.
1. Console Setup
If you prefer configuring resources manually in your AWS Management Console, proceed with the following steps.
VPC & Subnets
- Create the VPC:
- Navigate to VPC -> Your VPCs -> Create VPC.
- Select VPC only, set IPv4 CIDR to
10.0.0.0/16, and name itmcm-vpc.
- Create Subnets:
Navigate to VPC -> Subnets -> Create subnet. Select
mcm-vpcand create subnets (a single subnet can be used, or three subnets for strict tiering):mcm-subnet-access: CIDR10.0.1.0/24(Hosts Access Gateway Node VM1). (Can be public or private depending on your network design).mcm-subnet-app: CIDR10.0.2.0/24(Hosts App Node VM2).mcm-subnet-db: CIDR10.0.3.0/24(Hosts Database Node VM3).
Outbound Internet Access Options
Depending on your enterprise cloud policies, configure outbound internet connectivity for your subnets using one of the following methods:
- AWS NAT Gateway (Standard): Create an AWS NAT Gateway in a public subnet with an Elastic IP, and route
0.0.0.0/0traffic frommcm-subnet-appandmcm-subnet-dbto it. - Network Firewall / Transit Gateway: Route outbound traffic through an AWS Network Firewall, Third-Party Firewall appliance, or Transit Gateway.
- Corporate Proxy / VPC Endpoints: Route application outbound traffic via an HTTP/HTTPS proxy or AWS VPC Interface/Gateway Endpoints.
EC2 Instance Deployment
- Availability Zone (Optional): You can place the instances in different Availability Zones (e.g., VM1 in
us-east-1a, VM2 inus-east-1b, VM3 inus-east-1c) for high availability and fault tolerance.
- Deploy VM1 (
mcm-access):- Subnet:
mcm-subnet-access. Assign a public IP if VM1 is directly internet-facing, or keep it on a private IP if accessed via an internal load balancer, VPN, or corporate network. - AMI: Ubuntu Server 24.04 LTS (x86_64).
- Instance Type:
c7ia.flex.large(2 vCPU, 4GB RAM) or equivalent.
- Subnet:
- Deploy VM2 (
mcm-app) & VM3 (mcm-db):- Deploy VM2 inside
mcm-subnet-app. Type:c7ia.flex.xlarge(4 vCPU, 16GB RAM). - Deploy VM3 inside
mcm-subnet-db. Type:c7ia.flex.xlarge(4 vCPU, 16GB RAM). - Keep VM2 and VM3 on private IPs without public IP assignment.
- Deploy VM2 inside
Security Group Port Rules
Configure the following rules on your AWS Security Groups:
| Port | Protocol | Source | Destination | Purpose |
|---|---|---|---|---|
| 22 | TCP | Admin workstation | VM1 | Administrative SSH access |
| 22 | TCP | VM1 | VM2, VM3 | Installer SSH tunnel for deployment |
| 80 | TCP | Users / Any | VM1 | HTTP (auto-redirects to HTTPS) |
| 443 | TCP | Users / Any | VM1 | Primary HTTPS gateway |
| 2377 | TCP | VM2, VM3 | VM1 | Cluster management |
| 7946 | TCP + UDP | All VMs | All VMs | Service discovery & gossip protocol |
| 4789 | UDP | All VMs | All VMs | VXLAN overlay network (container-to-container traffic) |
| 1514 | TCP | VM1, VM2 | VM3 | Wazuh log collection (Required when SecOps module is enabled) |
| 1515 | TCP | VM1, VM2 | VM3 | Wazuh agent enrollment (Required when SecOps module is enabled) |
Outbound Connection Requirements
The MCM platform requires outbound HTTPS (port 443) connectivity to the following main domains:
| # | Destination | Required On | Phase | Purpose |
|---|---|---|---|---|
| 1 | ubuntu.com | VM1, VM2, VM3 | Installation | System package updates (apt-get) |
| 2 | docker.com, docker.io | VM1, VM2, VM3 | Installation / Runtime | Docker Engine package repository & container images |
| 3 | github.com | VM1, VM2, VM3 | Installation / Runtime | yq binary download & GitHub API integration |
| 4 | registry.mcm.revdau.ai | VM1 | Installation | MCM deployment archive download |
| 5 | digicert.com | VM1 | Installation | TLS certificate chain validation |
| 6 | azure.com, windows.net, microsoftonline.com | VM2 | Runtime | Azure Cloud management APIs, Entra ID & cost reports |
| 7 | amazonaws.com, amazon.com, aws.com | VM2 | Runtime | AWS Cloud management & STS APIs |
| 8 | frankfurter.app | VM2 | Runtime | Currency exchange rates (FinOps) |
Understanding the Connection Phase:
- Installation: Outbound access required only during initial platform setup/installation to download system packages and binary dependencies.
- Runtime: Outbound access required persistently while the platform is running for cloud API synchronization, inventory management, and cost metric reporting.
2. Next Steps
Once your network infrastructure and instances are provisioned on AWS, you are ready to configure the cluster.
Proceed to Section 3: Installation Procedure in the main deployment guide to continue.