Deployment
Deployment Strategy
Stratégie de déploiement
La plateforme est pensée pour Kubernetes via Helm.
# Déployer Kalli
helm install kalli-release ./helm --set bot.id=kalli
# Déployer un second bot
helm install newbot-release ./helm --set bot.id=newbotConsultez helm/ et k8s/ pour les templates et ConfigMaps.
Pourquoi Helm ?
- Standard Kubernetes: Helm structure les déploiements (charts, valeurs, templates) et évite la duplication YAML.
- Paramétrage par valeurs: Permet de dériver plusieurs instances (bots) d’une même base avec des overrides légers.
- Opérations fiables:
helm upgrade --install, rollback natif, historique des révisions.
Modèle multi-bots (multi-tenant léger)
- Objectif: Lancer plusieurs bots partageant la même structure logique (web, serveur, base, index), mais avec identités/config propres.
- Isolation logique: Préfixes/labels/annotations par
bot.id, ConfigMaps/Secrets dédiés, éventuellement namespaces distincts. - Mutualisation: Un même chart + valeurs spécifiques par bot (réduction du coût d’exploitation et homogénéité).
Comment déployer
# 1) Préparer les valeurs (valeurs par défaut dans ./helm/values.yaml)
# 2) Déployer un bot "kalli" avec override minimal
helm upgrade --install kalli-release ./helm \
--namespace bots --create-namespace \
--set bot.id=kalli --set image.tag=latest
# 3) Déployer un 2e bot avec un autre ID et sa config
helm upgrade --install foobot-release ./helm \
--namespace bots \
--set bot.id=foobot --values ./overrides/foobot.values.yaml
# 4) Mettre à jour
helm upgrade kalli-release ./helm --namespace bots --values ./overrides/kalli.values.yaml
# 5) Rollback si nécessaire
helm rollback kalli-release 1 --namespace botsStructure des valeurs Helm (exemple)
bot:
id: kalli
displayName: "Kalli"
domain: kalli.example.com
image:
repository: registry.example.com/naivi-bot
tag: "2025.08.11"
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
env:
- name: NODE_ENV
value: production
- name: BOT_ID
value: kalli
secrets:
- name: AUTH_SECRET
valueFrom: secretRef: auth-secret
ingress:
enabled: true
host: kalli.example.comAdaptez
envetsecretsà votre politique (ConfigMaps vs Secrets, External Secrets…).
Environnements (dev, stage, prod)
- Séparez les namespaces et/ou clusters par environnement.
- Overrides dédiés:
values.dev.yaml,values.stage.yaml,values.prod.yaml. - Politiques de ressources et d’autoscaling adaptées à la charge.
Sécurité & isolation
- Secrets K8s ou gestion externe (External Secrets, Vault).
- RBAC/NetworkPolicy: limiter l’accès inter-services et inter-bots.
- Noms/labels par bot: éviter collisions et faciliter l’observabilité.
Bonnes pratiques opérationnelles
- CI/CD: valider les manifests (
helm lint,kubeconform) avant déploiement. - Probing: readiness/liveness probes cohérentes pour un rollout fiable.
- Observabilité: logs, métriques, traces corrélées par
bot.id.
Kalli