Aller au contenu

Modes de déploiement — A / B / C

AKKO se livre en trois formes installables depuis un seul dépôt. Choisis celle qui correspond à ton client ou à ton environnement.

Mode A — AKKO Pro Mode B — ADEN standalone Mode C — AKKO Free
Chart helm/akko/ helm/aden/ helm/akko/
ADEN inclus uniquement ADEN désactivé
Trino / OpenMetadata / Keycloak inclus BYO (à fournir) inclus
Cockpit UI multi-pages complète aucune — reports.<domain> uniquement UI complète sans la page ADEN
Disque ~3 Go ~400 Mo ~2,6 Go
Mémoire 16 Go+ 4 Go+ 14 Go+
Cas d'usage plateforme data complète « ADEN en add-on » sur infra existante AKKO sans le tier IA

Mode A — AKKO Pro (par défaut)

Tout est bundlé. Installation en une commande.

helm install akko helm/akko/ -n akko --create-namespace \
  -f helm/examples/values-dev.yaml \
  -f helm/examples/values-domain.yaml \
  -f helm/examples/values-dev-secrets.yaml \
  --set-file akko-keycloak.realm.data=helm/examples/realm-domain.json
flowchart LR
  subgraph akko[namespace akko]
    Cockpit -->|/api/cockpit/aden/| ADEN
    ADEN -->|HTTP| Trino
    ADEN -->|HTTP| OpenMetadata
    ADEN -->|HTTP| LiteLLM
    LiteLLM --> Ollama
    ADEN -->|JDBC| Postgres[(akko-postgresql)]
    ADEN -->|/v1/data/akko/aden/| OPA
    ADEN -- écrit --> PVC[(PVC aden-reports)]
    Streamlit -- lit ro --> PVC
    ShinyProxy -- spawn --> StreamlitPod[Pod Streamlit par session]
    StreamlitPod -- lit ro --> PVC
  end
  User --> Cockpit
  User --> reports.domain[reports.<domain>]
  reports.domain --> ShinyProxy

Audience : clients qui veulent tout dans une plateforme.


Mode B — ADEN standalone

Uniquement ADEN, branché sur l'infra existante (Trino, OpenMetadata, Keycloak, Postgres, LLM gateway). Installation minimale.

helm dependency update helm/aden/
helm install aden helm/aden/ -n aden --create-namespace \
  --set global.domain=aden.client.io \
  -f helm/aden/values-standalone.yaml
flowchart LR
  subgraph aden[namespace aden]
    ADEN
    Streamlit
    ShinyProxy
    OPA
  end
  subgraph customer[infra existante du client]
    BYO_Trino[Trino]
    BYO_OM[OpenMetadata*]
    BYO_PG[(Postgres)]
    BYO_LLM[LiteLLM / OpenAI / vLLM]
    BYO_IdP[Keycloak / Authentik / Okta / AAD]
  end
  User --> ShinyProxy
  ShinyProxy -->|OIDC| BYO_IdP
  ShinyProxy -- spawn --> StreamlitPod[Pod Streamlit par session]
  StreamlitPod -- ro PVC --> Reports[(PVC aden-reports)]
  ADEN -->|HTTP| BYO_Trino
  ADEN -->|HTTP| BYO_OM
  ADEN -->|HTTP| BYO_LLM
  ADEN -->|JDBC| BYO_PG
  ADEN -- écrit --> Reports

* Optionnel — ADEN tourne en mode dégradé si OpenMetadata est absent (fallback substring sur Trino information_schema, précision ~50 %).

Audience : clients qui ont déjà leur plateforme et veulent ajouter « text-to-SQL → Streamlit » comme feature.


Mode C — AKKO Free

La plateforme AKKO complète sans ADEN. Même chart helm/akko/, ADEN désactivé dans les values :

helm install akko helm/akko/ -n akko --create-namespace \
  -f helm/examples/values-dev.yaml \
  -f helm/examples/values-domain.yaml \
  -f helm/examples/values-dev-secrets.yaml \
  --set-file akko-keycloak.realm.data=helm/examples/realm-domain.json \
  --set akko-aden.enabled=false \
  --set akko-streamlit.enabled=false \
  --set akko-shinyproxy.enabled=false \
  --set akko-opa.adenPoliciesEnabled=false
flowchart LR
  subgraph akko[namespace akko]
    Cockpit
    Trino
    OpenMetadata
    Keycloak
    Superset
    Airflow
    JupyterHub
  end
  Cockpit -.pas de page ADEN.-> Cockpit
  User --> Cockpit

Audience : clients qui veulent le lakehouse + gouvernance + notebooks d'AKKO sans la feature IA.


Bascule entre modes

Source → Cible Effort Notes
A → C (désactiver ADEN) helm upgrade avec akko-aden.enabled=false Idempotent ; PVC conservé pour réactivation future
C → A (activer ADEN) helm upgrade avec akko-aden.enabled=true (+ secrets) Migrations schema appliquées automatiquement via le job akko-init
A → B (extraction ADEN) Backup schema aden → install helm/aden/ → restore Runbook d'extraction dédié à venir ; en attendant suivre la procédure de backup PostgreSQL générique dans Observabilité et SLO
B → A (absorption dans AKKO) helm install akko avec akko-aden.enabled=true pointant sur le Postgres existant du Mode B Merge manuel des values

Conformité avec R28 (stackable)

Chaque dépendance externe Mode B respecte une interface standard :

Catégorie Interface Backends acceptés
Identité OIDC Keycloak, Authentik, Okta, Auth0, Azure AD, Google
LLM REST OpenAI-compatible LiteLLM, vLLM, Ollama, OpenAI, Anthropic-via-LiteLLM
Catalog REST OpenMetadata + mode dégradé OpenMetadata, aucun
Object storage SDK S3 + endpoint object storage (AGPL — voir plan migration), SeaweedFS, AWS S3, Backblaze, Wasabi
État Protocole Postgres PostgreSQL 13+, AWS RDS, Crunchy, Supabase

Un opérateur Mode B peut swapper n'importe lequel d'entre eux à l'installation en éditant le bloc values correspondant — aucun rebuild de code requis.


Feature flags cockpit

Le cockpit lit /api/version au boot et retire de la sidebar + des pages toutes les features désactivées. Ce endpoint est peuplé par Helm depuis global.features :

global:
  features:
    adenEnabled: true          # masque l'item ADEN (sidebar + page) si false
    adenPoliciesEnabled: true  # (réservé — miroir de akko-opa.adenPoliciesEnabled)

En Mode C (--set akko-aden.enabled=false), forcer aussi --set global.features.adenEnabled=false pour supprimer l'entrée ADEN de l'UI. Les éléments marqués data-feature="adenEnabled" dans index.html reçoivent la classe .feature-hidden et display: none.

Le Mode B (ADEN standalone) utilisera la future image cockpit-lite (branding/cockpit-lite/) qui n'embarque que la page ADEN + le launcher Streamlit — aucune autre page AKKO.