Deploy on Azure Kubernetes Service (AKS)
Run knext on AKS with Azure Blob Storage (or MinIO) for assets, Azure Cache for Redis, and ACR.
knext runs on any Kubernetes cluster with Knative Serving, including AKS. The general control-plane install is on Operator & the NextApp CRD; the prerequisites and config walkthrough are in Getting started. This page covers only the Azure-specific pieces.
Not yet validated on a live AKS cluster. This guide is a documented procedure, not a verified run — verify it in your own environment. Treat the commands below as a starting point and confirm against your cluster.
1 · Create the cluster
az aks create \
--resource-group <rg> \
--name <cluster-name> \
--node-count 2 \
--generate-ssh-keys
az aks get-credentials --resource-group <rg> --name <cluster-name>knext itself needs no persistent volume — its compile cache is baked into the image. Stateful
components you run alongside it (Postgres, Redis) need a StorageClass that provisions writable
volumes. AKS ships the Azure Disk CSI driver as the managed-csi StorageClass:
kubectl get storageclass managed-csi2 · Install Knative, Kourier, cert-manager, and the operator
Follow Operator & the NextApp CRD for the one-command bundle install. The
prerequisites — Knative Serving + Kourier, cert-manager, and a StorageClass — are listed in
Getting started. The bundle ships a config-network ConfigMap that pins
the Kourier ingress-class; apply it with kubectl apply --server-side so it merges into Knative
Serving's own ConfigMap.
3 · Storage — Azure Blob or MinIO
knext storage accepts gcs, s3, minio, and azure. See Multi-cloud deploy
for the supported providers. On AKS, use one of:
- Azure Blob Storage:
provider: 'azure', withbucketset to the blob container name. knext uploads through theazCLI, soazmust be installed and authenticated in your build environment (for exampleaz loginandAZURE_STORAGE_ACCOUNT).publicUrlis the public URL the container is served from. - Self-hosted MinIO (S3-API, runs in-cluster):
provider: 'minio'withendpointpointing at the in-cluster MinIO Service. - An S3-compatible gateway in front of object storage:
provider: 's3'withendpointset to that gateway.
The example below uses self-hosted MinIO.
4 · Cache — Azure Cache for Redis
ISR / data cache uses Redis (cache.provider: 'redis'). Point cache.url at an Azure Cache for
Redis instance (or a self-hosted Redis Service). cache.url is required when the provider is
redis.
5 · Registry — ACR
Push the app image to Azure Container Registry, e.g. <registry>.azurecr.io/acme. Attach ACR
to the cluster (az aks update --attach-acr) so nodes can pull. The operator rejects any image
that is not digest-pinned (@sha256:…); knext deploy resolves the digest automatically.
6 · Complete knext.config.ts
import type { KnativeNextConfig } from '@getknext/core';
const config: KnativeNextConfig = {
name: 'acme',
registry: '<registry>.azurecr.io/acme',
storage: {
provider: 'minio', // self-hosted MinIO (S3-API). Use 'azure' for Azure Blob.
bucket: 'acme-assets',
endpoint: 'http://minio.minio.svc.cluster.local:9000',
publicUrl: 'https://assets.example.com/acme-assets',
accessKey: process.env.MINIO_ACCESS_KEY,
secretKey: process.env.MINIO_SECRET_KEY,
},
cache: {
provider: 'redis',
url: process.env.REDIS_URL || 'rediss://<name>.redis.cache.windows.net:6380',
keyPrefix: 'acme',
},
scaling: { minScale: 0, maxScale: 20 }, // minScale 0 = scale to zero
};
export default config;If your Redis endpoint requires TLS (Azure Cache for Redis does, on port 6380), set cache.tls: true alongside the rediss:// URL.
7 · Deploy
knext deploy --registry <registry>.azurecr.io/acmeknext deploy builds the standalone image, pushes it (resolving the digest), and applies the
NextApp CR; the operator reconciles it into a scale-to-zero Knative Service. Verify the resolved
URL with kubectl get ksvc acme -o jsonpath='{.status.url}'.
Deploy on Amazon EKS
A documented procedure for running knext on EKS — S3 for assets, ElastiCache/Redis for the cache, ECR for digest-pinned images.
Deploy on Oracle Kubernetes Engine (OKE)
The reference-validated knext deployment path — OKE with OCI Object Storage (S3-compatible) and the Kourier ingress-class fix.