Aller au contenu

Guide de migration vers Canopsis 26.04.0

Ce guide donne les instructions vous permettant de mettre à jour Canopsis 25.04 (dernière version disponible) vers la version 26.04.0.

Sommaire

Prérequis

L'ensemble de cette procédure doit être lue avant son exécution.

Ce document ne prend en compte que Canopsis Community et Canopsis Pro : tout développement personnalisé dont vous pourriez bénéficier ne fait pas partie du cadre de ce Guide de migration.

Les fichiers de référence qui sont mentionnés dans ce guide sont disponibles à ces adresses

Édition Sources
Édition Community https://git.canopsis.net/canopsis/canopsis-community/-/releases
Édition pro https://git.canopsis.net/sources/canopsis-pro-sources/-/releases

Utilisateurs Helm

Pour les environnements déployés via Helm, la grande majorité des mises à jour décrites dans ce guide (MongoDB, TimescaleDB, RabbitMQ, Valkey) sont prises en charge nativement par les configurations de référence fournies par Canopsis. Sauf mention contraire dans l'onglet correspondant, aucune action manuelle n'est requise pour ces composants. Seule la commande helm upgrade finale est indispensable.

Réalisation d'une sauvegarde

Des sauvegardes sont toujours recommandées, qu'elles soient régulières ou lors de modifications importantes.

Arrêt de l'environnement en cours d'exécution

Vous devez prévoir une interruption du service afin de procéder à la mise à jour qui va suivre.

systemctl stop canopsis.service

Vous devez prévoir une interruption du service afin de procéder à la mise à jour qui va suivre.

CPS_EDITION=pro docker compose down

Vous devez prévoir une interruption du service afin de procéder à la mise à jour qui va suivre.

kubectl delete deployments --all

Mise à jour de MongoDB

Vérifications MongoDB

Vérification

Avant de démarrer la procédure de mise à jour, vous devez vérifier que la valeur de featureCompatibilityVersion est bien positionnée à 8.0

mongosh -u root -p root
> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
> exit

Mise à jour

Stopper MongoDB

systemctl stop mongod.service

Mettre à jour les versions des paquets de MongoDB

dnf update mongodb-org mongodb-org-database mongodb-org-server mongodb-org-mongos mongodb-org-tools -y

Relancer MongoDB

systemctl start mongod.service

Aucune action de mise à jour ne sont à réaliser dans un environnement Docker Compose.

Attention

Ce bloc est réservé uniquement aux environnements impliquant MongoDB exécuté dans un environnement Kubernetes.

Si ce n'est pas votre cas, référez-vous au bloc « RPM ».

Vous n'avez rien de particulier à prévoir, les configurations de référence livrées par Canopsis embarquent ce changement naturellement.

Mise à jour TimescaleDB

Dans cette version de Canopsis, la base de données TimescaleDB passe de la version 2.21.4 à 2.26.1.

Sauvegarder les bases de données canopsis et canopsis_tech_metrics

set -o allexport ; source /opt/canopsis/etc/go-engines-vars.conf
sudo -iu postgres pg_dump $(eval echo "$CPS_POSTGRES_URL") --no-owner -Fc -v -f /tmp/canopsis-$(date +"%Y-%m-%d")-canopsis-dump.sql.gz
sudo -iu postgres pg_dump $(eval echo "$CPS_POSTGRES_TECH_URL") --no-owner -Fc -v -f /tmp/canopsis-$(date +"%Y-%m-%d")-canopsis_tech_metrics-dump.sql.gz

Une fois les sauvegardes réalisées, supprimer le versionlock des paquets TimescaleDB

dnf versionlock delete timescaledb-2-postgresql-17
dnf versionlock delete timescaledb-2-loader-postgresql-17

Installer le paquet de la version de timescaledb :

dnf install timescaledb-2-postgresql-17-2.26.1 timescaledb-2-loader-postgresql-17-2.26.1

Réactiver le versionlock

dnf versionlock add timescaledb-2-loader-postgresql-17 timescaledb-2-postgresql-17

Se connecter avec le compte administrateur sur le base :

sudo -u postgres psql

Mettre à jour l'extension dans TimescaleDB : - Sur la base de données canopsis

