Aller au contenu

Guide de migration vers Canopsis 24.04.0

Ce guide donne les instructions vous permettant de mettre à jour Canopsis 23.10 (dernière version disponible) vers la version 24.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.

La restructuration apportée dans les bases de données pour cette version de Canopsis nous amène à insister d'autant plus sur ce point. Il est donc fortement recommandé de réaliser une sauvegarde complète des VM hébergeant vos services Canopsis, avant cette mise à jour.

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 à 5.0

```sh CPS_EDITION=pro docker compose exec mongodb bash mongo -u root -p root

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) exit ```

```sh mongo -u root -p root

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) exit ```

```sh 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" : "5.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.

sh CPS_EDITION=pro docker compose down

sh systemctl stop canopsis systemctl stop mongod systemctl stop postgresql-13 systemctl stop rabbitmq-server systemctl stop redis

sh kubectl delete --all deployments

Mise à jour Canopsis

Information

Canopsis 24.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 24.04.0 (canopsis-community-docker-compose-24.04.0.tar.gz) disponible à cette adresse https://git.canopsis.net/canopsis/canopsis-community/-/releases.

sh export CPS_EDITION=community tar xvfz canopsis-community-docker-compose-24.04.0.tar.gz cd canopsis-community-docker-compose-24.04.0

Si vous êtes utilisateur de l'édition pro, voici les étapes à suivre.

Télécharger le paquet de la version 24.04.0 (canopsis-pro-docker-compose-24.04.0.tar.gz) disponible à cette adresse https://git.canopsis.net/sources/canopsis-pro-sources/-/releases.

sh export CPS_EDITION=pro tar xvfz canopsis-pro-docker-compose-24.04.0.tar.gz cd canopsis-pro-docker-compose-24.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 MongoDB

Dans cette version de Canopsis, la base de données MongoDB passe de la version 5.0 à 7.0.
2 étapes sont nécessaires pour cette migration :

  1. De 5.0 à 6.0
  2. De 6.0 à 7.0

Modifiez la variable MONGO_TAG du fichier .env de cette façon :

diff -MONGO_TAG=7.0.8-jammy +MONGO_TAG=6.0.15-jammy

Démarrez le conteneur mongodb :

sh CPS_EDITION=pro docker compose up -d mongodb

Entrez ensuite à l'intérieur de ce conteneur, afin de compléter la mise à jour vers MongoDB 6.0 :

```sh CPS_EDITION=pro docker compose exec mongodb bash mongosh -u root -p root

db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } ) exit ```

Modifiez la variable MONGO_TAG du fichier .env de cette façon :

diff -MONGO_TAG=6.0.15-jammy +MONGO_TAG=7.0.8-jammy

Démarrez le conteneur mongodb :

sh CPS_EDITION=pro docker compose up -d mongodb

Entrez ensuite à l'intérieur de ce conteneur, afin de compléter la mise à jour vers MongoDB 7.0 :

```sh CPS_EDITION=pro docker compose exec mongodb bash mongosh -u root -p root

db.adminCommand( { setFeatureCompatibilityVersion: "7.0", "confirm" : true } ) ```

Après avoir mis à jour mongodb, l'option de telemetry sera activée. Pour la désactiver, exécutez la commande suivante :

```sh CPS_EDITION=pro docker compose exec mongodb bash mongosh -u root -p root

disableTelemetry() exit ```

Note

Si vous avez mis en place des exclusions dans le fichier /etc/yum.conf, veillez à la désactiver le temps de cette procédure.

Mise à jour des paquets mongodb :

sh echo '[mongodb-org-6.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc' | tee /etc/yum.repos.d/mongodb-org-6.0.repo dnf makecache dnf install mongodb-org-6.0.15 mongodb-org-database-6.0.15 mongodb-org-server-6.0.15 mongodb-org-mongos-6.0.15 mongodb-org-tools-6.0.15

Redémarrage de mongodb :

sh systemctl start mongod

Ensuite, complétez la mise à jour vers MongoDB 6.0 :

```sh mongosh -u root -p root

db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } ) exit ```

Mise à jour des paquets mongodb :

Avertissement

Lors du passage de la version 6 à la version 7 l'option storage.journal.enabled est supprimée de mongodb.

Si vous l'utilisiez, vous devez modifier le fichier /etc/mongod.conf et retirer les lignes suivantes: journal: enabled: true

sh echo '[mongodb-org-7.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc' | tee /etc/yum.repos.d/mongodb-org-7.0.repo dnf makecache dnf install mongodb-org-7.0.8 mongodb-org-database-7.0.8 mongodb-org-server-7.0.8 mongodb-org-mongos-7.0.8 mongodb-org-tools-7.0.8

Redémarrage de mongodb :

sh systemctl start mongod

Ensuite, complétez la mise à jour vers MongoDB 7.0 :

```sh mongosh -u root -p root

