Déploiement de redimensionnement
- Seule la mise à l'échelle est supportée.
- La procédure de mise à l’échelle de Thingpark Enterprise dépend de la fonctionnalité de redimensionnement de volume du fournisseur de stockage du cluster Kubernetes. Si la fonctionnalité est Supportée, le déploiement sera mis à l’échelle sans interruption de service. Dans le cas contraire, il sera nécessaire de sauvegarder puis de restaurer le déploiement.
Planification de la montée en charge
Avant de commencer la procédure :
-
Assurez-vous que votre licence correspond aux capacités du déploiement cible.
-
Assurez-vous que le cluster Kubernetes peut planifier les ressources de calcul supplémentaires requises par le segment cible (exprimées dans la matrice de dimensionnement). La montée en charge a également un impact sur le coût de stockage en nécessitant plus d’espace disque.
-
Récupérez vos fichiers de référence de personnalisation
values-data-stack.yamletvalues-thingpark-stack.yamlcontenant la configuration de votre déploiement. Mettez à jour ces fichiers avec le nouveau fichier de profil :- Récupérer la nouvelle configuration de dimensionnement
# Value in m,l,xl
export SEGMENT=l
export RELEASE=8.0.x
export CONFIG_REPO_BASEURL=https://raw.githubusercontent.com/actility/thingpark-enterprise-kubernetes/v$RELEASE
curl -O $CONFIG_REPO_BASEURL/values/sizing/values-$SEGMENT-segment.yamlUtilisez yq pour fusionner les fichiers de configuration :
yq eval-all '. as $item ireduce ({}; . * $item)' values-storage.yaml \
values-default-priority-class.yaml values-$SEGMENT-segment.yaml values-data-stack.yaml \
| tee values-data-stack-all.yaml
yq eval-all '. as $item ireduce ({}; . * $item)' values-storage.yaml \
values-lb.yaml values-default-priority-class.yaml values-$SEGMENT-segment.yaml \
values-thingpark-stack.yaml | tee values-thingpark-stack-all.yaml
Option A : Mise à l’échelle sans interruption
Prérequis
- Le cluster Kubernetes doit utiliser un fournisseur de stockage Supportant le redimensionnement de volume.
- StorageClass doit être configuré avec
allowVolumeExpansion: true - Si l’opérateur strimzi n’a pas été installé à l’aide du chart Helm thingpark-data-controller, il doit être configuré avec
createGlobalResources=true - Identifiez le nouveau dimensionnement des disques pour les composants suivants dans vos fichiers de configuration personnalisés
- mariadb-galera : clé
mariadb-galera.persistence.size - lrc : clé
lrc.persistence.size
- mariadb-galera : clé
1. Montée en charge de la pile de données
-
Mettez à jour les Persistent Volume Claims de mariadb-galera avec la valeur
mariadb-galera.persistence.sizekubectl patch -n $NAMESPACE pvc data-mariadb-galera-0 -p '{"spec":{"resources":{"requests":{"storage":"<new_size>Gi"}}}}'
kubectl patch -n $NAMESPACE pvc data-mariadb-galera-1 -p '{"spec":{"resources":{"requests":{"storage":"<new_size>Gi"}}}}'
kubectl patch -n $NAMESPACE pvc data-mariadb-galera-2 -p '{"spec":{"resources":{"requests":{"storage":"<new_size>Gi"}}}}'Example to scale up to profile lkubectl patch -n $NAMESPACE pvc data-mariadb-galera-0 -p '{"spec":{"resources":{"requests":{"storage":"15Gi"}}}}'
kubectl patch -n $NAMESPACE pvc data-mariadb-galera-1 -p '{"spec":{"resources":{"requests":{"storage":"15Gi"}}}}'
kubectl patch -n $NAMESPACE pvc data-mariadb-galera-2 -p '{"spec":{"resources":{"requests":{"storage":"15Gi"}}}}'Surveillez que le contrôleur de stockage augmente progressivement chaque PVC.
kubectl -n $NAMESPACE describe pvc data-mariadb-galera-0
kubectl -n $NAMESPACE describe pvc data-mariadb-galera-1
kubectl -n $NAMESPACE describe pvc data-mariadb-galera-2Example with AWS EBS storage controllerName: data-mariadb-galera-0
Namespace: devops-test-resizing
StorageClass: thingpark-csi-gp2-xfs
Status: Bound
Volume: pvc-9a33ed9f-5439-473c-8c5f-03c83ae58b2e
Labels: app.kubernetes.io/instance=tpe-data
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=mariadb-galera
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com
volume.kubernetes.io/selected-node: ip-10-252-3-105.eu-west-1.compute.internal
volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 15Gi
Access Modes: RWO
VolumeMode: Filesystem
Used By: mariadb-galera-0
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal WaitForFirstConsumer 13m persistentvolume-controller waiting for first consumer to be created before binding
Normal Provisioning 13m ebs.csi.aws.com_ebs-csi-controller-6f854796-5dx5n_888c33a4-9e9b-4fb7-82ce-006130b6851d External provisioner is provisioning volume for claim "devops-test-resizing/data-mariadb-galera-0"
Normal ExternalProvisioning 13m persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'ebs.csi.aws.com' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
Normal ProvisioningSucceeded 13m ebs.csi.aws.com_ebs-csi-controller-6f854796-5dx5n_888c33a4-9e9b-4fb7-82ce-006130b6851d Successfully provisioned volume pvc-9a33ed9f-5439-473c-8c5f-03c83ae58b2e
Normal Resizing 2m56s external-resizer ebs.csi.aws.com External resizer is resizing volume pvc-9a33ed9f-5439-473c-8c5f-03c83ae58b2e
Normal ExternalExpanding 2m56s volume_expand waiting for an external controller to expand this PVC
Normal FileSystemResizeRequired 2m50s external-resizer ebs.csi.aws.com Require file system resize of volume on node
Normal FileSystemResizeSuccessful 2m14s kubelet MountVolume.NodeExpandVolume succeeded for volume "pvc-9a33ed9f-5439-473c-8c5f-03c83ae58b2e" ip-10-252-3-105.eu-west-1.compute.internal -
Préparer la ressource psmdb pour l’extension
kubectl patch -n $NAMESPACE psmdb mongo-replicaset --type='json' -p='[{"op": "add", "path": "/spec/enableVolumeExpansion", "value": true}]' -
Supprimez le StatefulSet mariadb-galera avec
cascad=orphankubectl -n $NAMESPACE delete sts --cascade=orphan mariadb-galera -
Mettez à jour (Mettre à jour) la release Helm tpe-data avec le fichier de personnalisation mis à jour avec le nouveau profil de dimensionnement
helm upgrade tpe-data -n $NAMESPACE actility/thingpark-data -f values-data-stack-all.yaml -
Vérifiez que tous les PVC sont correctement mis à jour au dimensionnement cible
kubectl -n $NAMESPACE get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
data-0-kafka-cluster-kafka-0 Bound pvc-742f63b3-514d-49b8-aaf8-9bf3b79f5d79 20Gi RWO thingpark-csi-gp2-xfs <unset> 18h
data-0-kafka-cluster-kafka-1 Bound pvc-dcc644e3-1735-40de-8eb0-cf84797530b3 20Gi RWO thingpark-csi-gp2-xfs <unset> 18h
data-kafka-cluster-zookeeper-0 Bound pvc-316e3a1a-aee0-4591-a59e-137a9330b40f 5Gi RWO thingpark-csi-gp2-xfs <unset> 18h
data-kafka-cluster-zookeeper-1 Bound pvc-a062ee17-f8b9-4b48-9103-d0d964817b47 5Gi RWO thingpark-csi-gp2-xfs <unset> 18h
data-kafka-cluster-zookeeper-2 Bound pvc-11b7cb24-3085-4ae7-85e7-6a845aacf626 5Gi RWO thingpark-csi-gp2-xfs <unset> 18h
data-mariadb-galera-0 Bound pvc-f0921f31-827c-43f1-937c-2845da9995bd 15Gi RWO thingpark-csi-gp2-xfs <unset> 17h
data-mariadb-galera-1 Bound pvc-0d3b5f4a-94df-4546-aacf-8aed80ee661b 15Gi RWO thingpark-csi-gp2-xfs <unset> 17h
data-mariadb-galera-2 Bound pvc-279907b9-bdf4-4de9-b514-b60570aaf35d 15Gi RWO thingpark-csi-gp2-xfs <unset> 17h
data-zookeeper-0 Bound pvc-b26a6f85-dc31-468d-9eb9-8edd7b03247e 5Gi RWO thingpark-csi-gp2-xfs <unset> 18h
data-zookeeper-1 Bound pvc-eaa40aa9-368d-4919-8873-056a375dcec5 5Gi RWO thingpark-csi-gp2-xfs <unset> 18h
data-zookeeper-2 Bound pvc-0023eed1-3af1-4a89-bc9b-67d16f479f28 5Gi RWO thingpark-csi-gp2-xfs <unset> 18h
mongod-data-mongo-replicaset-rs0-0 Bound pvc-02cbe222-4ea2-41e2-bf95-40ec13f2cf0e 25Gi RWO thingpark-csi-gp2-xfs <unset> 16h
mongod-data-mongo-replicaset-rs0-1 Bound pvc-c014cdbb-fbfc-4d41-9f26-1085a9bbd88e 25Gi RWO thingpark-csi-gp2-xfs <unset> 16h
Si mongod-data-mongo-replicaset-rs0-* ou data-0-kafka-cluster-kafka-* ne sont pas correctement mis à jour, vérifiez respectivement les journaux des pods de déploiement psmdb-operator et strimzi-cluster-operator avant de contacter le Support.
2. Montée en charge de la pile Thingpark Enterprise
Cette section n’est pas requise si la taille du disque lrc n’est pas modifiée (par exemple passage du profil m au profil l).
Si lrc.persistence.size est modifiée par le nouveau profil, mettez à jour le PVC approprié.
-
Mettez à jour les Persistent Volume Claims de lrc avec la valeur
lrc.persistence.sizekubectl patch -n $NAMESPACE pvc data-lrc-0 -p '{"spec":{"resources":{"requests":{"storage":"<new_size>Gi"}}}}'
kubectl patch -n $NAMESPACE pvc data-lrc-1 -p '{"spec":{"resources":{"requests":{"storage":"<new_size>Gi"}}}}'Surveillez que le contrôleur de stockage augmente progressivement chaque PVC.
kubectl -n $NAMESPACE describe pvc data-lrc-0
kubectl -n $NAMESPACE describe pvc data-lrc-1 -
Lorsque le redimensionnement du volume persistant est terminé, supprimez le StatefulSet lrc avec
cascad=orphankubectl -n $NAMESPACE delete sts --cascade=orphan lrc -
Enfin, mettez à jour la release Helm
tpeavec le fichier de personnalisation mis à jour :
helm upgrade -i tpe --debug --timeout 20m -n $NAMESPACE \
actility/thingpark-enterprise --version $THINGPARK_ENTERPRISE_VERSION \
-f values-thingpark-stack-all.yaml
Option B : Mise à l’échelle avec sauvegarde et restauration
La procédure de mise à l'échelle consiste à :
- Sauvegardez vos données du déploiement initial,
- Désinstallez les piles ThingPark Enterprise et ThingPark Data,
- Installez un nouveau déploiement vide de ThingPark Enterprise,
- Restaurez les données de la sauvegarde effectuée à l'Étape 1
-
Il s'agit d'une opération majeure avec les impacts suivants :
- Interruption de service pour les flux API/GUI et passerelle
- Des paquets peuvent être perdus ou en file d'attente lors du redéploiement
-
La même version de ThingPark Enterprise doit être utilisée pour déployer l'infrastructure mise à l'échelle.
-
La sauvegarde doit être effectuée le plus proche possible de la désinstallation
1. Sauvegarder les données
-
Exécuter le script de sauvegarde en utilisant le point d'API exec de Kubernetes
export NAMESPACE=thingpark-enterprise
kubectl exec -it -n $NAMESPACE deploy/tp-backup-controller -- tp-backup -o backup -
Notez le nom de la sauvegarde pour la restauration
kubectl exec -it -n $NAMESPACE deploy/tp-backup-controller -- tp-backup -o list
2) Désinstaller
-
Commencez par désinstaller les charts
helm -n $NAMESPACE uninstall tpe tpe-controllers tpe-data tpe-data-controllers -
Supprimez l'espace de noms (nécessaire pour nettoyer toutes les données persistantes)
kubectl delete ns $NAMESPACE
3) Nouveau déploiement de la version Helm
En utilisant les fichiers de personnalisation values-data-stack-all.yaml et
values-thingpark-stack-all.yaml récupérés précédemment, suivez la
Procédure de déploiement pour redéployer
ThingPark Enterprise sur votre cluster.
- Définissez la variable d'environnement
RELEASEavec la même version du déploiement précédent de ThingPark Enterprise - Définissez la variable d'environnement
SEGMENTavec le dimensionnement ciblé
5. Restauration de données
Déclenchez la restauration des données (la commande demandera une confirmation) en utilisant le nom initial de la sauvegarde :
kubectl exec -it -n $NAMESPACE deploy/tp-backup-controller -- tp-backup -o restore -b %backup name%