4.10. Utilisation d'Operator Lifecycle Manager sur des réseaux restreints
Pour les clusters OpenShift Container Platform qui sont installés sur des réseaux restreints, également connus sous le nom de disconnected clusters, Operator Lifecycle Manager (OLM) par défaut ne peut pas accéder aux sources OperatorHub fournies par Red Hat et hébergées sur des registres distants, car ces sources distantes nécessitent une connectivité Internet complète.
Cependant, en tant qu'administrateur de cluster, vous pouvez toujours permettre à votre cluster d'utiliser OLM dans un réseau restreint si vous avez un poste de travail qui a un accès complet à l'internet. Le poste de travail, qui nécessite un accès complet à Internet pour extraire le contenu OperatorHub distant, est utilisé pour préparer des miroirs locaux des sources distantes et pousser le contenu vers un registre de miroirs.
Le registre miroir peut être situé sur un hôte bastion, qui nécessite une connectivité à la fois à votre station de travail et au cluster déconnecté, ou sur un hôte complètement déconnecté, ou airgapped, qui nécessite un support amovible pour déplacer physiquement le contenu mis en miroir vers l'environnement déconnecté.
Ce guide décrit la procédure suivante, nécessaire pour activer OLM dans les réseaux restreints :
- Désactiver les sources OperatorHub distantes par défaut pour OLM.
- Utiliser un poste de travail avec un accès complet à l'internet pour créer et pousser des miroirs locaux du contenu d'OperatorHub vers un registre de miroirs.
- Configurez OLM pour qu'il installe et gère des opérateurs à partir de sources locales sur le registre miroir au lieu des sources distantes par défaut.
Après avoir activé OLM dans un réseau restreint, vous pouvez continuer à utiliser votre poste de travail non restreint pour maintenir vos sources OperatorHub locales à jour au fur et à mesure que de nouvelles versions d'opérateurs sont publiées.
Bien qu'OLM puisse gérer des opérateurs à partir de sources locales, la capacité d'un opérateur donné à fonctionner avec succès dans un réseau restreint dépend toujours de l'opérateur lui-même, qui doit répondre aux critères suivants :
-
Dresser la liste des images connexes ou des autres images de conteneurs dont l'opérateur pourrait avoir besoin pour remplir ses fonctions, dans le paramètre
relatedImages
de son objetClusterServiceVersion
(CSV). - Référencer toutes les images spécifiées par un condensé (SHA) et non par un tag.
Vous pouvez rechercher des logiciels dans le catalogue de l'écosystème Red Hat pour obtenir une liste des opérateurs Red Hat qui prennent en charge l'exécution en mode déconnecté en filtrant avec les sélections suivantes :
Type | Application conteneurisée |
Méthode de déploiement | Opérateur |
Caractéristiques de l'infrastructure | Déconnecté |
Ressources supplémentaires
4.10.1. Conditions préalables
-
Connectez-vous à votre cluster OpenShift Container Platform en tant qu'utilisateur disposant des privilèges
cluster-admin
. -
Si vous souhaitez élaguer le catalogue par défaut et ne mettre en miroir de manière sélective qu'un sous-ensemble d'opérateurs, installez le CLI
opm
.
Si vous utilisez OLM dans un réseau restreint sur des systèmes IBM z, vous devez disposer d'au moins 12 Go dans le répertoire où vous placez votre registre.
4.10.2. Disabling the default OperatorHub catalog sources
Les catalogues d'opérateurs dont le contenu source est fourni par Red Hat et les projets communautaires sont configurés pour OperatorHub par défaut lors d'une installation d'OpenShift Container Platform. Dans un environnement réseau restreint, vous devez désactiver les catalogues par défaut en tant qu'administrateur de cluster. Vous pouvez ensuite configurer OperatorHub pour utiliser des sources de catalogue locales.
Procédure
Disable the sources for the default catalogs by adding
disableAllDefaultSources: true
to theOperatorHub
object:$ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
Alternatively, you can use the web console to manage catalog sources. From the Administration
4.10.3. Filtrage d'une image d'index basée sur SQLite
Une image d'index, basée sur le format Operator bundle, est un instantané conteneurisé d'un catalogue d'opérateurs. Vous pouvez filtrer, ou prune, un index de tous les paquets à l'exception d'une liste spécifiée, ce qui crée une copie de l'index source contenant uniquement les opérateurs que vous souhaitez.
Lorsque vous configurez Operator Lifecycle Manager (OLM) pour utiliser du contenu mis en miroir sur des clusters OpenShift Container Platform à réseau restreint, utilisez cette méthode d'élagage si vous souhaitez uniquement mettre en miroir un sous-ensemble d'opérateurs à partir des catalogues par défaut.
Pour les étapes de cette procédure, le registre cible est un registre miroir existant qui est accessible par votre station de travail avec un accès réseau illimité. Cet exemple montre également l'élagage de l'image d'index pour le catalogue par défaut redhat-operators
, mais le processus est le même pour n'importe quelle image d'index.
Conditions préalables
- Poste de travail avec accès illimité au réseau
-
podman
version 1.9.3 -
grpcurl
(outil de ligne de commande tiers) -
opm
- Accès à un registre qui prend en charge Docker v2-2
Procédure
S'authentifier avec
registry.redhat.io
:$ podman login registry.redhat.io
S'authentifier avec le registre cible :
$ podman login <target_registry>
Déterminez la liste des paquets que vous souhaitez inclure dans votre index élagué.
Exécutez l'image de l'index source que vous souhaitez élaguer dans un conteneur. Par exemple :
$ podman run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4.12
Exemple de sortie
Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4.12... Getting image source signatures Copying blob ae8a0c23f5b1 done ... INFO[0000] serving registry database=/database/index.db port=50051
Dans une autre session de terminal, utilisez la commande
grpcurl
pour obtenir une liste des paquets fournis par l'index :grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out
Inspectez le fichier
packages.out
et identifiez les noms de paquets de cette liste que vous souhaitez conserver dans votre index élagué. Par exemple :Exemples de listes de paquets
... { "name": "advanced-cluster-management" } ... { "name": "jaeger-product" } ... { { "name": "quay-operator" } ...
-
Dans la session de terminal où vous avez exécuté la commande
podman run
, appuyez sur Ctrl et C pour arrêter le processus de conteneur.
Exécutez la commande suivante pour élaguer l'index source de tous les paquets, à l'exception des paquets spécifiés :
$ opm index prune \ -f registry.redhat.io/redhat/redhat-operator-index:v4.12 \1 -p advanced-cluster-management,jaeger-product,quay-operator \2 [-i registry.redhat.io/openshift4/ose-operator-registry:v4.9] \3 -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4.12 4
- 1
- Index pour la taille.
- 2
- Liste de paquets à conserver, séparés par des virgules.
- 3
- Requis uniquement pour les images IBM Power et IBM zSystems : L'image de base Operator Registry avec le tag qui correspond à la version majeure et mineure du cluster OpenShift Container Platform cible.
- 4
- Balise personnalisée pour la nouvelle image d'index en cours de construction.
Exécutez la commande suivante pour transférer la nouvelle image d'index dans votre registre cible :
$ podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4.12
où
<namespace>
est un espace de noms existant dans le registre. Par exemple, vous pouvez créer un espace de nomsolm-mirror
pour y transférer tout le contenu mis en miroir.
4.10.4. Miroir d'un catalogue d'opérateurs
Pour obtenir des instructions sur la mise en miroir des catalogues d'opérateurs pour une utilisation avec des clusters déconnectés, voir Installation
À partir d'OpenShift Container Platform 4.11, le catalogue Operator fourni par Red Hat par défaut est publié dans le format de catalogue basé sur des fichiers. Les catalogues Operator fournis par Red Hat par défaut pour OpenShift Container Platform 4.6 à 4.10 sont publiés dans le format de base de données SQLite déprécié.
Les sous-commandes, drapeaux et fonctionnalités de opm
liés au format de base de données SQLite sont également obsolètes et seront supprimés dans une prochaine version. Ces fonctionnalités sont toujours prises en charge et doivent être utilisées pour les catalogues qui utilisent le format de base de données SQLite obsolète.
La plupart des sous-commandes et des drapeaux de opm
pour travailler avec le format de base de données SQLite, tels que opm index prune
, ne fonctionnent pas avec le format de catalogue basé sur des fichiers. Pour plus d'informations sur l'utilisation des catalogues basés sur des fichiers, voir Format d'empaquetage d'Operator Framework, Gestion des catalogues personnalisés et Mise en miroir des images pour une installation déconnectée à l'aide du plugin oc-mirror.
4.10.5. Ajout d'une source de catalogue à un cluster
L'ajout d'une source de catalogue à un cluster OpenShift Container Platform permet la découverte et l'installation d'opérateurs pour les utilisateurs. Les administrateurs de cluster peuvent créer un objet CatalogSource
qui référence une image d'index. OperatorHub utilise des sources de catalogue pour remplir l'interface utilisateur.
Conditions préalables
- Une image d'index est construite et poussée vers un registre.
Procédure
Créez un objet
CatalogSource
qui fait référence à votre image d'index. Si vous avez utilisé la commandeoc adm catalog mirror
pour mettre en miroir votre catalogue vers un registre cible, vous pouvez utiliser le fichiercatalogSource.yaml
généré dans votre répertoire manifests comme point de départ.Modifiez le texte suivant selon vos spécifications et sauvegardez-le sous forme de fichier
catalogSource.yaml
:apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-operator-catalog 1 namespace: openshift-marketplace 2 spec: sourceType: grpc grpcPodConfig: securityContextConfig: <security_mode> 3 image: <registry>/<namespace>/redhat-operator-index:v4.12 4 displayName: My Operator Catalog publisher: <publisher_name> 5 updateStrategy: registryPoll: 6 interval: 30m
- 1
- Si vous avez mis en miroir le contenu dans des fichiers locaux avant de le télécharger dans un registre, supprimez tous les caractères backslash (
/
) du champmetadata.name
afin d'éviter une erreur "invalid resource name" (nom de ressource non valide) lors de la création de l'objet. - 2
- Si vous souhaitez que la source du catalogue soit disponible globalement pour les utilisateurs de tous les espaces de noms, spécifiez l'espace de noms
openshift-marketplace
. Sinon, vous pouvez spécifier un espace de noms différent pour que le catalogue soit délimité et disponible uniquement pour cet espace de noms. - 3
- Spécifiez la valeur de
legacy
ourestricted
. Si le champ n'est pas défini, la valeur par défaut estlegacy
. Dans une prochaine version d'OpenShift Container Platform, il est prévu que la valeur par défaut soitrestricted
. Si votre catalogue ne peut pas s'exécuter avec les autorisationsrestricted
, il est recommandé de définir manuellement ce champ surlegacy
. - 4
- Spécifiez votre image d'index. Si vous spécifiez une balise après le nom de l'image, par exemple
:v4.12
, le pod source du catalogue utilise une politique d'extraction d'image deAlways
, ce qui signifie que le pod extrait toujours l'image avant de démarrer le conteneur. Si vous spécifiez un condensé, par exemple@sha256:<id>
, la politique d'extraction d'image estIfNotPresent
, ce qui signifie que le module n'extrait l'image que si elle n'existe pas déjà sur le nœud. - 5
- Indiquez votre nom ou le nom d'une organisation qui publie le catalogue.
- 6
- Les sources du catalogue peuvent automatiquement vérifier la présence de nouvelles versions pour rester à jour.
Utilisez le fichier pour créer l'objet
CatalogSource
:$ oc apply -f catalogSource.yaml
Vérifiez que les ressources suivantes ont bien été créées.
Vérifier les gousses :
$ oc get pods -n openshift-marketplace
Exemple de sortie
NAME READY STATUS RESTARTS AGE my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h
Vérifier la source du catalogue :
$ oc get catalogsource -n openshift-marketplace
Exemple de sortie
NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s
Vérifier le manifeste du paquet :
$ oc get packagemanifest -n openshift-marketplace
Exemple de sortie
NAME CATALOG AGE jaeger-product My Operator Catalog 93s
Vous pouvez maintenant installer les opérateurs à partir de la page OperatorHub de votre console web OpenShift Container Platform.
4.10.6. Mise à jour d'une image d'index basée sur SQLite
Après avoir configuré OperatorHub pour utiliser une source de catalogue qui fait référence à une image d'index personnalisée, les administrateurs de cluster peuvent maintenir les opérateurs disponibles sur leur cluster à jour en ajoutant des images de bundle à l'image d'index.
Vous pouvez mettre à jour une image d'index existante à l'aide de la commande opm index add
. Pour les réseaux restreints, le contenu mis à jour doit également être dupliqué sur le cluster.
Conditions préalables
-
opm
-
podman
version 1.9.3 - Une image d'index est construite et poussée vers un registre.
- Une source de catalogue existante référençant l'image d'index.
Procédure
Mettre à jour l'index existant en ajoutant des images de liasses :
$ opm index add \ --bundles <registry>/<namespace>/<new_bundle_image>@sha256:<digest> \1 --from-index <registry>/<namespace>/<existing_index_image>:<existing_tag> \2 --tag <registry>/<namespace>/<existing_index_image>:<updated_tag> \3 --pull-tool podman 4
- 1
- L'option
--bundles
spécifie une liste séparée par des virgules d'images supplémentaires à ajouter à l'index. - 2
- Le drapeau
--from-index
spécifie l'index précédemment poussé. - 3
- L'option
--tag
spécifie la balise d'image à appliquer à l'image d'index mise à jour. - 4
- L'option
--pull-tool
spécifie l'outil utilisé pour extraire les images des conteneurs.
où :
<registry>
-
Spécifie le nom d'hôte du registre, par exemple
quay.io
oumirror.example.com
. <namespace>
-
Spécifie l'espace de noms du registre, par exemple
ocs-dev
ouabc
. <new_bundle_image>
-
Spécifie la nouvelle image de paquet à ajouter au registre, par exemple
ocs-operator
. <digest>
-
Spécifie l'ID de l'image SHA, ou condensé, de l'image de la liasse, par exemple
c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41
. <existing_index_image>
-
Spécifie l'image précédemment poussée, telle que
abc-redhat-operator-index
. <existing_tag>
-
Spécifie une balise d'image précédemment poussée, telle que
4.12
. <updated_tag>
-
Spécifie la balise d'image à appliquer à l'image d'index mise à jour, par exemple
4.12.1
.
Example command
$ opm index add \ --bundles quay.io/ocs-dev/ocs-operator@sha256:c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41 \ --from-index mirror.example.com/abc/abc-redhat-operator-index:4.12 \ --tag mirror.example.com/abc/abc-redhat-operator-index:4.12.1 \ --pull-tool podman
Pousser l'image d'index mise à jour :
$ podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>
Suivez à nouveau les étapes de la procédure Mirroring an Operator catalog pour refléter le contenu mis à jour. Cependant, lorsque vous arrivez à l'étape de création de l'objet
ImageContentSourcePolicy
(ICSP), utilisez la commandeoc replace
au lieu de la commandeoc create
. Par exemple :oc replace -f ./manifests-redhat-operator-index-<random_number>/imageContentSourcePolicy.yaml
Cette modification est nécessaire car l'objet existe déjà et doit être mis à jour.
NoteNormalement, la commande
oc apply
peut être utilisée pour mettre à jour des objets existants qui ont été créés précédemment à l'aide deoc apply
. Toutefois, en raison d'un problème connu concernant la taille du champmetadata.annotations
dans les objets ICSP, la commandeoc replace
doit être utilisée pour cette étape.Une fois que Operator Lifecycle Manager (OLM) a interrogé automatiquement l'image d'index référencée dans la source du catalogue à intervalles réguliers, vérifiez que les nouveaux paquets ont été ajoutés avec succès :
$ oc get packagemanifests -n openshift-marketplace
Ressources supplémentaires