Azure Deployment
Manual infrastructure provisioning on Azure for the MCM Platform.
Azure Infrastructure Provisioning
To deploy the required 3-tier network infrastructure on Azure, follow the guided console setup below to manually provision your Resource Group, virtual networks, subnets, and virtual machines.
1. Console Setup
If you prefer configuring resources manually in your Azure Portal, proceed with the following steps.
Virtual Network & Subnets
- Create the Resource Group:
- Navigate to the Azure Portal -> Resource Groups -> Create. Name it
mcm-rgand select your target region.
- Navigate to the Azure Portal -> Resource Groups -> Create. Name it
- Create the Virtual Network (VNet):
- Search for Virtual Networks -> Create.
- Select
mcm-rg, name the networkmcm-vnet, and set the address space to10.0.0.0/16.
- Create Subnets:
Add subnets inside
mcm-vnet(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 Azure subnets using one of the following methods:
- Azure NAT Gateway (Standard): Associate an Azure NAT Gateway resource with your subnets (
mcm-subnet-app,mcm-subnet-db). - Network Virtual Appliance (NVA) / Azure Firewall: Configure User-Defined Routes (UDR) to route
0.0.0.0/0traffic through your internal NVA or Azure Firewall. - Corporate Proxy: Route outbound application traffic via an HTTP/HTTPS proxy.
Virtual Machine Deployment
- Availability Zone (Optional): You can place the VMs in different Availability Zones (e.g., VM1 in Zone 1, VM2 in Zone 2, VM3 in Zone 3) to ensure high availability and physical fault tolerance, or keep them in the default/same zone.
- Deploy VM1 (
mcm-access):- Place in
mcm-subnet-access. Associate a Public IP address with its NIC if user-facing directly, or use a private IP if behind an internal load balancer / VPN. - Image: Ubuntu Server 24.04 LTS (x86_64).
- VM Size:
Standard_D2als_v6.
- Place in
- Deploy VM2 (
mcm-app) & VM3 (mcm-db):- Deploy VM2 inside
mcm-subnet-app. Size:Standard_D4ads_v6. - Deploy VM3 inside
mcm-subnet-db. Size:Standard_D4ads_v6. - Set public IP to None on both network interfaces to isolate them.
- Deploy VM2 inside
Network Security Groups (NSG) & Port Rules
Configure the following rules on your Azure Network Security Groups (NSGs):
| 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 VMs are provisioned on Azure, you are ready to configure the cluster.
Proceed to Section 3: Installation Procedure in the main deployment guide to continue.