Mise à jour
Mettre à jour un déploiement Avatar installé avec Helm consiste en un seul helm upgrade avec le
même fichier de valeurs que celui de l'installation. Ce guide décrit la procédure sûre, ainsi que le
seul point où Kubernetes diffère du chemin Docker d'une manière qu'il faut connaître avant de
commencer.
helm rollback n'est pas testé sur ce chart. Prévoyez la reprise autour d'une réinstallation de la
version précédente depuis une sauvegarde de base de données — voir
Retour à la version précédente.
Prérequis
Avant de commencer la mise à jour, assurez-vous de disposer de :
- un accès
kubectlethelmau cluster et au namespace de la release - le fichier de valeurs utilisé à l'installation, à jour de toute modification ultérieure
- la version cible du chart et les tags d'images correspondants, fournis par Octopize
- une connectivité réseau permettant de récupérer les nouvelles images (ou des images déjà
recopiées pour les déploiements en environnement isolé) :
- flux sortant sur le port 443 vers
quay.iopour les images Avatar et l'artefact du chart - flux sortant sur le port 443 vers
docker.iopour les images de support - flux sortant sur le port 443 vers
ghcr.iopour les images Authentik
- flux sortant sur le port 443 vers
- une marge d'ordonnancement suffisante pour la mise à jour progressive des déploiements web et Dask
Liste de contrôle avant mise à jour
Tous les points doivent être vérifiés avant de continuer.
- Version actuelle du chart et tags d'images documentés (
helm -n avatar list) - Notes de version de la version cible consultées
- Sauvegarde complète de la base PostgreSQL effectuée
- Fichier de valeurs sauvegardé, et sa différence avec la release déployée relue
(
helm -n avatar get values avatar) - Fenêtre de maintenance planifiée et communiquée aux utilisateurs
- Plan de reprise consulté et compris (voir Retour à la version précédente)
Vérifier la version actuelle
helm -n avatar list
kubectl -n avatar get deploy -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.template.spec.containers[0].image}{"\n"}{end}'
Sauvegarder la base de données
Prenez un instantané, ou un pg_dump sur database.host. Sauvegardez à la fois la base Avatar
(database.name) et celle d'Authentik (authentik.authentik.postgresql.name) — restaurer l'une
sans l'autre laisse les connexions cassées.
Si vous utilisez le SeaweedFS du chart, prenez également un instantané de ses PersistentVolumes.
Définir le mot de passe d'administration SeaweedFS
Les versions du chart postérieures à 0.0.97 exigent un mot de passe d'administration SeaweedFS.
Sans lui, le chart ne se rend pas. Avant la mise à jour, ajoutez storage.seaweedfsAdminPassword
au fichier de secrets générés que vous conservez, par exemple avatar-secrets.yaml :
storage:
seaweedfsAdminPassword: "<sortie de : openssl rand -hex 32>"
Pour lire le mot de passe depuis votre propre Secret, voir SeaweedFS.
Passer au chart 0.1.0 par le chart 0.0.102
Le chart 0.1.0 exécute Authentik 2026.8, qui ne démarre que sur une base de données ayant déjà exécuté Authentik 2026.5. Authentik met à jour sa base de données une ligne de version à la fois, et ne peut pas revenir en arrière.
-
Depuis le chart 0.0.101 ou antérieur, passez d'abord au chart 0.0.102, qui exécute Authentik 2026.5. Attendez qu'Authentik soit prêt :
kubectl -n avatar rollout status deploy/avatar-authentik-serverPassez ensuite au chart 0.1.0, avec la même procédure.
-
Une nouvelle installation peut installer directement le chart 0.1.0.
-
Si vous sautez le chart 0.0.102, le serveur Authentik s'arrête au démarrage avec
Major version skips are not allowed, avant de modifier la base de données. Passez au chart 0.0.102, laissez Authentik démarrer, puis passez de nouveau au chart 0.1.0. -
Sauvegardez la base de données d'Authentik avant chacune des deux mises à jour.
Le chart 0.1.0 donne aussi à Authentik son URL de base, AUTHENTIK_WEB__BASE_URL, à partir de
ingress.authentikHost ou de ingress.host. Authentik exige une URL de base à partir de 2026.11.
Redémarrer Authentik après la version qui ajoute sso.trustedProxyCidrs
La version du chart qui ajoute sso.trustedProxyCidrs donne
à Authentik les réseaux dont il accepte X-Forwarded-Proto et X-Forwarded-For. Ses notes de
version la signalent. Authentik ne lit cette valeur qu'au démarrage, et helm upgrade ne le
redémarre pas. Après être passé à cette version, et après chaque modification de
sso.trustedProxyCidrs, redémarrez le serveur Authentik :
kubectl -n avatar rollout restart deploy/avatar-authentik-server
kubectl -n avatar rollout status deploy/avatar-authentik-server
Tant qu'il n'a pas redémarré, un serveur Authentik sur un réseau de pods hors de la valeur par
défaut d'Authentik, par exemple 100.64.0.0/10 sur Scaleway Kapsule, prend chaque requête pour du
HTTP simple, et la connexion revient à son premier écran. Voir
La connexion revient à son premier écran.
Dérouler la mise à jour
Étape 1 : mettre à jour les tags d'images dans le fichier de valeurs
Trois valeurs évoluent ensemble à chaque changement de version :
api:
image:
tag: "<nouvelle-version-api>"
web:
image:
tag: "<nouvelle-version-web>"
dask:
scheduler:
image:
tag: "<nouvelle-version-api>" # doit être égale à api.image.tag
worker:
image:
tag: "<nouvelle-version-api>" # doit être égale à api.image.tag
Si vous utilisez le connecteur de bases de données, son image a sa
propre ligne de versions : connector.image.tag ne suit pas api.image.tag. Augmentez-le quand
les notes de version vous le demandent.
Étape 2 : prévisualiser le changement
Rendre le nouveau chart avec votre fichier de valeurs met au jour une valeur manquante ou contradictoire avant que quoi que ce soit ne change dans le cluster :
helm upgrade avatar oci://quay.io/octopize/helm/services-api/avatar \
--version <nouvelle-version> \
--namespace avatar \
--values my-values.yaml \
--dry-run
Étape 3 : mettre à jour
helm upgrade avatar oci://quay.io/octopize/helm/services-api/avatar \
--version <nouvelle-version> \
--namespace avatar \
--values my-values.yaml
Deux choses se produisent automatiquement au déploiement des nouveaux pods :
- Les migrations de base de données, exécutées par l'init container de l'API. Un échec se
manifeste par un pod de l'API qui reste en
Init, l'ancien pod continuant de servir le trafic. - Le Job d'amorçage Authentik est réexécuté. Il ne fait rien lorsque la base existe déjà.
Étape 4 : suivre le déploiement
kubectl -n avatar get pods -w
kubectl -n avatar rollout status deploy/avatar-api
kubectl -n avatar logs deploy/avatar-api -c init-avatar-api
Étape 5 : vérifier le déploiement
Déroulez les vérifications de Vérification et dépannage — au minimum le contrôle de santé de l'API, le test du flux de connexion et une avatarisation d'essai.
Liste de contrôle après mise à jour
- Tous les pods en
Running, aucun en boucle de redémarrage - Job
avatar-authentik-db-init-<nouvelle-version-du-chart>enComplete - Serveur Authentik redémarré, si la version ajoute
sso.trustedProxyCidrsou si vous l'avez modifié - Le point de contrôle de santé de l'API répond OK avec la bonne version
- La connexion utilisateur réussit via Authentik
- Un traitement d'avatarisation d'essai se termine correctement
- Si le connecteur de bases de données est activé, son pod est en
Runninget Tester réussit sur une connexion de démonstration - Le stockage objet est accessible, sans erreur SSE-S3
- La génération de rapports PDF fonctionne
- L'envoi d'emails fonctionne
Garder l'API à un seul réplica
Laissez api.replicaCount à 1 pendant la mise à jour, et en général. Plus d'un pod d'API n'est
pas pris en charge actuellement.
Retour à la version précédente
Prévoyez la reprise comme une réinstallation de la version précédente :
- Restaurez les bases PostgreSQL depuis la sauvegarde prise avant la mise à jour. Les migrations ne sont pas réversibles : une base migrée vers l'avant ne fonctionnera pas avec l'ancienne image de l'API.
- Relancez
helm upgradeavec la version précédente du chart et les tags d'images précédents, depuis le fichier de valeurs sauvegardé. - Vérifiez avec les contrôles de Vérification et dépannage.
Avant tout cela, collectez les informations de diagnostic afin que le problème puisse être analysé par la suite.
Si vous êtes sur un PostgreSQL managé où la restauration en place est impossible, restaurez vers une
nouvelle base et repointez database.host / database.name plutôt que de mettre à jour par-dessus
une base déjà migrée vers l'avant.
Bonnes pratiques
- Testez les mises à jour sur un cluster de préproduction en premier
- Mettez à jour pendant les périodes de faible utilisation
- Conservez le fichier de valeurs sous gestion de version, afin que l'écart entre deux releases soit relisible
- Conservez la sortie de la mise à jour et les journaux de l'init container pour le dépannage
Obtenir de l'aide
Si vous rencontrez des difficultés pendant la mise à jour :
- Consultez les journaux : d'abord l'init container de l'API, puis le Job d'amorçage Authentik
- Vérifiez la configuration :
helm -n avatar get values avatarface à votre fichier de valeurs - Collectez les diagnostics : suivez la procédure de collecte de diagnostics
- Contactez le support : adressez-vous au support Octopize avec les messages d'erreur précis et les fichiers de diagnostic
Pour une assistance de reprise en urgence, contactez immédiatement le support Octopize avec vos fichiers de sauvegarde à disposition.