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.