Déploiement Kubernetes¶
Déployez AKKO sur n'importe quel cluster Kubernetes en utilisant le chart Helm umbrella officiel. Kubernetes est la méthode de déploiement principale et recommandée pour AKKO -- aussi bien pour le développement local (via k3d) que pour les environnements de production avec haute disponibilité, mise à l'échelle horizontale et opérations automatisées.
Pourquoi Kubernetes ?¶
| Capacité | Kubernetes |
|---|---|
| Haute disponibilité | Multi-nœuds, anti-affinité de pods |
| Mise à l'échelle horizontale | HPA, replica sets |
| Mises à jour progressives | Déploiements sans interruption |
| Gestion des secrets | K8s Secrets, Vault, Sealed Secrets |
| Certificats TLS | cert-manager (Let's Encrypt) |
| Stockage | CSI, volumes persistants |
| Supervision | kube-prometheus-stack, métriques natives |
| Multi-tenancy | Namespaces, RBAC, quotas |
| Ordonnancement GPU | Device plugin, sélecteurs de nœuds |
Prérequis¶
Avant de déployer AKKO sur Kubernetes, assurez-vous de disposer de :
| Outil | Version | Objectif |
|---|---|---|
kubectl |
1.28+ | Gestion du cluster |
helm |
3.12+ | Déploiement de charts |
| Cluster Kubernetes | 1.28+ | Toute distribution conforme CNCF |
| cert-manager | 1.13+ | Automatisation des certificats TLS (optionnel) |
| Classe de stockage | Toute | Provisionnement PVC pour les services avec état |
Dimensionnement du cluster
Pour le profil minimal (services de base uniquement) : 8 CPU, 16 Go de RAM. Pour le profil standard (tout sauf governance) : 12 CPU, 24 Go de RAM. Pour le profil governance (inclut OpenMetadata) : 16 CPU, 32 Go de RAM.
Démarrage Rapide avec Helm¶
1. Ajouter les Dépôts Helm¶
helm repo add traefik https://traefik.github.io/charts
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add minio https://charts.min.io/
helm repo add trino https://trinodb.github.io/charts
helm repo add apache-airflow https://airflow.apache.org
helm repo add superset https://apache.github.io/superset
helm repo add jupyterhub https://hub.jupyter.org/helm-chart/
helm repo add prometheus https://prometheus-community.github.io/helm-charts
helm repo add grafana https://grafana.github.io/helm-charts
helm repo add openmetadata https://open-metadata.github.io/openmetadata-helm-charts
helm repo update
2. Préparer votre Fichier Values¶
Partez de l'un des exemples fournis :
Réplicas uniques, petits PVC, TLS auto-signé. Adapté aux ordinateurs portables et à la CI.
Réplicas HA, tailles de PVC production, TLS cert-manager, affinité de nœuds.
Pré-configuré pour OVHcloud Managed Kubernetes avec la classe de stockage
csi-cinder-high-speed et les annotations LoadBalancer OVH.
Éditez my-values.yaml pour définir au minimum :
global.domain-- votre domaine DNS (ex. :akko.example.com)- Les mots de passe des bases de données (PostgreSQL, object storage, Keycloak)
- Le nom de l'émetteur TLS (si vous utilisez cert-manager)
3. Installer¶
4. Vérifier¶
# Surveiller le démarrage des pods
kubectl -n akko get pods -w
# Vérifier que tous les services ont des endpoints
kubectl -n akko get svc
# Ouvrir le cockpit (une fois le DNS configuré)
open https://akko.example.com
Tous les pods devraient atteindre le statut Running dans les 5 à 10 minutes lors de la première installation
(les images de conteneurs sont tirées depuis des registres publics).
Choisir un Profil de Déploiement¶
AKKO prend en charge trois profils de déploiement, contrôlés en activant ou désactivant
les sous-charts dans votre values.yaml :
Minimal¶
Plateforme de données de base uniquement. Idéal pour le développement local, les tests CI/CD ou les environnements à ressources limitées.
Activé : PostgreSQL, object storage, Polaris, Trino, Spark, Airflow, Superset, JupyterHub, Keycloak, Cockpit, Docs, Prometheus, Dashboards
Désactivé : OpenMetadata, OpenSearch, logs layer, Ollama
Ressources : ~8 Go de RAM, ~4 cœurs CPU
Standard (par défaut)¶
Plateforme complète avec supervision et capacités IA. Point de départ recommandé pour les équipes évaluant AKKO.
Également activé : Ollama (LLM local), logs layer (agrégation des logs), log shipper, Alertmanager
Ressources : ~20 Go de RAM, ~12 cœurs CPU
Governance¶
Tout inclus, y compris le catalogue de données (OpenMetadata) et le moteur de recherche (OpenSearch). Pour les organisations ayant besoin de lignage des données, tests de qualité, gestion de glossaire et gouvernance des produits de données.
Également activé : OpenMetadata Server, OpenMetadata Ingestion, OpenSearch
Ressources : ~28 Go de RAM, ~16 cœurs CPU
Le profil governance est gourmand en ressources
OpenMetadata + OpenSearch nécessitent environ 4 Go de RAM supplémentaires. Sur les petits clusters, cela peut provoquer des OOM kills. Dédiez des nœuds spécifiques ou augmentez la capacité du cluster avant d'activer ce profil.
Guides par Plateforme¶
On-Premises¶
k3s¶
k3s est livré avec Traefik comme contrôleur d'ingress par défaut. Désactivez le Traefik du chart et utilisez celui intégré :
k3s inclut également un provisionneur local-path pour le stockage. Pour la production, envisagez Longhorn ou Rook-Ceph.
kubeadm¶
Déploiement standard. Installez un contrôleur d'ingress (Traefik ou nginx-ingress) et un pilote de stockage CSI avant de déployer AKKO.
RKE2¶
RKE2 inclut nginx-ingress par défaut :
OVHcloud Managed Kubernetes¶
OVHcloud fournit un service Kubernetes managé avec :
- Mise à l'échelle automatique des nœuds
- Classe de stockage
csi-cinder-high-speed(SSD) - Intégration Load Balancer public
- Centres de données européens conformes au RGPD
Voir l'exemple complet : helm/examples/values-ovhcloud.yaml
OpenShift¶
OpenShift utilise des Routes au lieu d'Ingress et impose des Security Context Constraints (SCC). Le fichier values OpenShift gère ces différences :
# Accorder les SCC requis
oc adm policy add-scc-to-user nonroot-v2 -z akko-postgresql -n akko
oc adm policy add-scc-to-user nonroot-v2 -z akko-minio -n akko
# Déployer
helm install akko ./helm/akko -n akko \
-f helm/examples/values-openshift.yaml
Voir l'exemple complet : helm/examples/values-openshift.yaml
Stockage¶
Chaque service avec état utilise un PersistentVolumeClaim. Volumes clés :
| Service | Objectif | Taille Dev | Taille Prod |
|---|---|---|---|
| PostgreSQL | Base de données relationnelle partagée | 5 Gi | 50 Gi |
| object storage | Data lake S3 (tables Iceberg) | 5 Gi | 100 Gi |
| Prometheus | Historique des métriques | 2 Gi | 50 Gi |
| logs layer | Agrégation des logs | 2 Gi | 50 Gi |
| Ollama | Fichiers de modèles LLM | 5 Gi | 20 Gi |
| Airflow | Logs des DAG | 1 Gi | 10 Gi |
| OpenSearch | Index du catalogue governance | 2 Gi | 30 Gi |
Utilisez une classe de stockage SSD pour PostgreSQL, object storage et OpenSearch. Le stockage HDD est acceptable pour les logs (logs layer, Airflow) et Prometheus.
Supervision et Observabilité¶
AKKO déploie une pile de supervision complète via le chart kube-prometheus-stack :
- Prometheus -- collecte les métriques de tous les services AKKO
- Dashboards -- tableaux de bord pré-provisionnés pour chaque service
- Alertmanager -- route les alertes vers Slack, email ou PagerDuty
- logs layer + log shipper -- agrégation centralisée des logs
- OpenLineage -- lignage des pipelines de données (transport console par défaut)
Accédez à Dashboards à https://grafana.<votre-domaine>.
Tableaux de Bord Pré-intégrés¶
AKKO est livré avec des tableaux de bord Dashboards pour :
- Vue d'ensemble du cluster (CPU, mémoire, réseau)
- Performance des requêtes Trino
- Métriques des jobs Spark
- Exécution des DAG Airflow
- Connexions et requêtes PostgreSQL
- Utilisation du stockage object storage
- Événements d'authentification Keycloak
Dépannage¶
Pods bloqués en Pending¶
Causes courantes :
- CPU/mémoire insuffisants sur les nœuds (montez en charge ou réduisez les demandes de ressources)
- Pas de classe de stockage correspondante (vérifiez avec kubectl get storageclass)
- Incompatibilité de sélecteur de nœud (vérifiez les labels des nœuds)
Pods en CrashLoopBackOff¶
Causes courantes : - Échecs de connexion à la base de données (PostgreSQL pas encore prêt -- vérifiez les depends_on) - Mots de passe incorrects (incohérence entre les secrets générés et les données du PV) - OOM kills (augmentez les limites mémoire)
Problèmes de certificats TLS¶
# Vérifier le statut des certificats cert-manager
kubectl -n akko get certificate
kubectl -n akko describe certificate <name>
# Vérifier les logs de cert-manager
kubectl -n cert-manager logs deploy/cert-manager
Réinitialiser un service¶
# Supprimer le déploiement et le PVC, puis laisser Helm recréer
kubectl -n akko delete deploy <service-name>
kubectl -n akko delete pvc <pvc-name>
helm upgrade akko ./helm/akko -n akko -f my-values.yaml
Pour Aller Plus Loin¶
- Documentation complète du chart Helm -- référence complète avec schéma d'architecture, guide de mise à l'échelle et procédures de mise à jour
- Vue d'ensemble de l'architecture -- comment les services se connectent
- Référence de configuration -- variables d'environnement et tuning
- Guide de dépannage -- problèmes courants et solutions