Skip to content

Cloud (Azure)

The Consystence cloud tier runs on Microsoft Azure in the australiaeast region. It hosts the auth service, platform API, fleet analytics, and the type marketplace.

Resource layout

Resource Type Name
Resource Group rg-consystence-dev-aue
Container Apps Environment Azure Container Apps cae-consystence-dev-aue
Container Registry Azure Container Registry crconsystencedevaue
Database PostgreSQL Flexible Server psql-consystence-dev-aue
Virtual Network VNet vnet-consystence-dev-aue

Info

Development uses Azure Container Apps for simplicity. Production deployments are planned to migrate to AKS (Azure Kubernetes Service) for finer-grained control over scaling and networking.

Network architecture

The VNet is divided into purpose-specific subnets:

Subnet CIDR Purpose
snet-apps 10.0.0.0/23 Container Apps Environment
snet-postgres 10.0.2.0/24 PostgreSQL Flexible Server (VNet-integrated)
snet-pe 10.0.3.0/24 Private endpoints
snet-platform 10.0.4.0/24 Platform services (Key Vault, monitoring)

Database access

PostgreSQL is VNet-integrated with no public access. All connections go through the private VNet. The Container Apps environment is peered with the database subnet.

Container images

Services are packaged as container images and pushed to ACR:

Image Service
consystence-auth Authentication and identity
consystence-api Platform API
consystence-fleet Fleet analytics and ML model management
consystence-marketplace Type marketplace API

CI/CD

Deployments are automated through GitHub Actions with OIDC federated credentials — no stored secrets for Azure authentication.

graph LR
    GH[GitHub Push] --> GA[GitHub Actions]
    GA -->|OIDC| Azure[Azure]
    GA -->|Build & Push| ACR[Container Registry]
    ACR -->|Deploy| CA[Container Apps]

Pipeline steps

  1. Builddotnet build and dotnet test for the service.
  2. Containerdocker build and push to ACR.
  3. Deploy — update the Container App revision to the new image tag.
  4. Verify — health check against the deployed service.

OIDC federation

GitHub Actions authenticate to Azure using OIDC federated credentials configured on an Azure AD app registration. No AZURE_CLIENT_SECRET is stored in GitHub — the Actions runner exchanges its GitHub-issued OIDC token for an Azure access token.

Infrastructure as code

All Azure infrastructure is defined using Azure Bicep templates in the consystence-infra repository:

consystence-infra/
├── main.bicep              # Orchestrator
├── modules/
│   ├── container-apps.bicep
│   ├── postgres.bicep
│   ├── acr.bicep
│   ├── vnet.bicep
│   └── keyvault.bicep
└── parameters/
    ├── dev.bicepparam
    └── prod.bicepparam

Deploy with:

az deployment group create \
  --resource-group rg-consystence-dev-aue \
  --template-file main.bicep \
  --parameters parameters/dev.bicepparam