Skip to main content
This is a practical AKS runbook with one clear order:
  1. Do a complete default install end-to-end.
  2. Do a complete managed-services install end-to-end.
  3. Terraform notes last.

0) Install and verify tools

macOS

Windows (PowerShell)

Use winget:
Or use Chocolatey:

Verify tools

1) Sign in to Azure

During az login, Azure CLI may ask you to choose a subscription by index (for example 1 or 2). That is expected.

2) Use one test profile for the whole guide

Use these same variables throughout this page:

3) Create and connect to AKS (end-to-end first section)

Time guide (normal ranges)

  • Resource group create: ~5-15 seconds
  • AKS create (3 nodes): ~4-8 minutes
  • Get credentials + node check: ~10-30 seconds

4) Path A - default chart install (in-cluster Postgres + Redis)

This is the fastest way to validate Convoy on AKS.
Check health:

Time guide

  • Helm install: ~30-90 seconds
  • Pods fully ready (first boot): ~2-6 minutes

5) Path B - managed Postgres + Redis install (same AKS cluster)

Use a separate namespace/release so you can test both paths cleanly.

5.1 Provision managed services in Azure

Fetch connection values:

Time guide

  • Postgres Flexible Server create: ~5-12 minutes
  • Redis create: ~5-12 minutes
Azure Redis can be slower than other steps. Waiting up to ~15 minutes can still be normal.
Check Redis provisioning status while you wait:

5.2 Create Kubernetes secrets

5.3 Create values-aks.yaml

Get the exact values first:
Map them like this:
  • externalDatabase.host -> Postgres FQDN from Azure
  • externalDatabase.port -> 5432
  • externalDatabase.database -> convoy (or your created DB name)
  • externalDatabase.username -> Postgres admin/user from Azure
  • externalDatabase.secret -> convoy-postgres (Kubernetes Secret with DB password)
  • externalRedis.host -> Redis hostname from Azure
  • externalRedis.port -> 6380 (TLS)
  • externalRedis.scheme -> rediss
  • externalRedis.secret -> convoy-redis (Kubernetes Secret with Redis key/password)
values-aks.yaml
Sample with real-looking values:

5.4 Install managed release

Verify:

6) Troubleshooting (AKS-specific)

Postgres or Redis connection failures

Check:
  • values-aks.yaml host/port/scheme values
  • Secret names and passwords (convoy-postgres, convoy-redis)
  • AKS outbound network access to Postgres/Redis
  • TLS settings (sslmode=require for Postgres, rediss + 6380 for Redis TLS)

Migration error: pgcrypto is not allow-listed

If you see this during wait-for-migrate: ERROR: extension "pgcrypto" is not allow-listed for users in Azure Database for PostgreSQL run:
Then restart managed pods:

FailedAttachVolume / LinkedAuthorizationFailed

Grant the failing identity role on the AKS node resource group:

7) Upgrade and cleanup

Upgrade managed release:

8) Test both installs

Run these checks so you can confirm both releases are healthy.

8.1 Check pods and rollouts

Expected result: all pods Running and all rollout checks report successfully rolled out.

8.2 Probe default release health endpoints

In another terminal:
Expected result: HTTP 200 on all four endpoints.

8.3 Probe managed release health endpoints

In another terminal:
Expected result: HTTP 200 on all four endpoints.

8.4 Optional: check recent warning events

You might see old startup warnings from earlier retries. Focus on current pod health and endpoint responses.

8.5 Open and log into each install

Port-forward the default release:
Then open:
  • http://127.0.0.1:18080
Port-forward the managed release:
Then open:
  • http://127.0.0.1:18081
For default login credentials, use the credentials shown in the Kubernetes login section. The same default login flow applies to the managed release unless you changed auth settings.

9) Terraform (last)

If you use Terraform, provision these first:
  • AKS cluster
  • PostgreSQL server + convoy database
  • Redis instance
  • Networking rules for AKS to reach Postgres/Redis
Then reuse sections 5.2 -> 8 from this page (same Helm and values flow).

10) Clean up test installs

10.1 Remove Kubernetes releases and namespaces

10.2 Remove Azure test infrastructure

If you used the test profile from this guide, delete the whole resource group:
Deletion can take a while. For AKS + Postgres + Redis test stacks, 20-45 minutes is common.
Monitor progress:
For continuous polling:
Optional: wait until Azure confirms the resource group is fully removed:
When deletion is complete, az group exists returns false.