db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } ) exit ```

Après avoir mis à jour mongodb, l'option de telemetry sera activée. Pour la désactiver, exécutez la commande suivante :

```sh mongosh -u root -p root

disableTelemetry() ```

Warning

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 RHEL 8

Dump de la base de données Canopsis : sh kubectl exec -n canopsis canopsis-mongodb-0 -- mongodump --uri="mongodb://cpsmongo:canopsis@localhost:27017/canopsis" --gzip --out /tmp/dump_canopsis.gz

Récupération en local du dump : sh kubectl cp canopsis/canopsis-mongodb-0:/tmp/dump_canopsis.gz .

Arrêt des pods MongoDB : sh kubectl scale statefulset canopsis-mongodb --replicas=0

Suppresion des PVCs MongoDB : sh kubectl get pvc --no-headers=true | awk '{print $1}' | grep mongodb | xargs kubectl delete pvc

Mise à jour de MongoDB : ```sh helm repo update

helm upgrade canopsis bitnami/mongodb --set auth.enabled=true --set architecture=replicaset --set replicaCount=3 --set auth.enabled=true --set auth.usernames={'cpsmongo'} --set auth.passwords={'canopsis'} --set auth.databases={'canopsis'} --set externalAccess.enable=true --set replicaSetName=rs0 --set persistence.resourcePolicy=keep --set externalAccess.service.type=ClusterIP --set arbiter.enabled=false --version 15.6.2 ```

Lorsque les trois replicas sont UP, copie du dump de la DB sur l'instance 0 de MongoDB : sh kubectl cp ./canopsis canopsis-mongodb-0:/tmp/

Restauration du dump : sh kubectl exec -n canopsis canopsis-mongodb-0 -- mongorestore -u cpsmongo --password canopsis --gzip --db canopsis /tmp/canopsis

Mise à jour de TimescaleDB

Dans cette version de Canopsis, la base de données TimescaleDB passe de la version 2.9.3 à 2.14.2.

Relancez le conteneur timescaledb :

sh CPS_EDITION=pro docker compose up -d timescaledb

Puis mettez à jour l'extension timescaledb (La chaîne de connexion doit être adaptée à votre environnement)

sh CPS_EDITION=pro docker compose exec timescaledb psql postgresql://cpspostgres:canopsis@timescaledb:5432/canopsis canopsis=# ALTER EXTENSION timescaledb UPDATE;

Ensuite, vérifiez que l'extension en elle-même est à présent bien à jour

sh \dx ... timescaledb | 2.14.2 | public | Enables scalable inserts and complex queries for time-series data (Community Edition) ... exit

Mise à jour des paquets timescaledb :

sh dnf install timescaledb-2-postgresql-13-2.14.2 timescaledb-2-loader-postgresql-13-2.14.2

Relancez le service timescaledb (géré par PostgreSQL) :

sh systemctl start postgresql-13

Puis mettez à jour l'extension timescaledb (La chaîne de connexion doit être adaptée à votre environnement)

sh sudo -u postgres psql postgresql://cpspostgres:canopsis@localhost:5432/canopsis canopsis=# ALTER EXTENSION timescaledb UPDATE;

Avertissement

Si l'opération ALTER EXTENSION échoue avec le message ERROR: must be owner of extension timescaledb veuillez suivre les opérations suivantes : sh su - postgres psql -X \c canopsis canopsis=# ALTER EXTENSION timescaledb UPDATE;

Ensuite, vérifiez que l'extension en elle-même est à présent bien à jour

sh \dx ... timescaledb | 2.14.2 | public | Enables scalable inserts and complex queries for time-series data (Community Edition) ... exit

Warning

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

Si ce n'est pas votre cas, référez-vous au bloc RHEL 8

Non concerné, la mise à jour est faite automatiquement lors de l'upgrade.

Mise à jour de RabbitMQ

Dans cette version de Canopsis, le bus rabbitMQ passe à la version 3.12.13.

Il suffit de démarrer le conteneur

sh CPS_EDITION=pro docker compose up -d rabbitmq

Passage en version 3.12 puis lancement du service rabbitmq-server :

sh dnf install --repo rabbitmq_erlang --repo rabbitmq_server erlang rabbitmq-server-3.12.13 systemctl restart rabbitmq-server

Warning

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

Si ce n'est pas votre cas, référez-vous au bloc RHEL 8

Non concerné, automatiquement géré par l'upgrade.

Remise à 0 du cache Redis

Dans cette version de Canopsis, le cache de Canopsis doit repartir à 0.

sh CPS_EDITION=pro docker compose up -d redis CPS_EDITION=pro docker compose exec redis /usr/local/bin/redis-cli -a canopsis flushall OK

sh systemctl start redis /bin/redis-cli -a canopsis flushall

Non concerné, le flush est fait automatiquement lors de l'upgrade.

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.

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.

sh 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"

sh 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

sh CPS_EDITION=pro docker compose up -d

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

sh CPS_EDITION=pro docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS canopsis-pro-action-1 docker.canopsis.net/docker/develop-pro/engine-action:24.04-rc3 "/engine-action" action 3 hours ago Up 51 minutes canopsis-pro-api-1 docker.canopsis.net/docker/develop-pro/canopsis-api-pro:24.04-rc3 "/bin/sh -c /${CMD}" api 3 hours ago Up 51 minutes (healthy) 0.0.0.0:8082->8082/tcp, :::8082->8082/tcp canopsis-pro-axe-1 docker.canopsis.net/docker/develop-pro/engine-axe:24.04-rc3 "/engine-axe -publishQueue Engine_correlation" axe 3 hours ago Up 51 minutes canopsis-pro-che-1 docker.canopsis.net/docker/develop-pro/engine-che:24.04-rc3 "/engine-che" che 3 hours ago Up 51 minutes canopsis-pro-connector-junit-1 docker.canopsis.net/docker/develop-pro/connector-junit:24.04-rc3 "/bin/sh -c /${CMD}" connector-junit 3 hours ago Up 51 minutes canopsis-pro-correlation-1 docker.canopsis.net/docker/develop-pro/engine-correlation:24.04-rc3 "/bin/sh -c /${CMD}" correlation 3 hours ago Up 51 minutes canopsis-pro-dynamic-infos-1 docker.canopsis.net/docker/develop-pro/engine-dynamic-infos:24.04-rc3 "/bin/sh -c /${CMD}" dynamic-infos 3 hours ago Up 51 minutes canopsis-pro-fifo-1 docker.canopsis.net/docker/develop-pro/engine-fifo:24.04-rc3 "/bin/sh -c /${CMD}" fifo 3 hours ago Up 51 minutes canopsis-pro-mongodb-1 mongo:7.0.8-jammy "docker-entrypoint.sh --wiredTigerCacheSizeGB 2.5 --replSet rs0 --keyFile /data/db/.keyFile" mongodb 4 hours ago Up 2 hours (healthy) 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp canopsis-pro-nginx-1 docker.canopsis.net/docker/develop-community/nginx:24.04-rc3 "/bin/sh -c /entrypoint.sh" nginx 3 hours ago Up 51 minutes 80/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp canopsis-pro-pbehavior-1 docker.canopsis.net/docker/develop-community/engine-pbehavior:24.04-rc3 "/bin/sh -c /${CMD}" pbehavior 3 hours ago Up 51 minutes canopsis-pro-rabbitmq-1 rabbitmq:3.12.13-management "docker-entrypoint.sh rabbitmq-server" rabbitmq 4 hours ago Up 52 minutes (healthy) 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp canopsis-pro-redis-1 redis:6.2.14-bookworm "docker-entrypoint.sh /bin/sh -c 'redis-server --requirepass $REDIS_PASSWORD'" redis 4 hours ago Up 52 minutes (healthy) 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp canopsis-pro-remediation-1 docker.canopsis.net/docker/develop-pro/engine-remediation:24.04-rc3 "/bin/sh -c /${CMD}" remediation 3 hours ago Up 51 minutes canopsis-pro-snmp-1 docker.canopsis.net/docker/develop-pro/engines-python:24.04-rc3 "/bin/sh -c /entrypoint.sh" snmp 3 hours ago Up 51 minutes canopsis-pro-timescaledb-1 timescale/timescaledb:2.14.2-pg13 "docker-entrypoint.sh postgres" timescaledb 3 hours ago Up About an hour (healthy) 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp canopsis-pro-webhook-1 docker.canopsis.net/docker/develop-pro/engine-webhook:24.04-rc3 "/bin/sh -c /${CMD}" webhook 3 hours ago Up 51 minutes

Mise à jour de Canopsis

sh dnf install canopsis-pro-24.04.0 canopsis-webui-24.04.0

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.

sh systemctl start postgresql-13 set -o allexport ; source /opt/canopsis/etc/go-engines-vars.conf /opt/canopsis/bin/canopsis-reconfigure -migrate-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

sh systemctl restart canopsis

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

sh systemctl status canopsis

Mise à jour de Canopsis sh helm upgrade --install canopsis 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