Rechercher

4.10. Utilisation d'Operator Lifecycle Manager sur des réseaux restreints

download PDF

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.

Important

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 objet ClusterServiceVersion (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é

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 CLIopm .
Note

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 the OperatorHub object:

    $ oc patch OperatorHub cluster --type json \
        -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
Astuce

Alternatively, you can use the web console to manage catalog sources. From the Administration Cluster Settings Configuration OperatorHub page, click the Sources tab, where you can create, delete, disable, and enable individual sources.

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

  1. S'authentifier avec registry.redhat.io:

    $ podman login registry.redhat.io
  2. S'authentifier avec le registre cible :

    $ podman login <target_registry>
  3. Déterminez la liste des paquets que vous souhaitez inclure dans votre index élagué.

    1. 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

    2. 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
    3. 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"
      }
      ...

    4. 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.
  4. 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.
  5. 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

    <namespace> est un espace de noms existant dans le registre. Par exemple, vous pouvez créer un espace de noms olm-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 Mise en miroir d'images pour une installation déconnectée.

Important

À 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

  1. Créez un objet CatalogSource qui fait référence à votre image d'index. Si vous avez utilisé la commande oc adm catalog mirror pour mettre en miroir votre catalogue vers un registre cible, vous pouvez utiliser le fichier catalogSource.yaml généré dans votre répertoire manifests comme point de départ.

    1. 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 champ metadata.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 ou restricted. Si le champ n'est pas défini, la valeur par défaut est legacy. Dans une prochaine version d'OpenShift Container Platform, il est prévu que la valeur par défaut soit restricted. Si votre catalogue ne peut pas s'exécuter avec les autorisations restricted, il est recommandé de définir manuellement ce champ sur legacy.
      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 de Always, 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 est IfNotPresent, 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.
    2. Utilisez le fichier pour créer l'objet CatalogSource:

      $ oc apply -f catalogSource.yaml
  2. Vérifiez que les ressources suivantes ont bien été créées.

    1. 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

    2. 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

    3. 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

  1. 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 ou mirror.example.com.
    <namespace>
    Spécifie l'espace de noms du registre, par exemple ocs-dev ou abc.
    <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

  2. Pousser l'image d'index mise à jour :

    $ podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>
  3. 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 commande oc replace au lieu de la commande oc 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.

    Note

    Normalement, la commande oc apply peut être utilisée pour mettre à jour des objets existants qui ont été créés précédemment à l'aide de oc apply. Toutefois, en raison d'un problème connu concernant la taille du champ metadata.annotations dans les objets ICSP, la commande oc replace doit être utilisée pour cette étape.

  4. 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

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.