Déployer AKKO sur Azure AKS¶
Azure Kubernetes Service 1.30+ est une cible AKKO supportée. On combine AKS Web App Routing (ou AGIC) pour l'ingress, Azure Disk CSI pour le stockage, et Workload Identity pour les appels pod → API Azure.
Prérequis¶
| Élément | Version |
|---|---|
| AKS | 1.30+ (3 × Standard_D4s_v5 minimum — monter pour OpenMetadata) |
| Azure Disk CSI | activé (défaut) |
| Web App Routing (ou AGIC) | activé sur le cluster |
| Workload Identity | activé (--enable-workload-identity à la création) |
| cert-manager | 1.16+ (ou certificats managés AKS) |
kubectl + CLI az |
configurés |
| Helm | ≥ 3.14 |
Installation en une commande¶
AKKO_DOMAIN=akko.client.example \
AKKO_VERSION=2026.04 \
AKKO_VALUES_EXTRA=helm/examples/values-aks.yaml \
bash deploy-from-harbor.sh
Spécificités AKS¶
Stockage¶
managed-csi-premium est la storage class Premium SSD Azure. Pour une
option moins chère (Standard SSD), basculer global.storageClass: managed-csi.
Azure Files (RWX) nécessite l'addon azurefile-csi ; non requis par
AKKO 2026.04.
Ingress¶
AKS "Web App Routing" est l'option NGINX managée — la plus simple et la moins chère. Pour Azure Application Gateway (layer 7 natif + WAF), installez AGIC puis surchargez :
global:
ingressClassName: "azure-application-gateway"
ingressAnnotations:
appgw.ingress.kubernetes.io/ssl-redirect: "true"
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
Workload Identity (remplace Pod Identity v1)¶
Pour les pods nécessitant un accès Azure (Key Vault, Cosmos DB) :
az identity federated-credential create \
--name akko-minio \
--identity-name akko-platform \
--resource-group <rg> \
--issuer <OIDC_ISSUER_URL> \
--subject system:serviceaccount:akko:akko-minio
Annoter le SA :
akko-minio:
serviceAccount:
annotations:
azure.workload.identity/client-id: "<managed-identity-client-id>"
Miroir ACR (images privées)¶
az acr login --name myacr
for img in cockpit postgres spark notebook trino ai-service mlflow \
airflow dbt mcp-trino mcp-openmetadata docs aden \
catalog-manager; do
skopeo copy \
docker://harbor.akko-ai.com/akko/akko-${img}:2026.04 \
docker://myacr.azurecr.io/akko/akko-${img}:2026.04
done
Surcharger global.image.registry: myacr.azurecr.io.
Vérifier¶
kubectl -n akko get pods
kubectl -n akko get ingress
az aks show -g <rg> -n <cluster> --query fqdn -o tsv
kubectl -n akko exec svc/akko-trino -c trino -- trino --execute "SHOW CATALOGS"
Dépannage¶
| Symptôme | Cause | Correctif |
|---|---|---|
| Adresse Ingress vide | Addon AKS Web App Routing absent | az aks approuting enable -g <rg> -n <cluster> |
PVC Pending |
Quota Azure Disk atteint | Portail Azure → Souscription → Quotas |
Pod FailedCreatePodSandBox avec erreur MSI |
Annotation Workload Identity absente sur le SA | Re-annoter et redémarrer le pod |
| Pull ACR en échec | AKS n'a pas de rôle pull sur l'ACR | az aks update -a monitoring,azure-keyvault-secrets-provider --attach-acr <acr> |