Aller au contenu

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>