Environment setup
To provision the Azure infrastructure for OpenLM Platform, use Azure Kubernetes Service (AKS) and managed Azure services.
For detailed sizing and service specifications, see Requirements.
Infrastructure components
The Azure deployment uses the following managed services:
| Component | Azure service | Purpose |
|---|---|---|
| Kubernetes | Azure Kubernetes Service (AKS) | Container orchestration |
| SQL database | Azure SQL Managed Instance | Identity, operational, and reporting data |
| Cache | Azure Cache for Redis | Caching and session storage |
| Persistent storage | Azure Managed Disks | Kafka, MongoDB, and other stateful services (about 400 GB) |
Kafka and MongoDB run inside the Kubernetes cluster using Helm charts and Azure Managed Disks for persistence, rather than as Azure managed services.
Network provisioning
Use Azure Container Networking Interface (CNI) networking mode for AKS. The following table lists the network requirements:
| Item | Requirement |
|---|---|
| Virtual network (VNet) | Minimum /22 CIDR block (for example, 10.0.0.0/22) |
| IP capacity | 1,024 addresses, of which about 400 are needed for pods, nodes, and growth |
| Planned pods | About 143 |
| Planned nodes | 6–7 |
AKS cluster
This section covers the node pools and node labels for the AKS cluster.
Node pools
Create 3 node pools:
| Node pool | Purpose | VM size | Count | Max pods per node |
|---|---|---|---|---|
| System | Kubernetes system pods | 4 vCPU, 16 GB RAM (for example, Standard_D4ds_v4) | 2 | 30 |
| Main | Core application workloads | 4 vCPU, 16 GB RAM | 2 | 70 |
| Reporting | Reporting workloads | 4 vCPU, 16 GB RAM | 3 | 30 |
Use Kubernetes version 1.32.9 or another AKS-supported version matching your release policy.
Node labels
Apply labels to nodes for workload scheduling. The OpenLM Platform chart expects openlm.com/role=main on the main nodes and openlm.com/role=spark on the reporting nodes:
kubectl label node <system-node> openlm.com/role=system
kubectl label node <main-node-1> openlm.com/role=main
kubectl label node <main-node-2> openlm.com/role=main
kubectl label node <report-node-1> openlm.com/role=spark
kubectl label node <report-node-2> openlm.com/role=spark
kubectl label node <report-node-3> openlm.com/role=spark
Managed services
This section lists the requirements for each managed Azure service.
Azure SQL Managed Instance
The following table lists the SQL Managed Instance requirements:
| Setting | Requirement |
|---|---|
| Tier | General Purpose |
| Compute | 4 vCores minimum |
| Storage | 256 GB minimum |
| Scaling | Increase based on user volume, reporting load, and data retention |
Azure Cache for Redis
The following table lists the Azure Cache for Redis requirements:
| Setting | Requirement |
|---|---|
| Tier | C2 |
| Cache size | 2.5 GB |
Azure Managed Disks
Managed disks are provisioned automatically by AKS when storage classes are configured. Approximately 400 GB total is needed for Kafka, MongoDB, and other stateful services.
In-cluster infrastructure services
Kafka and MongoDB are not provisioned as Azure managed services on this path. They run inside the AKS cluster, backed by Azure Managed Disks. Create their namespace first by running this command:
kubectl create namespace openlm-infrastructure
Kafka
Deploy Kafka from the Helm chart in the deployment package by running this command:
helm install kafka <kafka-chart>.tgz -f values.yaml -n openlm-infrastructure
Set the storage class and per-broker volume size in values.yaml before installing. Allow roughly 250 GB per broker.
Alternatively, use Confluent Cloud through the Azure Marketplace and point OpenLM Platform at its bootstrap servers instead of installing in-cluster. Azure Event Hubs with the Kafka protocol layer isn't supported.
MongoDB
Deploy MongoDB inside the Kubernetes cluster using the Helm chart provided in the deployment package. Azure Managed Disks provide the underlying persistent storage.
helm install mongodb <mongodb-chart>.tgz -f values.yaml -n openlm-infrastructure
MongoDB Atlas through the Azure Marketplace is a supported managed alternative.
Verify the pods
Run this command:
kubectl get pods -n openlm-infrastructure
Before you continue, check that all pods show Running.
Next steps
After you provision the infrastructure:
- Configure
kubectlto connect to the AKS cluster:az aks get-credentials --resource-group <resource-group> --name <cluster-name> - Complete the Prerequisites checklist.
- Proceed to Platform installation.
The documentation team might draft this page using a large language model. A technical writer reviews every page and verifies it against the product before publishing it. A human makes the final decision.