postgres=# \c canopsis
canopsis=# ALTER EXTENSION timescaledb UPDATE;
canopsis=# \dx timescaledb
                                        Liste des extensions installées
 Nom     | Version | Schéma |                                      Description                                      
-------------+---------+--------+---------------------------------------------------------------------------------------
timescaledb | 2.26.1  | public | Enables scalable inserts and complex queries for time-series data (Community Edition)
(1 ligne)

  • Sur la base de données canopsis_tech_metrics
    postgres=# \c canopsis_tech_metrics
    canopsis_tech_metrics=# ALTER EXTENSION timescaledb UPDATE;
    canopsis_tech_metrics=# \dx timescaledb
                                            Liste des extensions installées
     Nom     | Version | Schéma |                                      Description                                      
    -------------+---------+--------+---------------------------------------------------------------------------------------
    timescaledb | 2.26.1  | public | Enables scalable inserts and complex queries for time-series data (Community Edition)
    (1 ligne)
    

Démarrez et mettez à jour l'extension TimescaleDB

CPS_EDITION=pro docker compose up -d timescaledb
CPS_EDITION=pro docker compose exec timescaledb psql postgresql://postgres:canopsis@timescaledb:5432/canopsis
canopsis=# ALTER EXTENSION timescaledb UPDATE;
canopsis=# \c canopsis_tech_metrics
canopsis_tech_metrics=# ALTER EXTENSION timescaledb UPDATE;

Vérifiez que la version de l'extension soit bien mise à jour

canopsis=# \dx timescaledb
                                                List of installed extensions
    Name     | Version | Schema |                                      Description                                      
-------------+---------+--------+---------------------------------------------------------------------------------------
 timescaledb | 2.26.1  | public | Enables scalable inserts and complex queries for time-series data (Community Edition)
(1 row)

Attention

Ce bloc est réservé uniquement aux environnements impliquant MongoDB exécuté dans un environnement Kubernetes.

Si ce n'est pas votre cas, référez-vous au bloc « RPM ».

Vous n'avez rien de particulier à prévoir, les configurations de référence livrées par Canopsis embarquent ce changement naturellement.

Mise à jour RabbitMQ

Pour mettre à jour RabbitMQ, retirer en premier lieu le versionlock de la version 4.1 de rabbitmq-server, puis appliquer celui pour la version 4.2 :

dnf versionlock delete 'rabbitmq-server-4.1*'
dnf versionlock add --raw 'rabbitmq-server-4.2*'

Stopper RabbitMQ

systemctl stop rabbitmq-server.service

Lancer la mise à jour :

dnf upgrade rabbitmq-server -y

Démarrer RabbitMQ

systemctl start rabbitmq-server.service

Vérifier la version de rabbitmq :

rabbitmqctl --version
4.2.4

Dans cette version de Canopsis, le bus de données RabbitMQ passe de la version 4.1 à 4.2.

Les configurations de référence fournies dans Canopsis embarquent déjà ce changement.

Démarrez le conteneur rabbitmq :

CPS_EDITION=pro docker compose up -d rabbitmq

Dans cette version de Canopsis, le bus de données RabbitMQ passe de la version 4.1 à 4.2.

Les configurations de référence fournies dans Canopsis embarquent déjà ce changement.

Mise à jour Valkey

Warning

Les paquets n'étant plus mis à jour dans les dépôts EPEL, il est nécessaire de passer sur les dépôts REMI afin d'avoir accès aux dernières versions de Valkey.

En passant sur les dépôts REMI, la méthode d'installation change pour repasser sur un système de module dnf.

Sauvegarder le contenu de configurations Valkey ainsi que les données présentes

cp -r /etc/valkey /etc/valkey.backup
cp -r /var/lib/valkey /var/lib/valkey.backup

Stopper Valkey

systemctl stop valkey

Supprimer la version EPEL de Valkey

dnf remove valkey

Supprimer le versionlock de Valkey

dnf versionlock delete 'valkey-8.*'

Installer les dépôts REMI et configurer le module pour Valkey

dnf install https://rpms.remirepo.net/enterprise/remi-release-$(cat /etc/redhat-release | cut -d'.' -f1 | awk '{print $NF}').rpm
dnf module reset valkey -y
dnf module enable valkey:remi-9.0 -y
dnf install valkey

Réappliquer la configuration

