Kit de Démarrage Administrateur¶
Ce guide couvre tout ce qu'un administrateur de la plateforme AKKO doit savoir pour durcir, exploiter et maintenir un déploiement en production.
Checklist de Durcissement Production¶
Certificats TLS¶
Traefik gère la terminaison TLS. En production, remplacez les certificats auto-signés :
# helm/akko/values.yaml
traefik:
tls:
certificates:
- certFile: /certs/tls.crt
keyFile: /certs/tls.key
Ne jamais exposer de services sans TLS en production
Toutes les communications inter-services doivent utiliser TLS ou rester dans le réseau du cluster.
Gestion des Secrets¶
- Stocker tous les secrets dans des Kubernetes Secrets (pas dans
values.yaml) - Utiliser
--setou--set-fileau déploiement pour les valeurs sensibles - Effectuer une rotation trimestrielle : mots de passe PostgreSQL, admin Keycloak, identifiants MinIO
- Ne jamais committer de fichiers
.envoutraefik/certs/
Limites de Ressources¶
Chaque pod doit avoir des requests et limits définis :
Recommandations pour les services critiques :
| Service | CPU Request | Memory Request | Memory Limit |
|---|---|---|---|
| PostgreSQL (infra) | 250m | 512Mi | 1Gi |
| PostgreSQL (données) | 500m | 1Gi | 2Gi |
| Keycloak | 250m | 512Mi | 1Gi |
| OpenMetadata | 500m | 2Gi | 2.5Gi |
| Spark Connect | 500m | 1Gi | 2Gi |
| Trino | 500m | 1Gi | 2Gi |
| JupyterHub | 250m | 512Mi | 1Gi |
Budgets de Perturbation des Pods (PDB)¶
Pour la haute disponibilité, définissez des PDB sur les services à état :
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: akko-postgresql-pdb
spec:
minAvailable: 1
selector:
matchLabels:
app: akko-postgresql
Gestion RBAC¶
AKKO utilise Keycloak pour le SSO avec 5 rôles prédéfinis :
| Rôle | Description | Accès |
|---|---|---|
admin |
Administrateur plateforme | Accès complet à tous les services, gestion des utilisateurs, configuration |
engineer |
Ingénieur données/plateforme | DAGs Airflow, jobs Spark, requêtes Trino, MLflow, JupyterHub |
analyst |
Analyste données | Tableaux de bord Superset, requêtes Trino en lecture seule, notebooks JupyterHub |
steward |
Gestionnaire de données | Catalogue OpenMetadata, qualité des données, glossaire, lignage |
viewer |
Lecteur seul | Portail Cockpit, tableaux de bord Superset (lecture), dashboards Grafana |
Gérer les Utilisateurs¶
- Connectez-vous à la console d'administration Keycloak :
https://keycloak.<domaine>/admin - Naviguez vers Users > Add user
- Attribuez le rôle approprié dans Role Mappings
- Pour l'intégration LDAP, configurez la fédération LLDAP dans User Federation
Contrôle d'Accès Fin avec OPA¶
Les requêtes Trino sont gouvernées par les politiques OPA. Éditez les politiques dans helm/akko/charts/akko-opa/ :
# Exemple : restreindre le rôle analyst au SELECT uniquement
allow {
input.action.operation == "SelectFromColumns"
input.context.identity.groups[_] == "analyst"
}
Sauvegarde & Restauration¶
Sauvegardes PostgreSQL¶
AKKO utilise deux instances PostgreSQL. Sauvegardez les deux :
# Base de données infrastructure (Keycloak, Airflow, Superset, etc.)
kubectl exec deploy/akko-postgresql -- pg_dumpall -U postgres > infra-backup.sql
# Base de données métier (analytics, geospatial, RAG)
kubectl exec deploy/akko-postgresql-data -- pg_dumpall -U postgres > data-backup.sql
Restauration :
kubectl exec -i deploy/akko-postgresql -- psql -U postgres < infra-backup.sql
kubectl exec -i deploy/akko-postgresql-data -- psql -U postgres < data-backup.sql
Sauvegardes MinIO¶
Utilisez le client MinIO (mc) pour dupliquer les buckets :
mc alias set akko http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
mc mirror akko/lakehouse /backup/lakehouse
mc mirror akko/mlflow /backup/mlflow
Export du Realm Keycloak¶
kubectl exec deploy/akko-keycloak -- /opt/keycloak/bin/kc.sh export \
--dir /tmp/export --realm akko
kubectl cp akko-keycloak-0:/tmp/export/akko-realm.json ./realm-backup.json
Configuration du Monitoring¶
Alertes Prometheus¶
Alertes clés à configurer dans monitoring/prometheus/alerts.yml :
- PostgreSQL hors service -- les deux instances infra et données
- Utilisation disque MinIO > 80%
- Échecs d'authentification Keycloak > 10/min
- OOM kills des executors Spark
- Taux d'échec des DAGs Airflow > 5%
Tableaux de Bord Grafana¶
Des dashboards préconfigurés sont disponibles :
- Vue d'ensemble AKKO -- santé de tous les services
- Métriques PostgreSQL -- connexions, latence des requêtes, retard de réplication
- Métriques Spark -- durée des jobs, utilisation des executors
- Métriques Trino -- débit des requêtes, utilisation mémoire
Accédez à Grafana via https://grafana.<domaine> avec vos identifiants SSO Keycloak.
Procédure de Mise à Jour¶
Toujours passer --set-file pour le realm Keycloak
Le fichier realm est obligatoire à chaque helm upgrade. L'omettre réinitialise la configuration Keycloak.
# 1. Examiner les changements
helm diff upgrade akko helm/akko/ \
-f helm/examples/values-dev.yaml \
--set-file akko-keycloak.realm.data=helm/examples/realm-akko-k3d.json
# 2. Mise à jour (deux phases pour la sécurité)
# Phase 1 : déployer sans hooks (s'assurer que les BDD existent)
helm upgrade akko helm/akko/ \
-f helm/examples/values-dev.yaml \
--set-file akko-keycloak.realm.data=helm/examples/realm-akko-k3d.json \
--no-hooks
# Phase 2 : exécuter les hooks (migrations, jobs d'initialisation)
helm upgrade akko helm/akko/ \
-f helm/examples/values-dev.yaml \
--set-file akko-keycloak.realm.data=helm/examples/realm-akko-k3d.json
# 3. Vérifier que tous les pods sont sains
kubectl get pods -l app.kubernetes.io/instance=akko
Retour Arrière¶
Consultez l'historique des révisions avec helm history akko.