Déployer AKKO sur Amazon EKS¶
AKKO tourne sur EKS 1.30+ avec AWS Load Balancer Controller (ALB), EBS CSI pour le stockage bloc, et IAM Roles for Service Accounts (IRSA) pour des permissions AWS fines.
Prérequis¶
| Élément | Version |
|---|---|
| EKS | 1.30+ (3 nœuds, m6i.large minimum — plus pour OpenMetadata) |
| AWS Load Balancer Controller | 2.9+ installé dans le cluster |
| EBS CSI Driver | installé (addon AWS) |
| cert-manager | 1.16+ pour TLS (ou utiliser ACM directement) |
| external-dns | optionnel, pour enregistrements Route 53 automatiques |
kubectl + CLI aws |
configurés contre le cluster |
| Helm | ≥ 3.14 |
Configuration IAM / IRSA (one-time)¶
Créer les politiques IRSA pour tout composant nécessitant un accès AWS. AKKO n'en a pas besoin par défaut, mais un mirror object storage → S3 ou EFS → akko-docs (optionnel) en aurait besoin.
# Exemple : donner lecture S3 à un sidecar de stockage objet
eksctl create iamserviceaccount \
--cluster mon-cluster-eks \
--namespace akko \
--name akko-minio \
--attach-policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess \
--approve
Installation en une commande¶
AKKO_DOMAIN=akko.client.example \
AKKO_VERSION=2026.04 \
AKKO_VALUES_EXTRA=helm/examples/values-eks.yaml \
bash deploy-from-harbor.sh
Spécificités EKS¶
Stockage¶
AKKO utilise gp3-csi (SSD, RWO, moins cher que gp2). L'EFS CSI pour RWX
n'est pas requis par AKKO 2026.04 (tous les PVC sont en RWO). Pour
activer le RWX plus tard, installer l'addon aws-efs-csi-driver et
basculer akko-docs.persistence.accessMode: ReadWriteMany.
Ingress ALB¶
AKKO 2026.04 injecte ces annotations ALB sur chaque Ingress :
alb.ingress.kubernetes.io/scheme: "internet-facing"
alb.ingress.kubernetes.io/target-type: "ip"
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/ssl-redirect: "443"
Pour des ALB internes, positionnez
ingressAnnotations."alb.ingress.kubernetes.io/scheme": internal.
Miroir ECR privé¶
Si votre cluster EKS ne peut pas joindre harbor.akko-ai.com (VPC isolé),
mirrorrez vers ECR :
aws ecr create-repository --repository-name akko/akko-cockpit
for img in cockpit postgres spark notebook trino ai-service mlflow \
airflow dbt mcp-trino mcp-openmetadata docs aden \
catalog-manager; do
aws ecr create-repository --repository-name akko/akko-${img} 2>/dev/null || true
skopeo copy \
docker://harbor.akko-ai.com/akko/akko-${img}:2026.04 \
docker://<compte>.dkr.ecr.<région>.amazonaws.com/akko/akko-${img}:2026.04
done
Puis surcharger :
Leviers coûts¶
gp3-csià la place degp2→ ~20 % d'économie- Un ALB par
Ingresspar défaut ; grouper les routes sous un seul ALB en partageantalb.ingress.kubernetes.io/group.name - Activer Cluster Autoscaler ou Karpenter pour les jobs en rafale (Spark, Airflow)
Vérifier¶
kubectl -n akko get pods
kubectl -n akko get ingress
aws elbv2 describe-load-balancers --region <région> --query 'LoadBalancers[*].DNSName'
kubectl -n akko exec svc/akko-trino -c trino -- trino --execute "SHOW CATALOGS"
Dépannage¶
| Symptôme | Cause | Correctif |
|---|---|---|
| Adresse Ingress vide | AWS LBC non installé / pas dans ce namespace | kubectl -n kube-system get deploy aws-load-balancer-controller |
PVC reste en Pending |
EBS CSI non installé | aws eks describe-addon --addon-name aws-ebs-csi-driver |
Pod Init:CreateContainerConfigError |
Annotation IRSA mal formée | kubectl describe sa -n akko akko-<svc> |
| 503 via ALB | Target group unhealthy, readiness probe KO | kubectl describe pod + vérifier readiness |
Image pull 403 ECR |
IRSA manque AmazonEC2ContainerRegistryReadOnly sur le rôle du node |
aws iam list-attached-role-policies --role-name <node-role> |