Launch Week 02 wrapped — explore all five launches

Self-Hosting on Azure

Included on the Enterprise plan. Book a demo, opens in a new tab. Not included on the Team plan. Not included on the Starter plan. Not included on the Free plan.

Run the full Confident AI platform on Azure, inside your own subscription and region. A published Terraform module stands up an AKS cluster, a managed PostgreSQL Flexible Server, and a Storage account with Blob containers, and the confident-ai Helm chart deploys the application on top. On Azure the app reaches Blob storage through a connection string held as a secret.

You run it in two steps: Infrastructure provisions the cloud resources with Terraform, then Deploy with Helm installs the app and exposes it over HTTPS. Plan for roughly 15 to 20 minutes of Terraform time plus a few minutes for the chart to come up.

Azure reference architecture

What Terraform provisions

The module deploys into a resource group and VNet you already have. It never creates them.

AKS

A private cluster with a worker node pool, OIDC issuer and Workload Identity enabled.

PostgreSQL Flexible Server

The app's primary database, VNet-integrated and private, with high availability.

Azure Storage

A Storage account with two Blob containers, one for test cases and one for payloads.

Connection-string access

The app reaches Blob storage with a connection string held as a secret.

Azure Function code executor

Required for code-based and transformer metrics: a Function that runs the mirrored image.

Key Vault + Managed Redis

Recommended: a vault for the External Secrets Operator, and managed Redis.

ClickHouse runs inside the cluster (the Helm chart installs it). The recommended setup keeps secrets in Key Vault and runs Redis on Azure Managed Redis; in-cluster Redis and a Kubernetes Secret remain available as a simpler option. Cluster add-ons such as an ingress controller or the External Secrets Operator are your choice and are not installed by Terraform.

How it fits together

  • Blob uses a connection string; the rest is keyless. The app reaches Blob storage with AZURE_STORAGE_CONNECTION_STRING, held as a secret. AKS still has Workload Identity enabled, which the External Secrets Operator uses to read Key Vault through a federated credential.
  • The data plane is private. AKS nodes and the Flexible Server sit in the VNet, with the database on a delegated subnet and a private DNS zone. You choose whether the cluster API endpoint is public (handy for kubectl and helm from your laptop) or private-only.
  • Traffic flows one way in. Your applications send traces to confident-otel, which writes them to ClickHouse. The dashboard and API read from the Flexible Server and ClickHouse. Evaluations run in confident-evals and its workers, calling your model provider and the Azure Function sandbox for code and transformer metrics. Datasets and payloads live in Blob storage.

Deployed services

The Helm chart installs these workloads into the confident-ai namespace:

ServiceRole
confident-backendCore API
confident-frontendThe dashboard
confident-evalsEvaluation service
confident-evals-workerAsync evaluation jobs
confident-ingestion-workerTrace ingestion
confident-workerBackground jobs
confident-otelOTLP and trace collector
ClickHouse and KeeperTrace and span store
RedisCache and queues (in-cluster unless you use Azure Managed Redis)

See Scaling for how each of these grows with load.

Defaults

ComponentDefault
Node pool4 x Standard_D8s_v5
Regioncentralus
Cluster endpointPrivate (confident_public_aks = true to reach it from your machine)
PostgreSQLGP_Standard_D4s_v3, private, high availability
Storage classmanaged-csi (in-cluster ClickHouse and Redis disks)

Everything above is overridable in the Terraform module. See the module inputs for the full list.

The module

The module is published to the Terraform Registry and its source lives on GitHub.

Prerequisites

  • terraform (≥ 1.5), the az CLI, kubectl, helm (≥ 3.8), and docker (to mirror the code sandbox image).
  • az login, with the subscription set for the provider: export ARM_SUBSCRIPTION_ID=$(az account show --query id -o tsv).
  • From Confident AI: image pull credentials and a CONFIDENT_LICENSE_KEY (see Deploy with Helm).

Next steps

Planning a private deployment?Get a clear deployment path across cloud, security, and rollout needsTalk to deployment team
Built byConfident AI