cp -r /etc/valkey.backup/* /etc/valkey/

Démarrer Valkey

systemctl enable --now valkey.service

Vérifier la version de valkey-server :

valkey-server --version
Valkey server v=9.0.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=91c5dc4ffc238810

Vous n'avez rien de particulier à prévoir, les configurations de référence livrées par Canopsis embarquent ce changement naturellement.

Vous n'avez rien de particulier à prévoir, les configurations de référence livrées par Canopsis embarquent ce changement naturellement.

Mise à jour de Canopsis

Mise à jour des paquets

Supprimer le versionlock

dnf versionlock delete 'canopsis-25.10.*'
dnf versionlock delete 'canopsis-common-25.10.*'
dnf versionlock delete 'canopsis-webui-25.10.*'

Mettre à jour les paquets de Canopsis

dnf upgrade canopsis-pro canopsis-webui

Ajouter le versionlock

dnf versionlock add --raw 'canopsis-26.04.*'
dnf versionlock add --raw 'canopsis-common-26.04.*'
dnf versionlock add --raw 'canopsis-webui-26.04.*'

Synchronisation du fichier de configuration canopsis.toml ou fichier de surcharge

Si vous avez modifié le fichier canopsis.toml (vous le voyez via une définition de volume dans votre fichier docker-compose.yml), vous devez vérifier qu'il soit bien à jour par rapport au fichier de référence.

Information

Pour éviter ce type de synchronisation fastidieuse, la bonne pratique est d'utiliser un fichier de surcharge de cette configuration.

Si vous avez utilisé un fichier de surcharge, alors vous n'avez rien à faire, uniquement continuer à le présenter dans un volume.

Lancement du provisioning canopsis-reconfigure et terminer la mise à jour.

Attention

Si vous avez personnalisé la ligne de commande de l'outil canopsis-reconfigure, nous vous conseillons de supprimer cette personnalisation. L'outil est en effet pré paramétré pour fonctionner naturellement.

Si un fichier d'override du canopsis.toml est utilisé, ajouter à la ligne de commande suivante l'option -override suivie du chemin du fichier en question.

Il est nécessaire de vérifier que les services postgresql-17.service et mongod.service sont bien démarrés puis lancer le reconfigure

systemctl status postgresql-17 mongod
set -o allexport ; source /opt/canopsis/etc/go-engines-vars.conf
/opt/canopsis/bin/canopsis-reconfigure -migrate-postgres=true -migrate-tech-postgres=true -migrate-mongo=true -edition pro

Information

Cette opération peut prendre plusieurs minutes pour s'exécuter.

Vous pouvez ensuite vérifier que le mécanisme de reconfigure s'est correctement déroulé en lisant les logs sur la sortie standard de la commande.

Redémarrage de Canopsis

systemctl start canopsis

Vérifier que l'ensemble des services soient correctement exécutés.

systemctl status canopsis

Par ailleurs, le mécanisme de bilan de santé intégré à Canopsis ne doit pas présenter d'erreur.

Healthcheck

CPS_EDITION=pro docker compose up -d reconfigure

Information

Cette opération peut prendre plusieurs minutes pour s'exécuter.

Vous pouvez ensuite vérifier que le mécanisme de provisioning/reconfigure s'est correctement déroulé. Le conteneur doit présenter un "exit 0"

CPS_EDITION=pro docker compose ps -a|grep reconfigure
canopsis-pro-reconfigure-1            "/canopsis-reconfigu…"   reconfigure            exited (0)

Enfin, il vous reste à mettre à jour et à démarrer tous les composants applicatifs de Canopsis

CPS_EDITION=pro docker compose up -d

Vous pouvez ensuite vérifier que l'ensemble des conteneurs soient correctement exécutés.

CPS_EDITION=pro docker compose ps

Par ailleurs, le mécanisme de bilan de santé intégré à Canopsis ne doit pas présenter d'erreur.

Healthcheck

Définir le nom de votre instance

export RELEASE_NAME="canopsis-prod"

Mise à jour des repos helm

helm repo update

Mise à jour de Canopsis

helm upgrade ${RELEASE_NAME} canopsis/canopsis-pro -f customer-values.yaml

Par ailleurs, le mécanisme de bilan de santé intégré à Canopsis ne doit pas présenter d'erreur.

Healthcheck