Cette rubrique décrit comment mettre à niveau un registre d'images Harbor privé à partir d'un fichier OVA téléchargé, afin de mettre à niveau Tanzu Kubernetes Grid (TKG) dans un environnement de vSphere hors ligne. Ce registre Harbor s'exécute en parallèle et séparément de TKG pour stocker et gérer les images de composants utilisées par TKG.
ImportantCe déploiement d'Harbor basé sur une VM est uniquement pris en charge pour héberger des images système TKG dans un environnement à accès restreint à Internet ou isolé. Pour déployer une instance de Harbor évolutive et hautement disponible pouvant gérer un grand nombre d'images pour des applications hébergées dans un environnement de production, déployez le module Harbor sur des clusters TKG, comme décrit dans la section Installer Harbor pour le registre de service du document Création et gestion de clusters de charge de travail TKG 2.4 avec la CLI Tanzu.
Pour sauvegarder et restaurer un registre Harbor hors ligne, reportez-vous à la section Sauvegarder et restaurer un registre Harbor hors ligne sur vSphere.
Les procédures suivantes mettent à niveau une instance de Harbor qui s'exécute sur vSphere, à l'aide de deux fichiers OVA :
Le disque de données pour OVA 1 contient toutes les données actuellement utilisées par Harbor, notamment les images, les utilisateurs, les projets et les mots de passe.
Lors de la mise à niveau de Harbor à partir de l'ancien fichier OVA, OVA 1 vers le nouveau fichier OVA, OVA 2, vous pouvez effectuer une mise à niveau automatique en exécutant un script ou manuellement.
RemarqueLe processus de mise à niveau du fichier OVA remplace les paramètres Mot de passe administrateur (Administrator Password) et Mot de passe de la base de données (Database Password) sous Personnaliser le modèle (Customize Template) > Configurations Harbor (Harbor Configurations) par les paramètres de mot de passe du fichier OVA 1.
Le fichier OVA Harbor 2.8.2 et les versions ultérieures prennent en charge la configuration de
bip
et dedefault-address-pools
pour Dockerdaemon.json
. Cette configuration n'est pas migrée par les étapes manuelles ou par l'exécution du scriptharbor-upgrade.sh
. Vous devez le reconfigurer lors du déploiement du nouveau fichier OVA, OVA 2.
Le fichier OVA Harbor 2.8.2 et les versions ultérieures fournissent un script, harbor-upgrade.sh
, qui effectue les mises à niveau du fichier OVA Harbor automatiquement.
ImportantAvant d'exécuter le script
harbor-upgrade.sh
, vous devez supprimer tous les snapshots existants de la VM OVA 1. En présence de snapshots sur la VM OVA 1, le disque de données ne peut pas être développé lorsque vous effectuez la mise à niveau automatique. Le script se ferme alors sans s'exécuter. Pour ne pas supprimer les snapshots, vous devez effectuer une mise à niveau manuelle.
Exécutez le script /etc/goharbor/harbor/harbor-upgrade.sh
.
Avant d'exécuter le script, vous devez collecter certaines informations requises pour exécuter le script :
/etc/goharbor/harbor/harbor-upgrade.sh --old-ova-vm-name OLD_OVA_VM_NAME
Pour plus d'informations sur l'utilisation du script harbor-upgrade.sh
, exécutez /etc/goharbor/harbor/harbor-upgrade.sh -h
.
Pour effectuer une mise à niveau manuelle d'Harbor, migrez les données en ajoutant le disque de données OVA 1 comme disque existant à OVA 2, puis en copiant sur son contenu :
Téléchargez un nouveau fichier OVA Harbor à partir de la page de téléchargements de Tanzu Kubernetes Grid et déployez-le sur vSphere en suivant la procédure décrite dans la section Déployer un registre Harbor hors ligne sur vSphere.
Mettez OVA 1 hors tension.
Dans vSphere, cliquez avec le bouton droit sur OVA 1 dans l'inventaire et sélectionnez Alimentation (Power) > Arrêter le SE invité (Shut Down Guest OS) :
Prenez un snapshot d'OVA 1 :
Pour effectuer une restauration à partir de cette sauvegarde, reportez-vous à la section Sauvegarder et restaurer un registre Harbor hors ligne sur vSphere.
Récupérez l'emplacement du fichier de disque OVA 1. Cliquez avec le bouton droit sur OVA 1 dans l'inventaire, sélectionnez Modifier les paramètres (Edit Settings) > Fichier du disque (Disk File) et enregistrez la valeur.
Ne remettez pas OVA 1 sous tension pendant le processus de mise à niveau.
Connectez-vous à OVA 2 via ssh
:
ssh root@OVA2-IP
Arrêtez Harbor sur OVA 2 :
Vérifiez que Harbor est en cours d'exécution :
docker ps
Arrêtez le processus Harbor :
systemctl stop harbor
Vérifiez que Harbor est arrêté et qu'il n'est pas en cours d'exécution :
docker ps
Ajoutez le disque de données OVA 1 en tant que « disque existant » à OVA 2 :
dans vSphere, cliquez avec le bouton droit sur la VM OVA 2 et choisissez Modifier les paramètres (Edit Settings).
Une nouvelle fenêtre s'affiche. Dans le menu déroulant AJOUTER UN NOUVEAU PÉRIPHÉRIQUE (ADD NEW DEVICE) en haut à droite, sélectionnez Disque dur existant (Existing Hard Disk).
Sous Sélectionner un fichier (Select File), sélectionnez la banque de données OVA 1, telle que vsanDatastore, ainsi que l'emplacement de son fichier de disque, comme enregistré précédemment. L'emplacement du fichier se termine par .vmdk
. Cliquez sur OK.
Une liste Nouveau disque dur (New Hard Disk) est ajoutée dans l'onglet Modifier les paramètres (Edit Settings) > Paramètres virtuels (Virtual Settings). Cliquez sur OK.
Attendez la fin de l'ajout du nouveau disque dans la barre Tâches récentes (Recent Tasks).
Pour vérifier que le disque de données d'OVA 1 a été ajouté à OVA 2, cliquez avec le bouton droit sur sa liste et sélectionnez Modifier les paramètres (Edit Settings).
Montez le disque avec les données OVA 1 dans le système de fichiers OVA 2 :
À partir de l'invite de commande connectée à OVA 2 via ssh
, exécutez lsblk
pour voir à quel périphérique de traitement par bloc le disque récemment ajouté a été ajouté.
Exécutez mkdir -p /ova1
pour créer un point de montage pour le nouveau disque dans le système de fichiers OVA 2.
Exécutez la commande mount
pour monter le périphérique de traitement par bloc sur le point de montage situé au niveau supérieur du système de fichiers, par exemple :
mount DEVICE /ova1
Où DEVICE
est le nouveau périphérique répertorié par lsblk
, par exemple /dev/sdc1
.
Sauvegardez le fichier harbor.yml
dans un nom de fichier qui indique la version Harbor OVA 2, par exemple :
Si votre nouvelle version du fichier OVA Harbor (ova2) est la version 2.8.4, remplacez harborXYZ.origin.yml par harbor284.origin.yml
.
mv /etc/goharbor/harbor/harbor.yml /etc/goharbor/harbor/harborXYZ.origin.yml
Copiez le fichier harbor.yml
du disque de données OVA 1 migré vers le répertoire Harbor OVA 2, par exemple :
cp -pr /ova1/harbor.yml /etc/goharbor/harbor/harbor.yml
Si votre fichier OVA 2 dispose d'une adresse IP allouée dynamiquement, ou d'une adresse IP statique ou d'un nom de domaine complet différent d'OVA 1, vous devrez peut-être mettre à jour le paramètre hostname
dans son fichier /etc/goharbor/harbor/harbor.yml
en conséquence. Si la valeur hostname
copiée à partir d'OVA 1 est incorrecte pour OVA 2, remplacez-la par une adresse ou un nom de domaine complet correct pour OVA 2.
RemarqueVous n'avez pas besoin de copier les certificats d'OVA 1 vers OVA 2. En fonction de la gestion du réseau, le certificat sur OVA 2 est nouveau ou identique au certificat OVA 1, mais il fonctionnera dans tous les cas.
Supprimez les répertoires suivants d'OVA 2 :
rm -rf /storage/data/!(ca_download)
rm -rf /storage/log/*
Copiez le répertoire de données du disque de données OVA 1 vers OVA 2 :
cp -pr /ova1/data/!(ca_download) /storage/data
Copiez le répertoire des journaux Harbor du disque de données OVA 1 vers OVA 2 :
cp -pr /ova1/log/* /storage/log
Démontez le disque OVA 1 d'OVA 2 :
umount /ova1
rm -rf /ova1
Supprimez le disque de données OVA 1 d'OVA 2. Dans vCenter, Matériel virtuel (Virtual Hardware) > Modifier les paramètres (Edit Settings) pour OVA 2, cliquez sur le bouton X sur la ligne répertoriant le disque dur OVA 1 ajouté. Ne cochez pas la case Supprimer les fichiers à partir de la banque de données (Delete files from datastore) et cliquez sur OK pour confirmer.
Mettez à niveau le fichier harbor.yml
copié en exécutant migrate
dans le conteneur Harbor :
cd /etc/goharbor/harbor
docker run -it --rm -v /:/hostfs vmware.io/goharbor/prepare:TAG migrate -i /etc/goharbor/harbor/harbor.yml
TAG
correspond à la balise d'image Harbor pour OVA 2, par exemple :
root@localhost [ /etc/goharbor/harbor ]# docker images | grep vmware.io/goharbor/prepare
vmware.io/goharbor/prepare v2.8.4_vmware.2 a82940c8052a 2 weeks ago 163MB
root@localhost [ /etc/goharbor/harbor ]# docker run -it --rm -v /:/hostfs vmware.io/goharbor/prepare:v2.8.4_vmware.2 migrate -i /etc/goharbor/harbor/harbor.yml
migrating to version 2.7.0
migrating to version 2.8.0
Written new values to /etc/goharbor/harbor/harbor.yml
Copiez la nouvelle version OVA 2 de Harbor harbor.yml
dans /storage/harbor.yml
:
cp -pr /etc/goharbor/harbor/harbor.yml /storage/harbor.yml
Exécutez le script Harbor prepare
dans OVA 2. Selon que vous avez activé ou non le scanner Harbor par défaut dans OVA 1, vous devrez peut-être ajouter l'indicateur --with-trivy
:
Scanner non activé (Scanner not enabled) :
cd /etc/goharbor/harbor && /etc/goharbor/harbor/prepare
Scanner activé (Scanner enabled) :
cd /etc/goharbor/harbor && /etc/goharbor/harbor/prepare --with-trivy
Démarrez le service Harbor :
systemctl start harbor