21.13. Mise en cache préalable des images pour les déploiements OpenShift à nœud unique
Dans les environnements où la bande passante est limitée et où vous utilisez la solution GitOps zero touch provisioning (ZTP) pour déployer un grand nombre de clusters, vous souhaitez éviter de télécharger toutes les images nécessaires au démarrage et à l'installation d'OpenShift Container Platform. La bande passante limitée sur les sites OpenShift distants à un seul nœud peut entraîner des délais de déploiement trop longs. L'outil factory-precaching-cli vous permet de pré-stager les serveurs avant de les envoyer au site distant pour le provisionnement ZTP.
L'outil factory-precaching-cli effectue les opérations suivantes :
- Télécharge l'image RHCOS rootfs nécessaire au démarrage de l'ISO minimale.
-
Crée une partition à partir du disque d'installation sous le nom de
data. - Formate le disque en xfs.
- Crée une partition de données GUID Partition Table (GPT) à la fin du disque, la taille de la partition étant configurable par l'outil.
- Copie les images de conteneurs nécessaires à l'installation d'OpenShift Container Platform.
- Copie les images de conteneurs requises par ZTP pour installer OpenShift Container Platform.
- Facultatif : Copie les opérateurs du jour 2 dans la partition.
L'outil factory-precaching-cli est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas leur utilisation en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
21.13.1. Obtenir l'outil factory-precaching-cli Copier lienLien copié sur presse-papiers!
Le binaire Go de l'outil factory-precaching-cli est disponible publiquement dans l'image conteneur des outils Telco RAN. Le binaire Go de l'outil factory-precaching-cli dans l'image du conteneur est exécuté sur le serveur exécutant une image RHCOS live à l'aide de podman. Si vous travaillez dans un environnement déconnecté ou si vous disposez d'un registre privé, vous devez y copier l'image afin de pouvoir la télécharger sur le serveur.
Procédure
Tirez l'image de l'outil factory-precaching-cli en exécutant la commande suivante :
# podman pull quay.io/openshift-kni/telco-ran-tools:latest
Vérification
Pour vérifier que l'outil est disponible, interrogez la version actuelle du binaire Go de l'outil factory-precaching-cli :
# podman run quay.io/openshift-kni/telco-ran-tools:latest -- factory-precaching-cli -vExemple de sortie
factory-precaching-cli version 20221018.120852+main.feecf17
21.13.2. Démarrage à partir d'une image live du système d'exploitation Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser l'outil factory-precaching-cli pour démarrer les serveurs lorsqu'un seul disque est disponible et qu'un lecteur de disque externe ne peut pas être connecté au serveur.
RHCOS exige que le disque ne soit pas utilisé lorsqu'il est sur le point d'être écrit avec une image RHCOS.
En fonction du matériel du serveur, vous pouvez monter l'ISO live RHCOS sur le serveur vierge en utilisant l'une des méthodes suivantes :
- Utilisation de l'outil Dell RACADM sur un serveur Dell.
- Utilisation de l'outil HPONCFG sur un serveur HP.
- Utilisation de l'API Redfish BMC.
Il est recommandé d'automatiser la procédure de montage. Pour automatiser la procédure, vous devez extraire les images requises et les héberger sur un serveur HTTP local.
Conditions préalables
- Vous avez mis l'hôte sous tension.
- Vous disposez d'une connectivité réseau avec l'hôte.
Cet exemple de procédure utilise l'API Redfish BMC pour monter l'ISO live RHCOS.
Monter l'ISO live RHCOS :
Vérifier l'état des supports virtuels :
$ curl --globoff -H "Content-Type: application/json" -H \ "Accept: application/json" -k -X GET --user ${username_password} \ https://$BMC_ADDRESS/redfish/v1/Managers/Self/VirtualMedia/1 | python -m json.toolMonter le fichier ISO en tant que support virtuel :
$ curl --globoff -L -w "%{http_code} %{url_effective}\\n" -ku ${username_password} -H "Content-Type: application/json" -H "Accept: application/json" -d '{"Image": "http://[$HTTPd_IP]/RHCOS-live.iso"}' -X POST https://$BMC_ADDRESS/redfish/v1/Managers/Self/VirtualMedia/1/Actions/VirtualMedia.InsertMediaDéfinir l'ordre de démarrage pour démarrer une seule fois à partir du support virtuel :
$ curl --globoff -L -w "%{http_code} %{url_effective}\\n" -ku ${username_password} -H "Content-Type: application/json" -H "Accept: application/json" -d '{"Boot":{ "BootSourceOverrideEnabled": "Once", "BootSourceOverrideTarget": "Cd", "BootSourceOverrideMode": "UEFI"}}' -X PATCH https://$BMC_ADDRESS/redfish/v1/Systems/Self
- Redémarrez et assurez-vous que le serveur démarre à partir d'un support virtuel.
21.13.3. Partitionnement du disque Copier lienLien copié sur presse-papiers!
Pour exécuter le processus complet de pré-cache, vous devez démarrer à partir d'une ISO vivante et utiliser l'outil factory-precaching-cli à partir d'une image de conteneur pour partitionner et pré-cacher tous les artefacts nécessaires.
Un live ISO ou RHCOS live ISO est nécessaire car le disque ne doit pas être utilisé lorsque le système d'exploitation (RHCOS) est écrit sur le périphérique pendant le provisionnement. Cette procédure permet également d'activer des serveurs à disque unique.
Conditions préalables
- Vous avez un disque qui n'est pas partitionné.
-
Vous avez accès à l'image
quay.io/openshift-kni/telco-ran-tools:latest. - Vous disposez de suffisamment d'espace de stockage pour installer OpenShift Container Platform et mettre en pré-cache les images requises.
Procédure
Vérifier que le disque est dégagé :
# lsblkExemple de sortie
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 93.8G 0 loop /run/ephemeral loop1 7:1 0 897.3M 1 loop /sysroot sr0 11:0 1 999M 0 rom /run/media/iso nvme0n1 259:1 0 1.5T 0 diskEffacer toutes les signatures de système de fichiers, de RAID ou de table de partition de l'appareil :
# wipefs -a /dev/nvme0n1Exemple de sortie
/dev/nvme0n1: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54 /dev/nvme0n1: 8 bytes were erased at offset 0x1749a955e00 (gpt): 45 46 49 20 50 41 52 54 /dev/nvme0n1: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
L'outil échoue si le disque n'est pas vide car il utilise la partition numéro 1 du périphérique pour la mise en cache des artefacts.
21.13.3.1. Création de la partition Copier lienLien copié sur presse-papiers!
Une fois que le périphérique est prêt, vous créez une partition unique et une table de partition GPT. La partition est automatiquement étiquetée comme data et créée à la fin du périphérique. Dans le cas contraire, la partition sera remplacée par la partition coreos-installer.
L'adresse coreos-installer exige que la partition soit créée à la fin du périphérique et qu'elle soit étiquetée comme data. Ces deux conditions sont nécessaires pour sauvegarder la partition lors de l'écriture de l'image RHCOS sur le disque.
Conditions préalables
-
Le conteneur doit fonctionner en tant que
privilegeden raison du formatage des périphériques hôtes. -
Vous devez monter le dossier
/devpour que le processus puisse être exécuté à l'intérieur du conteneur.
Procédure
Dans l'exemple suivant, la taille de la partition est de 250 GiB afin de permettre la mise en cache préalable du profil de l'UD pour les opérateurs du jour 2.
Exécutez le conteneur en tant que
privilegedet partitionnez le disque :# podman run -v /dev:/dev --privileged \ --rm quay.io/openshift-kni/telco-ran-tools:latest -- \ factory-precaching-cli partition \1 -d /dev/nvme0n1 \2 -s 2503 Vérifier les informations de stockage :
# lsblkExemple de sortie
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 93.8G 0 loop /run/ephemeral loop1 7:1 0 897.3M 1 loop /sysroot sr0 11:0 1 999M 0 rom /run/media/iso nvme0n1 259:1 0 1.5T 0 disk └─nvme0n1p1 259:3 0 250G 0 part
Vérification
Vous devez vérifier que les conditions suivantes sont remplies :
- Le périphérique possède une table de partition GPT
- La partition utilise les secteurs les plus récents de l'appareil.
-
La partition est correctement étiquetée comme
data.
Interroger l'état du disque pour vérifier que le disque est partitionné comme prévu :
# gdisk -l /dev/nvme0n1
Exemple de sortie
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/nvme0n1: 3125627568 sectors, 1.5 TiB
Model: Dell Express Flash PM1725b 1.6TB SFF
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CB5A9D44-9B3C-4174-A5C1-C64957910B61
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3125627534
Partitions will be aligned on 2048-sector boundaries
Total free space is 2601338846 sectors (1.2 TiB)
Number Start (sector) End (sector) Size Code Name
1 2601338880 3125627534 250.0 GiB 8300 data
21.13.3.2. Montage de la cloison Copier lienLien copié sur presse-papiers!
Après avoir vérifié que le disque est correctement partitionné, vous pouvez monter le périphérique sur /mnt.
Il est recommandé de monter l'appareil sur /mnt car ce point de montage est utilisé lors de la préparation du ZTP.
Vérifiez que la partition est formatée comme
xfs:# lsblk -f /dev/nvme0n1Exemple de sortie
NAME FSTYPE LABEL UUID MOUNTPOINT nvme0n1 └─nvme0n1p1 xfs 1bee8ea4-d6cf-4339-b690-a76594794071Monter la partition :
# mount /dev/nvme0n1p1 /mnt/
Vérification
Vérifiez que la partition est montée :
# lsblkExemple de sortie
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 93.8G 0 loop /run/ephemeral loop1 7:1 0 897.3M 1 loop /sysroot sr0 11:0 1 999M 0 rom /run/media/iso nvme0n1 259:1 0 1.5T 0 disk └─nvme0n1p1 259:2 0 250G 0 part /var/mnt1 - 1
- Le point de montage est
/var/mntcar le dossier/mntdans le RHCOS est un lien vers/var/mnt.
21.13.4. Téléchargement des images Copier lienLien copié sur presse-papiers!
L'outil factory-precaching-cli vous permet de télécharger les images suivantes sur votre serveur partitionné :
- Images de la plate-forme OpenShift Container
- Images de l'opérateur incluses dans le profil de l'unité distribuée (DU) pour les sites RAN 5G
- Images d'opérateurs provenant de registres déconnectés
La liste des images d'opérateurs disponibles peut varier selon les versions d'OpenShift Container Platform.
21.13.4.1. Téléchargement avec des travailleurs parallèles Copier lienLien copié sur presse-papiers!
L'outil factory-precaching-cli utilise des travailleurs parallèles pour télécharger plusieurs images simultanément. Vous pouvez configurer le nombre de travailleurs avec l'option --parallel ou -p. Le nombre par défaut est fixé à 80 % des processeurs disponibles sur le serveur.
Votre shell de connexion peut être limité à un sous-ensemble de CPU, ce qui réduit les CPU disponibles pour le conteneur. Pour lever cette restriction, vous pouvez faire précéder vos commandes de taskset 0xffffffff, par exemple :
# taskset 0xffffffff podman run --rm quay.io/openshift-kni/telco-ran-tools:latest factory-precaching-cli download --help
21.13.4.2. Préparation du téléchargement des images OpenShift Container Platform Copier lienLien copié sur presse-papiers!
Pour télécharger des images de conteneurs OpenShift Container Platform, vous devez connaître la version du moteur multicluster (MCE). Lorsque vous utilisez le drapeau --du-profile, vous devez également spécifier la version de Red Hat Advanced Cluster Management (RHACM) fonctionnant dans le hub cluster qui va provisionner l'OpenShift à nœud unique.
Conditions préalables
- Vous avez installé RHACM et MCE.
- Vous avez partitionné le périphérique de stockage.
- Vous disposez de suffisamment d'espace pour les images sur le périphérique partitionné.
- Vous avez connecté le serveur bare-metal à l'Internet.
- Vous avez un secret de tirage valide.
Procédure
Vérifiez la version de RHACM et de MCE en exécutant les commandes suivantes dans le cluster hub :
$ oc get csv -A | grep -i advanced-cluster-managementExemple de sortie
open-cluster-management advanced-cluster-management.v2.6.3 Advanced Cluster Management for Kubernetes 2.6.3 advanced-cluster-management.v2.6.3 Succeeded$ oc get csv -A | grep -i multicluster-engineExemple de sortie
multicluster-engine cluster-group-upgrades-operator.v0.0.3 cluster-group-upgrades-operator 0.0.3 Pending multicluster-engine multicluster-engine.v2.1.4 multicluster engine for Kubernetes 2.1.4 multicluster-engine.v2.0.3 Succeeded multicluster-engine openshift-gitops-operator.v1.5.7 Red Hat OpenShift GitOps 1.5.7 openshift-gitops-operator.v1.5.6-0.1664915551.p Succeeded multicluster-engine openshift-pipelines-operator-rh.v1.6.4 Red Hat OpenShift Pipelines 1.6.4 openshift-pipelines-operator-rh.v1.6.3 SucceededPour accéder au registre des conteneurs, copiez un secret d'extraction valide sur le serveur à installer :
Créez le dossier
.docker:$ mkdir /root/.dockerCopiez le tirage valide du fichier
config.jsondans le dossier.docker/précédemment créé :$ cp config.json /root/.docker/config.json1 - 1
/root/.docker/config.jsonest le chemin par défaut oùpodmanvérifie les identifiants de connexion au registre.
Si vous utilisez un registre différent pour extraire les artefacts requis, vous devez copier le secret d'extraction approprié. Si le registre local utilise TLS, vous devez également inclure les certificats du registre.
21.13.4.3. Télécharger les images d'OpenShift Container Platform Copier lienLien copié sur presse-papiers!
L'outil factory-precaching-cli permet de pré-cacher toutes les images de conteneurs nécessaires au provisionnement d'une version spécifique d'OpenShift Container Platform.
Procédure
Pré-cachez la version en exécutant la commande suivante :
# podman run -v /mnt:/mnt -v /root/.docker:/root/.docker --privileged --rm quay.io/openshift-kni/telco-ran-tools -- \ factory-precaching-cli download \1 -r 4.12.0 \2 --acm-version 2.6.3 \3 --mce-version 2.1.4 \4 -f /mnt \5 --img quay.io/custom/repository6 - 1
- Spécifie la fonction de téléchargement de l'outil factory-precaching-cli.
- 2
- Définit la version d'OpenShift Container Platform.
- 3
- Définit la version de RHACM.
- 4
- Définit la version du MCE.
- 5
- Définit le dossier dans lequel vous souhaitez télécharger les images sur le disque.
- 6
- Facultatif. Définit le référentiel dans lequel vous stockez vos images supplémentaires. Ces images sont téléchargées et mises en cache sur le disque.
Exemple de sortie
Generated /mnt/imageset.yaml Generating list of pre-cached artifacts... Processing artifact [1/176]: ocp-v4.0-art-dev@sha256_6ac2b96bf4899c01a87366fd0feae9f57b1b61878e3b5823da0c3f34f707fbf5 Processing artifact [2/176]: ocp-v4.0-art-dev@sha256_f48b68d5960ba903a0d018a10544ae08db5802e21c2fa5615a14fc58b1c1657c Processing artifact [3/176]: ocp-v4.0-art-dev@sha256_a480390e91b1c07e10091c3da2257180654f6b2a735a4ad4c3b69dbdb77bbc06 Processing artifact [4/176]: ocp-v4.0-art-dev@sha256_ecc5d8dbd77e326dba6594ff8c2d091eefbc4d90c963a9a85b0b2f0e6155f995 Processing artifact [5/176]: ocp-v4.0-art-dev@sha256_274b6d561558a2f54db08ea96df9892315bb773fc203b1dbcea418d20f4c7ad1 Processing artifact [6/176]: ocp-v4.0-art-dev@sha256_e142bf5020f5ca0d1bdda0026bf97f89b72d21a97c9cc2dc71bf85050e822bbf ... Processing artifact [175/176]: ocp-v4.0-art-dev@sha256_16cd7eda26f0fb0fc965a589e1e96ff8577e560fcd14f06b5fda1643036ed6c8 Processing artifact [176/176]: ocp-v4.0-art-dev@sha256_cf4d862b4a4170d4f611b39d06c31c97658e309724f9788e155999ae51e7188f ... Summary: Release: 4.12.0 Hub Version: 2.6.3 ACM Version: 2.6.3 MCE Version: 2.1.4 Include DU Profile: No Workers: 83
Vérification
Vérifiez que toutes les images sont compressées dans le dossier cible du serveur :
$ ls -l /mnt1 - 1
- Il est recommandé de mettre les images en pré-cache dans le dossier
/mnt.
Exemple de sortie
-rw-r--r--. 1 root root 136352323 Oct 31 15:19 ocp-v4.0-art-dev@sha256_edec37e7cd8b1611d0031d45e7958361c65e2005f145b471a8108f1b54316c07.tgz -rw-r--r--. 1 root root 156092894 Oct 31 15:33 ocp-v4.0-art-dev@sha256_ee51b062b9c3c9f4fe77bd5b3cc9a3b12355d040119a1434425a824f137c61a9.tgz -rw-r--r--. 1 root root 172297800 Oct 31 15:29 ocp-v4.0-art-dev@sha256_ef23d9057c367a36e4a5c4877d23ee097a731e1186ed28a26c8d21501cd82718.tgz -rw-r--r--. 1 root root 171539614 Oct 31 15:23 ocp-v4.0-art-dev@sha256_f0497bb63ef6834a619d4208be9da459510df697596b891c0c633da144dbb025.tgz -rw-r--r--. 1 root root 160399150 Oct 31 15:20 ocp-v4.0-art-dev@sha256_f0c339da117cde44c9aae8d0bd054bceb6f19fdb191928f6912a703182330ac2.tgz -rw-r--r--. 1 root root 175962005 Oct 31 15:17 ocp-v4.0-art-dev@sha256_f19dd2e80fb41ef31d62bb8c08b339c50d193fdb10fc39cc15b353cbbfeb9b24.tgz -rw-r--r--. 1 root root 174942008 Oct 31 15:33 ocp-v4.0-art-dev@sha256_f1dbb81fa1aa724e96dd2b296b855ff52a565fbef003d08030d63590ae6454df.tgz -rw-r--r--. 1 root root 246693315 Oct 31 15:31 ocp-v4.0-art-dev@sha256_f44dcf2c94e4fd843cbbf9b11128df2ba856cd813786e42e3da1fdfb0f6ddd01.tgz -rw-r--r--. 1 root root 170148293 Oct 31 15:00 ocp-v4.0-art-dev@sha256_f48b68d5960ba903a0d018a10544ae08db5802e21c2fa5615a14fc58b1c1657c.tgz -rw-r--r--. 1 root root 168899617 Oct 31 15:16 ocp-v4.0-art-dev@sha256_f5099b0989120a8d08a963601214b5c5cb23417a707a8624b7eb52ab788a7f75.tgz -rw-r--r--. 1 root root 176592362 Oct 31 15:05 ocp-v4.0-art-dev@sha256_f68c0e6f5e17b0b0f7ab2d4c39559ea89f900751e64b97cb42311a478338d9c3.tgz -rw-r--r--. 1 root root 157937478 Oct 31 15:37 ocp-v4.0-art-dev@sha256_f7ba33a6a9db9cfc4b0ab0f368569e19b9fa08f4c01a0d5f6a243d61ab781bd8.tgz -rw-r--r--. 1 root root 145535253 Oct 31 15:26 ocp-v4.0-art-dev@sha256_f8f098911d670287826e9499806553f7a1dd3e2b5332abbec740008c36e84de5.tgz -rw-r--r--. 1 root root 158048761 Oct 31 15:40 ocp-v4.0-art-dev@sha256_f914228ddbb99120986262168a705903a9f49724ffa958bb4bf12b2ec1d7fb47.tgz -rw-r--r--. 1 root root 167914526 Oct 31 15:37 ocp-v4.0-art-dev@sha256_fa3ca9401c7a9efda0502240aeb8d3ae2d239d38890454f17fe5158b62305010.tgz -rw-r--r--. 1 root root 164432422 Oct 31 15:24 ocp-v4.0-art-dev@sha256_fc4783b446c70df30b3120685254b40ce13ba6a2b0bf8fb1645f116cf6a392f1.tgz -rw-r--r--. 1 root root 306643814 Oct 31 15:11 troubleshoot@sha256_b86b8aea29a818a9c22944fd18243fa0347c7a2bf1ad8864113ff2bb2d8e0726.tgz
21.13.4.4. Téléchargement des images de l'opérateur Copier lienLien copié sur presse-papiers!
Vous pouvez également mettre en pré-cache les opérateurs Day-2 utilisés dans la configuration du cluster 5G Radio Access Network (RAN) Distributed Unit (DU). Les opérateurs Day-2 dépendent de la version installée d'OpenShift Container Platform.
Vous devez inclure les versions du hub RHACM et de l'opérateur MCE en utilisant les drapeaux --acm-version et --mce-version afin que l'outil factory-precaching-cli puisse pré-cacher les images de conteneurs appropriées pour les opérateurs RHACM et MCE.
Procédure
Prémettre en cache les images de l'opérateur :
# podman run -v /mnt:/mnt -v /root/.docker:/root/.docker --privileged --rm quay.io/openshift-kni/telco-ran-tools:latest -- factory-precaching-cli download \1 -r 4.12.0 \2 --acm-version 2.6.3 \3 --mce-version 2.1.4 \4 -f /mnt \5 --img quay.io/custom/repository6 --du-profile -s7 - 1
- Spécifie la fonction de téléchargement de l'outil factory-precaching-cli.
- 2
- Définit la version d'OpenShift Container Platform.
- 3
- Définit la version de RHACM.
- 4
- Définit la version du MCE.
- 5
- Définit le dossier dans lequel vous souhaitez télécharger les images sur le disque.
- 6
- Facultatif. Définit le référentiel dans lequel vous stockez vos images supplémentaires. Ces images sont téléchargées et mises en cache sur le disque.
- 7
- Spécifie la mise en cache préalable des opérateurs inclus dans la configuration de l'UD.
Exemple de sortie
Generated /mnt/imageset.yaml Generating list of pre-cached artifacts... Processing artifact [1/379]: ocp-v4.0-art-dev@sha256_7753a8d9dd5974be8c90649aadd7c914a3d8a1f1e016774c7ac7c9422e9f9958 Processing artifact [2/379]: ose-kube-rbac-proxy@sha256_c27a7c01e5968aff16b6bb6670423f992d1a1de1a16e7e260d12908d3322431c Processing artifact [3/379]: ocp-v4.0-art-dev@sha256_370e47a14c798ca3f8707a38b28cfc28114f492bb35fe1112e55d1eb51022c99 ... Processing artifact [378/379]: ose-local-storage-operator@sha256_0c81c2b79f79307305e51ce9d3837657cf9ba5866194e464b4d1b299f85034d0 Processing artifact [379/379]: multicluster-operators-channel-rhel8@sha256_c10f6bbb84fe36e05816e873a72188018856ad6aac6cc16271a1b3966f73ceb3 ... Summary: Release: 4.12.0 Hub Version: 2.6.3 ACM Version: 2.6.3 MCE Version: 2.1.4 Include DU Profile: Yes Workers: 83
21.13.4.5. Mise en cache d'images personnalisées dans des environnements déconnectés Copier lienLien copié sur presse-papiers!
L'argument --generate-imageset arrête l'outil factory-precaching-cli après que la ressource personnalisée (CR) ImageSetConfiguration a été générée. Cela vous permet de personnaliser la CR ImageSetConfiguration avant de télécharger des images. Après avoir personnalisé la CR, vous pouvez utiliser l'argument --skip-imageset pour télécharger les images que vous avez spécifiées dans la CR ImageSetConfiguration.
Vous pouvez personnaliser le ImageSetConfiguration CR de la manière suivante :
- Ajouter des opérateurs et des images supplémentaires
- Supprimer les opérateurs et les images supplémentaires
- Modifier les sources de l'opérateur et du catalogue pour les remplacer par des registres locaux ou déconnectés
Procédure
Prémettre les images en cache :
# podman run -v /mnt:/mnt -v /root/.docker:/root/.docker --privileged --rm quay.io/openshift-kni/telco-ran-tools:latest -- factory-precaching-cli download \1 -r 4.12.0 \2 --acm-version 2.6.3 \3 --mce-version 2.1.4 \4 -f /mnt \5 --img quay.io/custom/repository6 --du-profile -s \7 --generate-imageset8 - 1
- Spécifie la fonction de téléchargement de l'outil factory-precaching-cli.
- 2
- Définit la version d'OpenShift Container Platform.
- 3
- Définit la version de RHACM.
- 4
- Définit la version du MCE.
- 5
- Définit le dossier dans lequel vous souhaitez télécharger les images sur le disque.
- 6
- Facultatif. Définit le référentiel dans lequel vous stockez vos images supplémentaires. Ces images sont téléchargées et mises en cache sur le disque.
- 7
- Spécifie la mise en cache préalable des opérateurs inclus dans la configuration de l'UD.
- 8
- L'argument
--generate-imagesetgénère uniquement le CRImageSetConfiguration, ce qui vous permet de personnaliser le CR.
Exemple de sortie
Generated /mnt/imageset.yamlExemple ImageSetConfiguration CR
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration mirror: platform: channels: - name: stable-4.12 minVersion: 4.12.01 maxVersion: 4.12.0 additionalImages: - name: quay.io/custom/repository operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12 packages: - name: advanced-cluster-management2 channels: - name: 'release-2.6' minVersion: 2.6.3 maxVersion: 2.6.3 - name: multicluster-engine3 channels: - name: 'stable-2.1' minVersion: 2.1.4 maxVersion: 2.1.4 - name: local-storage-operator4 channels: - name: 'stable' - name: ptp-operator5 channels: - name: 'stable' - name: sriov-network-operator6 channels: - name: 'stable' - name: cluster-logging7 channels: - name: 'stable' - name: lvms-operator8 channels: - name: 'stable-4.12' - name: amq7-interconnect-operator9 channels: - name: '1.10.x' - name: bare-metal-event-relay10 channels: - name: 'stable' - catalog: registry.redhat.io/redhat/certified-operator-index:v4.12 packages: - name: sriov-fec11 channels: - name: 'stable'Personnaliser la ressource du catalogue dans le CR :
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration mirror: platform: [...] operators: - catalog: eko4.cloud.lab.eng.bos.redhat.com:8443/redhat/certified-operator-index:v4.12 packages: - name: sriov-fec channels: - name: 'stable'Lorsque vous téléchargez des images en utilisant un registre local ou déconnecté, vous devez d'abord ajouter des certificats pour les registres dont vous voulez extraire le contenu.
Pour éviter toute erreur, copiez le certificat de registre dans votre serveur :
# cp /tmp/eko4-ca.crt /etc/pki/ca-trust/source/anchors/.Ensuite, mettez à jour la liste de confiance des certificats :
# update-ca-trustMonter le dossier de l'hôte
/etc/pkidans l'image factory-cli :# podman run -v /mnt:/mnt -v /root/.docker:/root/.docker -v /etc/pki:/etc/pki --privileged --rm quay.io/openshift-kni/telco-ran-tools:latest -- \ factory-precaching-cli download \1 -r 4.12.0 \2 --acm-version 2.6.3 \3 --mce-version 2.1.4 \4 -f /mnt \5 --img quay.io/custom/repository6 --du-profile -s \7 --skip-imageset8 - 1
- Spécifie la fonction de téléchargement de l'outil factory-precaching-cli.
- 2
- Définit la version d'OpenShift Container Platform.
- 3
- Définit la version de RHACM.
- 4
- Définit la version du MCE.
- 5
- Définit le dossier dans lequel vous souhaitez télécharger les images sur le disque.
- 6
- Facultatif. Définit le référentiel dans lequel vous stockez vos images supplémentaires. Ces images sont téléchargées et mises en cache sur le disque.
- 7
- Spécifie la mise en cache préalable des opérateurs inclus dans la configuration de l'UD.
- 8
- L'argument
--skip-imagesetvous permet de télécharger les images que vous avez spécifiées dans votre CR personnaliséImageSetConfiguration.
Télécharger les images sans générer un nouveau CR
imageSetConfiguration:# podman run -v /mnt:/mnt -v /root/.docker:/root/.docker --privileged --rm quay.io/openshift-kni/telco-ran-tools:latest -- factory-precaching-cli download -r 4.12.0 \ --acm-version 2.6.3 --mce-version 2.1.4 -f /mnt \ --img quay.io/custom/repository \ --du-profile -s \ --skip-imageset
21.13.5. Mise en cache préalable des images dans ZTP Copier lienLien copié sur presse-papiers!
Le manifeste SiteConfig définit comment un cluster OpenShift doit être installé et configuré. Dans le flux de travail de provisionnement ZTP, l'outil factory-precaching-cli requiert les champs supplémentaires suivants dans le manifeste SiteConfig:
-
clusters.ignitionConfigOverride -
nodes.installerArgs -
nodes.ignitionConfigOverride
Exemple de SiteConfig avec des champs supplémentaires
apiVersion: ran.openshift.io/v1
kind: SiteConfig
metadata:
name: "example-5g-lab"
namespace: "example-5g-lab"
spec:
baseDomain: "example.domain.redhat.com"
pullSecretRef:
name: "assisted-deployment-pull-secret"
clusterImageSetNameRef: "img4.9.10-x86-64-appsub"
sshPublicKey: "ssh-rsa ..."
clusters:
- clusterName: "sno-worker-0"
clusterImageSetNameRef: "eko4-img4.11.5-x86-64-appsub"
clusterLabels:
group-du-sno: ""
common-411: true
sites : "example-5g-lab"
vendor: "OpenShift"
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
machineNetwork:
- cidr: 10.19.32.192/26
serviceNetwork:
- 172.30.0.0/16
networkType: "OVNKubernetes"
additionalNTPSources:
- clock.corp.redhat.com
ignitionConfigOverride: '{"ignition":{"version":"3.1.0"},"systemd":{"units":[{"name":"var-mnt.mount","enabled":true,"contents":"[Unit]\nDescription=Mount partition with artifacts\nBefore=precache-images.service\nBindsTo=precache-images.service\nStopWhenUnneeded=true\n\n[Mount]\nWhat=/dev/disk/by-partlabel/data\nWhere=/var/mnt\nType=xfs\nTimeoutSec=30\n\n[Install]\nRequiredBy=precache-images.service"},{"name":"precache-images.service","enabled":true,"contents":"[Unit]\nDescription=Extracts the precached images in discovery stage\nAfter=var-mnt.mount\nBefore=agent.service\n\n[Service]\nType=oneshot\nUser=root\nWorkingDirectory=/var/mnt\nExecStart=bash /usr/local/bin/extract-ai.sh\n#TimeoutStopSec=30\n\n[Install]\nWantedBy=multi-user.target default.target\nWantedBy=agent.service"}]},"storage":{"files":[{"overwrite":true,"path":"/usr/local/bin/extract-ai.sh","mode":755,"user":{"name":"root"},"contents":{"source":"data:,%23%21%2Fbin%2Fbash%0A%0AFOLDER%3D%22%24%7BFOLDER%3A-%24%28pwd%29%7D%22%0AOCP_RELEASE_LIST%3D%22%24%7BOCP_RELEASE_LIST%3A-ai-images.txt%7D%22%0ABINARY_FOLDER%3D%2Fvar%2Fmnt%0A%0Apushd%20%24FOLDER%0A%0Atotal_copies%3D%24%28sort%20-u%20%24BINARY_FOLDER%2F%24OCP_RELEASE_LIST%20%7C%20wc%20-l%29%20%20%23%20Required%20to%20keep%20track%20of%20the%20pull%20task%20vs%20total%0Acurrent_copy%3D1%0A%0Awhile%20read%20-r%20line%3B%0Ado%0A%20%20uri%3D%24%28echo%20%22%24line%22%20%7C%20awk%20%27%7Bprint%241%7D%27%29%0A%20%20%23tar%3D%24%28echo%20%22%24line%22%20%7C%20awk%20%27%7Bprint%242%7D%27%29%0A%20%20podman%20image%20exists%20%24uri%0A%20%20if%20%5B%5B%20%24%3F%20-eq%200%20%5D%5D%3B%20then%0A%20%20%20%20%20%20echo%20%22Skipping%20existing%20image%20%24tar%22%0A%20%20%20%20%20%20echo%20%22Copying%20%24%7Buri%7D%20%5B%24%7Bcurrent_copy%7D%2F%24%7Btotal_copies%7D%5D%22%0A%20%20%20%20%20%20current_copy%3D%24%28%28current_copy%20%2B%201%29%29%0A%20%20%20%20%20%20continue%0A%20%20fi%0A%20%20tar%3D%24%28echo%20%22%24uri%22%20%7C%20%20rev%20%7C%20cut%20-d%20%22%2F%22%20-f1%20%7C%20rev%20%7C%20tr%20%22%3A%22%20%22_%22%29%0A%20%20tar%20zxvf%20%24%7Btar%7D.tgz%0A%20%20if%20%5B%20%24%3F%20-eq%200%20%5D%3B%20then%20rm%20-f%20%24%7Btar%7D.gz%3B%20fi%0A%20%20echo%20%22Copying%20%24%7Buri%7D%20%5B%24%7Bcurrent_copy%7D%2F%24%7Btotal_copies%7D%5D%22%0A%20%20skopeo%20copy%20dir%3A%2F%2F%24%28pwd%29%2F%24%7Btar%7D%20containers-storage%3A%24%7Buri%7D%0A%20%20if%20%5B%20%24%3F%20-eq%200%20%5D%3B%20then%20rm%20-rf%20%24%7Btar%7D%3B%20current_copy%3D%24%28%28current_copy%20%2B%201%29%29%3B%20fi%0Adone%20%3C%20%24%7BBINARY_FOLDER%7D%2F%24%7BOCP_RELEASE_LIST%7D%0A%0A%23%20workaround%20while%20https%3A%2F%2Fgithub.com%2Fopenshift%2Fassisted-service%2Fpull%2F3546%0A%23cp%20%2Fvar%2Fmnt%2Fmodified-rhcos-4.10.3-x86_64-metal.x86_64.raw.gz%20%2Fvar%2Ftmp%2F.%0A%0Aexit%200"}},{"overwrite":true,"path":"/usr/local/bin/agent-fix-bz1964591","mode":755,"user":{"name":"root"},"contents":{"source":"data:,%23%21%2Fusr%2Fbin%2Fsh%0A%0A%23%20This%20script%20is%20a%20workaround%20for%20bugzilla%201964591%20where%20symlinks%20inside%20%2Fvar%2Flib%2Fcontainers%2F%20get%0A%23%20corrupted%20under%20some%20circumstances.%0A%23%0A%23%20In%20order%20to%20let%20agent.service%20start%20correctly%20we%20are%20checking%20here%20whether%20the%20requested%0A%23%20container%20image%20exists%20and%20in%20case%20%22podman%20images%22%20returns%20an%20error%20we%20try%20removing%20the%20faulty%0A%23%20image.%0A%23%0A%23%20In%20such%20a%20scenario%20agent.service%20will%20detect%20the%20image%20is%20not%20present%20and%20pull%20it%20again.%20In%20case%0A%23%20the%20image%20is%20present%20and%20can%20be%20detected%20correctly%2C%20no%20any%20action%20is%20required.%0A%0AIMAGE%3D%24%28echo%20%241%20%7C%20sed%20%27s%2F%3A.%2A%2F%2F%27%29%0Apodman%20image%20exists%20%24IMAGE%20%7C%7C%20echo%20%22already%20loaded%22%20%7C%7C%20echo%20%22need%20to%20be%20pulled%22%0A%23podman%20images%20%7C%20grep%20%24IMAGE%20%7C%7C%20podman%20rmi%20--force%20%241%20%7C%7C%20true"}}]}}'
nodes:
- hostName: "snonode.sno-worker-0.example.domain.redhat.com"
role: "master"
bmcAddress: "idrac-virtualmedia+https://10.19.28.53/redfish/v1/Systems/System.Embedded.1"
bmcCredentialsName:
name: "worker0-bmh-secret"
bootMACAddress: "e4:43:4b:bd:90:46"
bootMode: "UEFI"
rootDeviceHints:
deviceName: /dev/nvme0n1
cpuset: "0-1,40-41"
installerArgs: '["--save-partlabel", "data"]'
ignitionConfigOverride: '{"ignition":{"version":"3.1.0"},"systemd":{"units":[{"name":"var-mnt.mount","enabled":true,"contents":"[Unit]\nDescription=Mount partition with artifacts\nBefore=precache-ocp-images.service\nBindsTo=precache-ocp-images.service\nStopWhenUnneeded=true\n\n[Mount]\nWhat=/dev/disk/by-partlabel/data\nWhere=/var/mnt\nType=xfs\nTimeoutSec=30\n\n[Install]\nRequiredBy=precache-ocp-images.service"},{"name":"precache-ocp-images.service","enabled":true,"contents":"[Unit]\nDescription=Extracts the precached OCP images into containers storage\nAfter=var-mnt.mount\nBefore=machine-config-daemon-pull.service nodeip-configuration.service\n\n[Service]\nType=oneshot\nUser=root\nWorkingDirectory=/var/mnt\nExecStart=bash /usr/local/bin/extract-ocp.sh\nTimeoutStopSec=60\n\n[Install]\nWantedBy=multi-user.target"}]},"storage":{"files":[{"overwrite":true,"path":"/usr/local/bin/extract-ocp.sh","mode":755,"user":{"name":"root"},"contents":{"source":"data:,%23%21%2Fbin%2Fbash%0A%0AFOLDER%3D%22%24%7BFOLDER%3A-%24%28pwd%29%7D%22%0AOCP_RELEASE_LIST%3D%22%24%7BOCP_RELEASE_LIST%3A-ocp-images.txt%7D%22%0ABINARY_FOLDER%3D%2Fvar%2Fmnt%0A%0Apushd%20%24FOLDER%0A%0Atotal_copies%3D%24%28sort%20-u%20%24BINARY_FOLDER%2F%24OCP_RELEASE_LIST%20%7C%20wc%20-l%29%20%20%23%20Required%20to%20keep%20track%20of%20the%20pull%20task%20vs%20total%0Acurrent_copy%3D1%0A%0Awhile%20read%20-r%20line%3B%0Ado%0A%20%20uri%3D%24%28echo%20%22%24line%22%20%7C%20awk%20%27%7Bprint%241%7D%27%29%0A%20%20%23tar%3D%24%28echo%20%22%24line%22%20%7C%20awk%20%27%7Bprint%242%7D%27%29%0A%20%20podman%20image%20exists%20%24uri%0A%20%20if%20%5B%5B%20%24%3F%20-eq%200%20%5D%5D%3B%20then%0A%20%20%20%20%20%20echo%20%22Skipping%20existing%20image%20%24tar%22%0A%20%20%20%20%20%20echo%20%22Copying%20%24%7Buri%7D%20%5B%24%7Bcurrent_copy%7D%2F%24%7Btotal_copies%7D%5D%22%0A%20%20%20%20%20%20current_copy%3D%24%28%28current_copy%20%2B%201%29%29%0A%20%20%20%20%20%20continue%0A%20%20fi%0A%20%20tar%3D%24%28echo%20%22%24uri%22%20%7C%20%20rev%20%7C%20cut%20-d%20%22%2F%22%20-f1%20%7C%20rev%20%7C%20tr%20%22%3A%22%20%22_%22%29%0A%20%20tar%20zxvf%20%24%7Btar%7D.tgz%0A%20%20if%20%5B%20%24%3F%20-eq%200%20%5D%3B%20then%20rm%20-f%20%24%7Btar%7D.gz%3B%20fi%0A%20%20echo%20%22Copying%20%24%7Buri%7D%20%5B%24%7Bcurrent_copy%7D%2F%24%7Btotal_copies%7D%5D%22%0A%20%20skopeo%20copy%20dir%3A%2F%2F%24%28pwd%29%2F%24%7Btar%7D%20containers-storage%3A%24%7Buri%7D%0A%20%20if%20%5B%20%24%3F%20-eq%200%20%5D%3B%20then%20rm%20-rf%20%24%7Btar%7D%3B%20current_copy%3D%24%28%28current_copy%20%2B%201%29%29%3B%20fi%0Adone%20%3C%20%24%7BBINARY_FOLDER%7D%2F%24%7BOCP_RELEASE_LIST%7D%0A%0Aexit%200"}}]}}'
nodeNetwork:
config:
interfaces:
- name: ens1f0
type: ethernet
state: up
macAddress: "AA:BB:CC:11:22:33"
ipv4:
enabled: true
dhcp: true
ipv6:
enabled: false
interfaces:
- name: "ens1f0"
macAddress: "AA:BB:CC:11:22:33"
21.13.5.1. Comprendre le champ clusters.ignitionConfigOverride Copier lienLien copié sur presse-papiers!
Le champ clusters.ignitionConfigOverride ajoute une configuration au format Ignition pendant la phase de découverte ZTP. La configuration inclut les services systemd dans l'ISO monté sur un support virtuel. De cette manière, les scripts font partie de l'ISO live RHCOS de découverte et peuvent être utilisés pour charger les images de l'installateur assisté (AI).
systemdservices-
Les services
systemdsontvar-mnt.mountetprecache-images.services. Le serviceprecache-images.servicedépend de la partition de disque qui doit être montée dans/var/mntpar l'unitévar-mnt.mount. Le service appelle un script appeléextract-ai.sh. extract-ai.sh-
Le script
extract-ai.shextrait et charge les images requises de la partition du disque vers le conteneur de stockage local. Lorsque le script se termine avec succès, vous pouvez utiliser les images localement. agent-fix-bz1964591-
Le script
agent-fix-bz1964591est une solution de contournement pour un problème lié à AI. Pour empêcher AI de supprimer les images, ce qui peut obligeragent.serviceà les extraire à nouveau du registre, le scriptagent-fix-bz1964591vérifie si les images de conteneur demandées existent.
21.13.5.2. Comprendre le champ nodes.installerArgs Copier lienLien copié sur presse-papiers!
Le champ nodes.installerArgs vous permet de configurer la façon dont l'utilitaire coreos-installer écrit l'ISO live RHCOS sur le disque. Vous devez indiquer de sauvegarder la partition du disque intitulée data car les artefacts sauvegardés dans la partition data sont nécessaires lors de l'étape d'installation d'OpenShift Container Platform.
Les paramètres supplémentaires sont transmis directement à l'utilitaire coreos-installer qui écrit le RHCOS live sur le disque. Au prochain redémarrage, le système d'exploitation démarre à partir du disque.
Vous pouvez transmettre plusieurs options à l'utilitaire coreos-installer:
OPTIONS:
...
-u, --image-url <URL>
Manually specify the image URL
-f, --image-file <path>
Manually specify a local image file
-i, --ignition-file <path>
Embed an Ignition config from a file
-I, --ignition-url <URL>
Embed an Ignition config from a URL
...
--save-partlabel <lx>...
Save partitions with this label glob
--save-partindex <id>...
Save partitions with this number or range
...
--insecure-ignition
Allow Ignition URL without HTTPS or hash
21.13.5.3. Comprendre le champ nodes.ignitionConfigOverride Copier lienLien copié sur presse-papiers!
De manière similaire à clusters.ignitionConfigOverride, le champ nodes.ignitionConfigOverride permet d'ajouter des configurations au format Ignition à l'utilitaire coreos-installer, mais au stade de l'installation d'OpenShift Container Platform. Lorsque le RHCOS est écrit sur le disque, la configuration supplémentaire incluse dans l'ISO de découverte ZTP n'est plus disponible. Pendant la phase de découverte, la configuration supplémentaire est stockée dans la mémoire de l'OS live.
À ce stade, le nombre d'images de conteneurs extraites et chargées est plus important qu'à l'étape de découverte. En fonction de la version d'OpenShift Container Platform et de l'installation ou non des Day-2 Operators, le temps d'installation peut varier.
Au stade de l'installation, les services var-mnt.mount et precache-ocp.services systemd sont utilisés.
precache-ocp.serviceLe service
precache-ocp.servicedépend de la partition de disque qui doit être montée dans/var/mntpar l'unitévar-mnt.mount. Le serviceprecache-ocp.serviceappelle un script appeléextract-ocp.sh.ImportantPour extraire toutes les images avant l'installation d'OpenShift Container Platform, vous devez exécuter
precache-ocp.serviceavant d'exécuter les servicesmachine-config-daemon-pull.serviceetnodeip-configuration.service.extract-ocp.sh-
Le script
extract-ocp.shextrait et charge les images requises de la partition du disque vers le conteneur de stockage local. Lorsque le script se termine avec succès, vous pouvez utiliser les images localement.
Lorsque vous avez téléchargé le site SiteConfig et les ressources personnalisées (CR) PolicyGenTemplates facultatives sur le dépôt Git, qu'Argo CD surveille, vous pouvez démarrer le flux de travail ZTP en synchronisant les CR avec le cluster du hub.
21.13.6. Résolution de problèmes Copier lienLien copié sur presse-papiers!
21.13.6.1. Le catalogue rendu n'est pas valide Copier lienLien copié sur presse-papiers!
Lorsque vous téléchargez des images en utilisant un registre local ou déconnecté, vous pouvez rencontrer l'erreur The rendered catalog is invalid. Cela signifie qu'il vous manque les certificats du nouveau registre dont vous voulez extraire le contenu.
L'image de l'outil factory-precaching-cli est construite sur une image UBI RHEL. Les chemins et emplacements des certificats sont les mêmes sur RHCOS.
Exemple d'erreur
Generating list of pre-cached artifacts...
error: unable to run command oc-mirror -c /mnt/imageset.yaml file:///tmp/fp-cli-3218002584/mirror --ignore-history --dry-run: Creating directory: /tmp/fp-cli-3218002584/mirror/oc-mirror-workspace/src/publish
Creating directory: /tmp/fp-cli-3218002584/mirror/oc-mirror-workspace/src/v2
Creating directory: /tmp/fp-cli-3218002584/mirror/oc-mirror-workspace/src/charts
Creating directory: /tmp/fp-cli-3218002584/mirror/oc-mirror-workspace/src/release-signatures
backend is not configured in /mnt/imageset.yaml, using stateless mode
backend is not configured in /mnt/imageset.yaml, using stateless mode
No metadata detected, creating new workspace
level=info msg=trying next host error=failed to do request: Head "https://eko4.cloud.lab.eng.bos.redhat.com:8443/v2/redhat/redhat-operator-index/manifests/v4.11": x509: certificate signed by unknown authority host=eko4.cloud.lab.eng.bos.redhat.com:8443
The rendered catalog is invalid.
Run "oc-mirror list operators --catalog CATALOG-NAME --package PACKAGE-NAME" for more information.
error: error rendering new refs: render reference "eko4.cloud.lab.eng.bos.redhat.com:8443/redhat/redhat-operator-index:v4.11": error resolving name : failed to do request: Head "https://eko4.cloud.lab.eng.bos.redhat.com:8443/v2/redhat/redhat-operator-index/manifests/v4.11": x509: certificate signed by unknown authority
Procédure
Copiez le certificat de registre dans votre serveur :
# cp /tmp/eko4-ca.crt /etc/pki/ca-trust/source/anchors/.Mettre à jour la liste de confiance des certificats :
# update-ca-trustMonter le dossier de l'hôte
/etc/pkidans l'image factory-cli :# podman run -v /mnt:/mnt -v /root/.docker:/root/.docker -v /etc/pki:/etc/pki --privileged -it --rm quay.io/openshift-kni/telco-ran-tools:latest -- \ factory-precaching-cli download -r 4.11.5 --acm-version 2.5.4 \ --mce-version 2.0.4 -f /mnt \--img quay.io/custom/repository --du-profile -s --skip-imageset