Aller au contenu

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 --set ou --set-file au déploiement pour les valeurs sensibles
  • Effectuer une rotation trimestrielle : mots de passe PostgreSQL, admin Keycloak, identifiants MinIO
  • Ne jamais committer de fichiers .env ou traefik/certs/

Limites de Ressources

Chaque pod doit avoir des requests et limits définis :

resources:
  requests:
    cpu: 100m
    memory: 256Mi
  limits:
    cpu: 500m
    memory: 512Mi

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

  1. Connectez-vous à la console d'administration Keycloak : https://keycloak.<domaine>/admin
  2. Naviguez vers Users > Add user
  3. Attribuez le rôle approprié dans Role Mappings
  4. 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

helm rollback akko <revision>

Consultez l'historique des révisions avec helm history akko.