Guide de migration vers Canopsis 25.04.0¶
Ce guide donne les instructions vous permettant de mettre à jour Canopsis 24.10 (dernière version disponible) vers la version 25.04.0.
Prérequis¶
L'ensemble de cette procédure doit être lu 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 |
Procédure de mise à jour¶
Réalisation d'une sauvegarde¶
Des sauvegardes sont toujours recommandées, qu'elles soient régulières ou lors de modifications importantes.
Vérification 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 à 7.0
CPS_EDITION=pro docker compose exec mongodb bash
mongosh -u root -p root
> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
> exit
mongosh -u root -p root
> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
> exit
Les commandes ci-dessous s'appliquent uniquement si votre instance MongoDB est hébergée sur votre cluster Kubernetes. Dans le cas contraire, veuillez vous référer à l'onglet "Paquets RHEL 8".
export MONGODB_ROOT_PASSWORD=$(kubectl get secret canopsis-mongodb -o jsonpath='{.data.mongodb-root-password}' | base64 --decode)
kubectl exec canopsis-mongodb-0 -- mongosh -u root -p $MONGODB_ROOT_PASSWORD --eval 'db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 })'
Le retour doit être de la forme { "featureCompatibilityVersion" : { "version" : "7.0" }, "ok" : 1 }
Si ce n'est pas le cas, vous ne pouvez pas continuer la mise à jour.
Arrêt de l'environnement en cours de lancement¶
Vous devez prévoir une interruption du service afin de procéder à la mise à jour qui va suivre.
CPS_EDITION=pro docker compose down
systemctl stop canopsis
systemctl stop mongod
systemctl stop postgresql-15
systemctl stop rabbitmq-server
systemctl stop redis
systemctl stop nginx
kubectl delete deployments --all
Mise à jour Canopsis¶
Information
Canopsis 25.04 est livré avec un nouveau jeu de configurations de référence. Vous devez télécharger ces configurations et y reporter vos personnalisations.
Si vous êtes utilisateur de l'édition community
, voici les étapes à suivre.
Télécharger le paquet de la version 25.04.0 (canopsis-community-docker-compose-25.04.0.tar.gz) disponible à cette adresse https://git.canopsis.net/canopsis/canopsis-community/-/releases.
export CPS_EDITION=community
tar xvfz canopsis-community-docker-compose-25.04.0.tar.gz
cd canopsis-community-docker-compose-25.04.0
Si vous êtes utilisateur de l'édition pro
, voici les étapes à suivre.
Télécharger le paquet de la version 25.04.0 (canopsis-pro-docker-compose-25.04.0.tar.gz) disponible à cette adresse https://git.canopsis.net/sources/canopsis-pro-sources/-/releases.
export CPS_EDITION=pro
tar xvfz canopsis-pro-docker-compose-25.04.0.tar.gz
cd canopsis-pro-docker-compose-25.04.0
À ce stade, vous devez synchroniser les modifications réalisées sur vos anciens fichiers de configuration docker-compose
avec les fichiers docker-compose.yml
et/ou docker-compose.override.yml
.
Non concerné car ces configurations sont livrées directemement dans les paquets RPM.
Non concerné car ces configurations sont livrées directement dans les charts Helm.
Mise à jour de RabbitMQ¶
Dans cette version de Canopsis, le bus de données RabbitMQ passe de la version 3 à 4.
La complexité de la procédure officielle de migration nous incite à proposer la suppression pure et simple du volume accueillant les données RabbitMQ.
Dans Canopsis, RabbitMQ traite toutes les données en mémoire sauf dans certaines situations où les moteurs Canopsis ne sont plus en mesure de traiter les messages. Il n'y a donc pas de craintes de perte de données dans ce processus.
Avertissement
Si votre installation RabbitMQ est clusterisée, veuillez contacter notre service de support.
La notion de "Mirrored Classic Queues" a été remplacée par les "Quorum Queues".
Des opérations spécifiques sont nécessaires.
Procédure officielle de migration : https://www.rabbitmq.com/docs/3.13/migrate-mcq-to-qq
Repérer le volume associé à RabbitMQ : rabbitmqdata
docker volume ls|grep canopsis-pro_rabbitmqdata
Cette commande devrait vous renvoyer un résultat similaire à
local canopsis-pro_rabbitmqdata
Suppression du volume
docker volume rm canopsis-pro_rabbitmqdata
Démarrage du conteneur
CPS_EDITION=pro docker compose up -d rabbitmq
Supprimer rabbitmq-server
dnf remove rabbitmq-server erlang
rm -rf /var/lib/rabbitmq
Suspendre le versionlock des paquets rabbitmq-server
et erlang-26*
dnf versionlock delete 'rabbitmq-server-3.*'
dnf versionlock delete 'erlang-26.*'
Installation de rabbitmq-server 4.1.x
dnf install rabbitmq-server-4.1.0
Définir des versionlock pour les paquets rabbitmq-server-4*
et erlang-27*
dnf versionlock add --raw 'rabbitmq-server-4.*'
dnf versionlock add --raw 'erlang-27.*'
Démarrage du service
systemctl enable --now rabbitmq-server.service
Activation de l'interface de management et création des objets de base
rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server.service
rabbitmqctl add_vhost canopsis
rabbitmqctl add_user cpsrabbit canopsis
rabbitmqctl set_user_tags cpsrabbit administrator
rabbitmqctl set_permissions --vhost canopsis cpsrabbit '.*' '.*' '.*'
Répérer le statefulset RabbitMQ
kubectl get statefulset | grep rabbitmq
L’exécution de cette commande renverra quelque chose comme
canopsis-prod-rabbitmq 1/1 11m
Suppression du statefulset RabbitMQ
kubectl delete statefulset canopsis-prod-rabbitmq
Repérer le volume associé à RabbitMQ
kubectl get pvc | grep rabbitmq
Cette commande devrait vous renvoyer un résultat similaire à
data-canopsis-prod-rabbitmq-0 Bound pvc-ad1f6b85-042d-4019-a406-d2fe09acc60c 8Gi RWO standard <unset> 40h
Suppression du volume
kubectl delete pvc data-canopsis-prod-rabbitmq-0
Passage de Redis à Valkey¶
Vis-à-vis du changement de licence de Redis, Canopsis a décidé de migrer de Redis à Valkey.
Vous n'avez rien de particulier à prévoir, les configurations de référence livrées par Canopsis embarquent ce changement naturellement.
Supprimer redis
dnf remove redis
rm -rf /var/lib/redis
rm -rf /etc/redis
dnf module reset redis
dnf module disable redis
Activer les dépôts EPEL qui proposent le paquet Valkey
dnf install epel-release
Installation de valkey
dnf install valkey-8.0.2
Définir des versionlock pour le paquet valkey-8.*
dnf versionlock add --raw 'valkey-8.*'
Ajouter un mot de passe Valkey
sed -i 's/^# requirepass.*/requirepass canopsis/' /etc/valkey/valkey.conf
Démarrage du service
systemctl enable --now valkey.service
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 Nginx¶
Dans les versions précédentes de Canopsis, il était recommandé d'effectuer l'installation de nginx à travers les modules EL. Cependant ceux-ci ne sont pas régulièrement mis à jour et les versions disponibles peuvent être obsolètes et non maintenues par l'éditeur (que ça soit au niveau fonctionnel comme sécurité). Nous avons donc décidé de mettre à jour nos documentations afin d'utiliser le dépôt éditeur.
Les actions ci-dessous vous permettront de réaliser les changements de dépôts sans prendre le risque de perdre vos configurations nginx si vous les aviez modifiées.
Vous n'avez rien de particulier à prévoir, les configurations de référence livrées par Canopsis embarquent ce changement naturellement.
Avertissement
Cette procédure ne doit être appliquée que si votre installation utilise les paquets nginx de la distribution RHEL. Si vous utilisez déjà les dépôts éditeurs de nginx, vous n'êtes pas concernés. (Vous pouvez le vérifier par la présence ou non du fichier /etc/yum.repos.d/nginx.repo)
Stopper l'interface graphique
systemctl stop nginx
systemctl disable nginx
Sauvegarde de la configuration existante
mkdir /root/backupnginx
cp /etc/nginx/conf.d/* /root/backupnginx/
Information
Nous utilisons le dossier /root/backupnginx
dans notre exemple mais il est possible d'utiliser n'importe quel répertoire dans lequel vous avez les droits.
Il est aussi important de répéter cette commande avec l'ensemble des fichiers que vous auriez pu modifier. Même si ici nous nous concentrons sur le fichier propre au virtualhost de Canopsis.
Déinstallation de Nginx (Cette déinstallation entraine la déinstallation de l'interface graphique de Canopsis)
dnf -y remove nginx
dnf -y module disable nginx
Configuration du dépôt Nginx
cat << EOF > /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
Fabrication du cache
dnf makecache
Une fois que vous aurez réappliqué vos configurations, vous pourrez remettre le service en marche:
systemctl enable --now nginx
Vous n'avez rien de particulier à prévoir, les configurations de référence livrées par Canopsis embarquent ce changement naturellement.
Lancement du provisioning canopsis-reconfigure
¶
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.
Séparation des flux d’événements par initiateur¶
À partir de la version 25.04, les moteurs Canopsis traitent les événements selon trois flux distincts, en fonction de la valeur du champ initiator :
- user : événements générés par les utilisateurs via l’interface (UI)
- system : événements internes du moteur (ex. : PBH, triggers, alarm updates…)
- external : événements émis par les connecteurs
Chaque moteur dispose désormais de processeurs dédiés à chacun de ces flux, permettant leur exécution en parallèle. De plus, chaque processeur embarque un pool de workers permettant un traitement concurrent efficace.
Objectif : éviter que les événements système ne bloquent les actions utilisateurs ou les événements de connecteurs. Par exemple, même en cas de nombreux pbh_enter, l’interface reste réactive et les nouvelles alarmes peuvent être créées sans latence.
Les flags suivants sont désormais obsolètes, nous vous invitons à supprimer toute référence dans vos configurations :
- -publishQueue
- -consumeQueue
- -workers (remplacé par des flags spécifiques à chaque type de flux)
Moteur | Flags nouveaux | Valeur par défaut | Flags obsolètes |
---|---|---|---|
engine-fifo | -workers | 10 | -publishQueue, -consumeQueue |
engine-che | -externalWorkers | 4 | -workers, -publishQueue, -consumeQueue |
-systemWorkers | 4 | ||
-userWorkers | 2 | ||
engine-axe | -externalWorkers | 4 | -workers, -publishQueue |
-systemWorkers | 4 | ||
-userWorkers | 2 | ||
-rpcWorkers | 4 | ||
engine-correlation | -externalWorkers | 4 | -workers, -publishQueue, -consumeQueue |
-systemWorkers | 4 | ||
-userWorkers | 2 | ||
-rpcWorkers | 4 | ||
engine-dynamic-infos | -externalWorkers | 4 | -workers, -publishQueue |
-systemWorkers | 4 | ||
-userWorkers | 2 | ||
-rpcWorkers | 4 | ||
engine-action | -externalWorkers | 4 | -workers |
-systemWorkers | 4 | ||
-userWorkers | 2 | ||
-rpcWorkers | 4 |
Reconfiguration de Canopsis¶
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.
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ésenté un "exit 0"
CPS_EDITION=pro docker compose ps -a|grep reconfigure
canopsis-pro-reconfigure-1 "/canopsis-reconfigu…" reconfigure exited (0)
La commande canopsis-reconfigure
doit être exécutée après mise à jour de Canopsis dans le cadre d'installation par paquets RPM.
Non concerné, canopsis-reconfigure
est lancé automatiquement lors de l'upgrade.
Mise à jour et démarrage final de Canopsis¶
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
Suspendre le versionlock des paquets Canopsis
dnf versionlock delete 'canopsis-pro-24.10.*'
dnf versionlock delete 'canopsis-webui-24.10.*'
Mise à jour de Canopsis
dnf install canopsis-pro-25.04.0 canopsis-webui-25.04.0
Réactiver les versionlock des paquets Canopsis
dnf versionlock add --raw 'canopsis-pro-25.04.*'
dnf versionlock add --raw 'canopsis-webui-25.04.*'
Reconfiguration de Canopsis
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 vous utilisez un fichier d'override du canopsis.toml, veuillez ajouter à la ligne de commande suivante l'option -override
suivie du chemin du fichier en question.
systemctl start postgresql-15 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 restart canopsis
Vous pouvez ensuite vérifier que l'ensemble des services soient correctement exécutés.
systemctl status canopsis
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.