4.7. Gestion des catalogues personnalisés


Les administrateurs ayant le rôle d’administrateur dédié et les responsables du catalogue de l’opérateur peuvent créer et gérer des catalogues personnalisés emballés à l’aide du format bundle sur Operator Lifecycle Manager (OLM) dans OpenShift Dedicated.

Important

Kubernetes déprécie périodiquement certaines API qui sont supprimées dans les versions ultérieures. En conséquence, les opérateurs ne peuvent pas utiliser les API supprimées à partir de la version d’OpenShift Dedicated qui utilise la version Kubernetes qui a supprimé l’API.

Lorsque votre cluster utilise des catalogues personnalisés, consultez la compatibilité de Controlling Operator avec les versions dédiées d’OpenShift pour plus de détails sur la façon dont les auteurs de l’opérateur peuvent mettre à jour leurs projets afin d’éviter les problèmes de charge de travail et d’éviter les mises à niveau incompatibles.

4.7.1. Conditions préalables

  • C’est vous qui avez installé l’opm CLI.

4.7.2. Catalogues basés sur des fichiers

Les catalogues basés sur des fichiers sont la dernière itération du format de catalogue dans Operator Lifecycle Manager (OLM). Il s’agit d’un texte simple (JSON ou YAML) et d’une évolution de configuration déclarative du format de base de données SQLite antérieur, et il est entièrement rétrocompatible.

Important

À partir d’OpenShift Dedicated 4.11, le catalogue de l’opérateur par défaut Red Hat est publié dans le format de catalogue basé sur des fichiers. Les catalogues d’opérateurs Red Hat fournis par défaut pour OpenShift Dedicated 4.6 à 4.10 publiés dans le format de base de données SQLite obsolète.

Les sous-commandes opm, les drapeaux et les fonctionnalités liés au format de base de données SQLite sont également obsolètes et seront supprimés dans une version ultérieure. Les fonctionnalités sont toujours prises en charge et doivent être utilisées pour les catalogues utilisant le format de base de données SQLite obsolète.

La plupart des sous-commandes et des drapeaux opm pour travailler avec le format de base de données SQLite, tels que le prune de l’index opm, ne fonctionnent pas avec le format de catalogue basé sur des fichiers. Consultez le format d’emballage Operator Framework pour plus d’informations sur le travail avec les catalogues basés sur des fichiers.

Il est possible d’utiliser l’opm CLI pour créer une image de catalogue qui utilise le format de catalogue basé sur un fichier en texte brut (JSON ou YAML), qui remplace le format de base de données SQLite obsolète.

Conditions préalables

  • C’est vous qui avez installé l’opm CLI.
  • Il y a la version 1.9.3+ de podman.
  • L’image groupée est construite et poussée vers un registre qui prend en charge Docker v2-2.

Procédure

  1. Initialiser le catalogue:

    1. Créer un répertoire pour le catalogue en exécutant la commande suivante:

      $ mkdir <catalog_dir>
      Copy to Clipboard Toggle word wrap
    2. Générer un Dockerfile qui peut construire une image de catalogue en exécutant la commande opm générer dockerfile:

      $ opm generate dockerfile <catalog_dir> \
          -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4 
      1
      Copy to Clipboard Toggle word wrap
      1
      Indiquez l’image de base officielle Red Hat en utilisant le drapeau -i, sinon le Dockerfile utilise l’image par défaut en amont.

      Le Dockerfile doit être dans le même répertoire parent que le répertoire de catalogue que vous avez créé à l’étape précédente:

      Exemple de structure de répertoire

      . 
      1
      
      ├── <catalog_dir> 
      2
      
      └── <catalog_dir>.Dockerfile 
      3
      Copy to Clipboard Toggle word wrap

      1
      Annuaire parent
      2
      Annuaire du catalogue
      3
      Dockerfile généré par l’opm générer la commande dockerfile
    3. Remplissez le catalogue avec la définition du paquet pour votre opérateur en exécutant la commande opm init:

      $ opm init <operator_name> \ 
      1
      
          --default-channel=preview \ 
      2
      
          --description=./README.md \ 
      3
      
          --icon=./operator-icon.svg \ 
      4
      
          --output yaml \ 
      5
      
          > <catalog_dir>/index.yaml 
      6
      Copy to Clipboard Toggle word wrap
      1
      Exploitant, ou paquet, nom
      2
      Canal auquel les abonnements par défaut s’ils ne sont pas spécifiés
      3
      Chemin vers la documentation README.md de l’opérateur ou autre documentation
      4
      Chemin vers l’icône de l’opérateur
      5
      Format de sortie: JSON ou YAML
      6
      Chemin de création du fichier de configuration du catalogue

      Cette commande génère un blob de configuration déclaratif olm.package dans le fichier de configuration du catalogue spécifié.

  2. Ajouter un paquet au catalogue en exécutant la commande de rendu opm:

    $ opm render <registry>/<namespace>/<bundle_image_name>:<tag> \ 
    1
    
        --output=yaml \
        >> <catalog_dir>/index.yaml 
    2
    Copy to Clipboard Toggle word wrap
    1
    Dessinez les spécifications pour l’image de paquet
    2
    Chemin d’accès au fichier de configuration du catalogue
    Note

    Les canaux doivent contenir au moins un paquet.

  3. Ajoutez une entrée de canal pour le paquet. À titre d’exemple, modifiez l’exemple suivant à vos spécifications et ajoutez-le à votre fichier &lt;catalog_dir&gt;/index.yaml:

    Exemple d’entrée de canal

    ---
    schema: olm.channel
    package: <operator_name>
    name: preview
    entries:
      - name: <operator_name>.v0.1.0 
    1
    Copy to Clipboard Toggle word wrap

    1
    Assurez-vous d’inclure la période (.) après &lt;operator_name&gt; mais avant le v dans la version. Dans le cas contraire, l’entrée ne parvient pas à passer la commande de validation opm.
  4. De valider le catalogue basé sur les fichiers:

    1. Exécutez la commande opm valider par rapport au répertoire du catalogue:

      $ opm validate <catalog_dir>
      Copy to Clipboard Toggle word wrap
    2. Assurez-vous que le code d’erreur est 0:

      $ echo $?
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      0
      Copy to Clipboard Toggle word wrap

  5. Créez l’image du catalogue en exécutant la commande podman build:

    $ podman build . \
        -f <catalog_dir>.Dockerfile \
        -t <registry>/<namespace>/<catalog_image_name>:<tag>
    Copy to Clipboard Toggle word wrap
  6. Appuyez sur l’image du catalogue vers un registre:

    1. Au besoin, authentifier avec votre registre cible en exécutant la commande de connexion podman:

      $ podman login <registry>
      Copy to Clipboard Toggle word wrap
    2. Appuyez sur l’image du catalogue en exécutant la commande podman push:

      $ podman push <registry>/<namespace>/<catalog_image_name>:<tag>
      Copy to Clipboard Toggle word wrap

Il est possible d’utiliser l’opm CLI pour mettre à jour ou filtrer une image de catalogue qui utilise le format de catalogue basé sur des fichiers. En extrayant le contenu d’une image de catalogue existante, vous pouvez modifier le catalogue au besoin, par exemple:

  • Ajout de paquets
  • En supprimant les paquets
  • La mise à jour des entrées de paquet existantes
  • Détail des messages de déprécation par paquet, canal et paquet

Ensuite, vous pouvez reconstruire l’image comme une version mise à jour du catalogue.

Conditions préalables

  • Il y a ce qui suit sur votre poste de travail:

    • L’opm CLI.
    • la version 1.9.3+ de Podman.
    • Image de catalogue basée sur des fichiers.
    • La structure d’un répertoire de catalogue a récemment initialisé sur votre poste de travail lié à ce catalogue.

      Lorsque vous n’avez pas de répertoire de catalogue initialisé, créez le répertoire et générez le Dockerfile. Consultez l’étape "Initialiser le catalogue" à partir de la procédure "Créer une image de catalogue basée sur un fichier".

Procédure

  1. Extraire le contenu de l’image du catalogue au format YAML dans un fichier index.yaml dans votre répertoire de catalogue:

    $ opm render <registry>/<namespace>/<catalog_image_name>:<tag> \
        -o yaml > <catalog_dir>/index.yaml
    Copy to Clipboard Toggle word wrap
    Note

    Alternativement, vous pouvez utiliser le drapeau -o json pour afficher au format JSON.

  2. Modifiez le contenu du fichier index.yaml résultant à vos spécifications:

    Important

    Après la publication d’un paquet dans un catalogue, supposez que l’un de vos utilisateurs l’a installé. Assurez-vous que tous les paquets publiés précédemment dans un catalogue disposent d’un chemin de mise à jour vers la tête de canal actuelle ou plus récente pour éviter d’échouer les utilisateurs qui ont cette version installée.

    • Afin d’ajouter un opérateur, suivez les étapes de création de paquets, de paquets et de canaux dans la procédure "Créer une image de catalogue basée sur un fichier".
    • Afin de supprimer un opérateur, supprimez les blobs olm.package, olm.channel et olm.bundle qui se rapportent au paquet. L’exemple suivant montre un ensemble qui doit être supprimé pour supprimer le package example-operator du catalogue:

      Exemple 4.9. Exemple d’entrées supprimées

      ---
      defaultChannel: release-2.7
      icon:
        base64data: <base64_string>
        mediatype: image/svg+xml
      name: example-operator
      schema: olm.package
      ---
      entries:
      - name: example-operator.v2.7.0
        skipRange: '>=2.6.0 <2.7.0'
      - name: example-operator.v2.7.1
        replaces: example-operator.v2.7.0
        skipRange: '>=2.6.0 <2.7.1'
      - name: example-operator.v2.7.2
        replaces: example-operator.v2.7.1
        skipRange: '>=2.6.0 <2.7.2'
      - name: example-operator.v2.7.3
        replaces: example-operator.v2.7.2
        skipRange: '>=2.6.0 <2.7.3'
      - name: example-operator.v2.7.4
        replaces: example-operator.v2.7.3
        skipRange: '>=2.6.0 <2.7.4'
      name: release-2.7
      package: example-operator
      schema: olm.channel
      ---
      image: example.com/example-inc/example-operator-bundle@sha256:<digest>
      name: example-operator.v2.7.0
      package: example-operator
      properties:
      - type: olm.gvk
        value:
          group: example-group.example.io
          kind: MyObject
          version: v1alpha1
      - type: olm.gvk
        value:
          group: example-group.example.io
          kind: MyOtherObject
          version: v1beta1
      - type: olm.package
        value:
          packageName: example-operator
          version: 2.7.0
      - type: olm.bundle.object
        value:
          data: <base64_string>
      - type: olm.bundle.object
        value:
          data: <base64_string>
      relatedImages:
      - image: example.com/example-inc/example-related-image@sha256:<digest>
        name: example-related-image
      schema: olm.bundle
      ---
      Copy to Clipboard Toggle word wrap
    • Afin d’ajouter ou de mettre à jour des messages de déprécation pour un opérateur, assurez-vous qu’il y a un fichier déprecations.yaml dans le même répertoire que le fichier index.yaml du paquet. Informations sur le format de fichier deprecations.yaml, voir "olm.deprecations schema".
  3. Enregistrez vos modifications.
  4. De valider le catalogue:

    $ opm validate <catalog_dir>
    Copy to Clipboard Toggle word wrap
  5. Reconstruire le catalogue:

    $ podman build . \
        -f <catalog_dir>.Dockerfile \
        -t <registry>/<namespace>/<catalog_image_name>:<tag>
    Copy to Clipboard Toggle word wrap
  6. Appuyez sur l’image du catalogue mise à jour vers un registre:

    $ podman push <registry>/<namespace>/<catalog_image_name>:<tag>
    Copy to Clipboard Toggle word wrap

La vérification

  1. Dans la console Web, accédez à la ressource de configuration OperatorHub dans la page Administration Paramètres de cluster Configuration.
  2. Ajoutez la source du catalogue ou mettez à jour la source du catalogue existant pour utiliser la spécification de traction pour votre image de catalogue mise à jour.

    De plus amples informations, voir "Ajouter une source de catalogue à un cluster" dans les "Ressources supplémentaires" de cette section.

  3. Après que la source du catalogue est dans un état READY, accédez à la page Opérateurs OperatorHub et vérifiez que les modifications que vous avez apportées sont reflétées dans la liste des Opérateurs.

4.7.3. Catalogues SQLite

Important

Le format de base de données SQLite pour les catalogues Operator est une fonctionnalité obsolète. La fonctionnalité obsolète est toujours incluse dans OpenShift Dedicated et continue d’être prise en charge; cependant, elle sera supprimée dans une version ultérieure de ce produit et n’est pas recommandée pour de nouveaux déploiements.

Dans la liste la plus récente des fonctionnalités majeures qui ont été dépréciées ou supprimées dans OpenShift Dedicated, faites référence à la section Fonctionnalités obsolètes et supprimées des notes de sortie OpenShift Dedicated.

4.7.3.1. Création d’une image d’index SQLite

Il est possible de créer une image d’index basée sur le format de base de données SQLite à l’aide de l’opm CLI.

Conditions préalables

  • C’est vous qui avez installé l’opm CLI.
  • Il y a la version 1.9.3+ de podman.
  • L’image groupée est construite et poussée vers un registre qui prend en charge Docker v2-2.

Procédure

  1. Commencez un nouvel index:

    $ opm index add \
        --bundles <registry>/<namespace>/<bundle_image_name>:<tag> \
    1
    
        --tag <registry>/<namespace>/<index_image_name>:<tag> \
    2
    
        [--binary-image <registry_base_image>] 
    3
    Copy to Clipboard Toggle word wrap
    1
    Liste séparée par virgule d’images groupées à ajouter à l’index.
    2
    La balise d’image que vous voulez que l’image de l’index ait.
    3
    Facultatif: Une image de base de registre alternative à utiliser pour servir le catalogue.
  2. Appuyez sur l’image de l’index vers un registre.

    1. Au besoin, authentifier avec votre registre cible:

      $ podman login <registry>
      Copy to Clipboard Toggle word wrap
    2. Appuyez sur l’image de l’index:

      $ podman push <registry>/<namespace>/<index_image_name>:<tag>
      Copy to Clipboard Toggle word wrap

4.7.3.2. La mise à jour d’une image d’index 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 avec le rôle dédié-admin peuvent garder les opérateurs disponibles sur leur cluster à jour en ajoutant des images groupées à l’image d’index.

Il est possible de mettre à jour une image d’index existante à l’aide de la commande Opm index add.

Conditions préalables

  • C’est vous qui avez installé l’opm CLI.
  • Il y a la version 1.9.3+ de podman.
  • L’image d’index est construite et poussée vers un registre.
  • Il existe une source de catalogue existante faisant référence à l’image de l’index.

Procédure

  1. Actualisez l’index existant en ajoutant des images groupées:

    $ 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
    Copy to Clipboard Toggle word wrap
    1
    L’indicateur --bundles spécifie une liste séparée par des virgules d’images de paquet supplémentaires à ajouter à l’index.
    2
    L’indicateur --from-index spécifie l’index précédemment poussé.
    3
    L’indicateur --tag spécifie la balise image à appliquer à l’image d’index mise à jour.
    4
    Le drapeau --pull-outil spécifie l’outil utilisé pour tirer des images de conteneur.

    là où:

    &lt;registre&gt;
    Indique le nom d’hôte du registre, tel que quay.io ou mirror.example.com.
    &lt;namespace&gt;
    Indique l’espace de noms du registre, tel que ocs-dev ou abc.
    &lt;new_bundle_image&gt;
    Indique la nouvelle image de paquet à ajouter au registre, comme ocs-operator.
    &lt;digest&gt;
    Indique l’ID d’image SHA, ou digérer, de l’image de faisceau, telle que c7f11097a628f092d8bad148406a0e0951094a03445fd4bc0775431ef683a41.
    <bx id="1" />
    Indique l’image précédemment poussée, telle que abc-redhat-operator-index.
    <bx id="1" />
    Indique une balise d’image précédemment poussée, telle que 4.
    &lt;mise à jour_tag&gt;
    Indique la balise image à appliquer à l’image d’index mise à jour, telle que 4.1.

    Commande d’exemple

    $ opm index add \
        --bundles quay.io/ocs-dev/ocs-operator@sha256:c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41 \
        --from-index mirror.example.com/abc/abc-redhat-operator-index:4 \
        --tag mirror.example.com/abc/abc-redhat-operator-index:4.1 \
        --pull-tool podman
    Copy to Clipboard Toggle word wrap

  2. Appuyez sur l’image de l’index mise à jour:

    $ podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>
    Copy to Clipboard Toggle word wrap
  3. Après que Operator Lifecycle Manager (OLM) sonde automatiquement l’image de l’index référencée dans la source du catalogue à son intervalle régulier, vérifiez que les nouveaux paquets sont ajoutés avec succès:

    $ oc get packagemanifests -n openshift-marketplace
    Copy to Clipboard Toggle word wrap

4.7.3.3. Filtrage d’une image d’index SQLite

L’image d’index, basée sur le format du paquet Opérateur, est un instantané conteneurisé d’un catalogue Opérateur. Il est possible de filtrer, ou tailler, un index de tous les paquets sauf une liste spécifiée, qui crée une copie de l’index source contenant uniquement les Opérateurs que vous souhaitez.

Conditions préalables

  • Il y a la version 1.9.3+ de podman.
  • Il y a grpcurl (outil de ligne de commande tiers).
  • C’est vous qui avez installé l’opm CLI.
  • Il y a accès à un registre qui prend en charge Docker v2-2.

Procédure

  1. Authentifier avec votre registre cible:

    $ podman login <target_registry>
    Copy to Clipboard Toggle word wrap
  2. Déterminez la liste des paquets que vous souhaitez inclure dans votre index élevé.

    1. Exécutez l’image de l’index source que vous souhaitez tailler dans un conteneur. À titre d’exemple:

      $ podman run -p50051:50051 \
          -it registry.redhat.io/redhat/redhat-operator-index:v4
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4...
      Getting image source signatures
      Copying blob ae8a0c23f5b1 done
      ...
      INFO[0000] serving registry                              database=/database/index.db port=50051
      Copy to Clipboard Toggle word wrap

    2. Dans une session terminale séparée, utilisez la commande grpcurl pour obtenir une liste des paquets fournis par l’index:

      $ grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out
      Copy to Clipboard Toggle word wrap
    3. Inspectez le fichier packages.out et identifiez les noms de paquets de cette liste que vous souhaitez conserver dans votre index élevé. À titre d’exemple:

      Exemples d’extraits de liste de paquets

      ...
      {
        "name": "advanced-cluster-management"
      }
      ...
      {
        "name": "jaeger-product"
      }
      ...
      {
      {
        "name": "quay-operator"
      }
      ...
      Copy to Clipboard Toggle word wrap

    4. Dans la session terminale où vous avez exécuté la commande podman exécuter, appuyez sur Ctrl et C pour arrêter le processus de conteneur.
  3. Exécutez la commande suivante pour tailler l’index source de tous les paquets sauf les paquets spécifiés:

    $ opm index prune \
        -f registry.redhat.io/redhat/redhat-operator-index:v4 \
    1
    
        -p advanced-cluster-management,jaeger-product,quay-operator \
    2
    
        [-i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4] \
    3
    
        -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4 
    4
    Copy to Clipboard Toggle word wrap
    1
    Index sur prune.
    2
    Liste des paquets séparés par les virgules à conserver.
    3
    Requis uniquement pour les images IBM Power® et IBM Z® : image de base du registre de l’opérateur avec l’étiquette correspondant à la version majeure et mineure du cluster dédié à OpenShift.
    4
    Balise personnalisée pour la nouvelle image d’index en cours de construction.
  4. Exécutez la commande suivante pour pousser la nouvelle image d’index vers votre registre cible:

    $ podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4
    Copy to Clipboard Toggle word wrap

    lorsque &lt;namespace&gt; est un espace de noms existant sur le registre.

4.7.4. Catalogue sources et admission de sécurité de pod

L’admission à la sécurité des pod a été introduite dans OpenShift Dedicated 4.11 pour garantir les normes de sécurité des pod. Les sources de catalogue construites à l’aide du format de catalogue SQLite et d’une version de l’outil opm CLI publié avant OpenShift Dedicated 4.11 ne peuvent pas fonctionner sous l’application de la sécurité des pods restreints.

Dans OpenShift Dedicated 4, les espaces de noms n’ont pas restreint l’application de la sécurité des pod par défaut et le mode de sécurité source du catalogue par défaut est défini à l’héritage.

L’application restreinte par défaut pour tous les espaces de noms est prévue pour inclusion dans une future version d’OpenShift Dedicated. Lorsque l’exécution restreinte se produit, le contexte de sécurité de la spécification de la pod pour les gousses sources de catalogue doit correspondre à la norme de sécurité de la gousse restreinte. Lorsque l’image source de votre catalogue nécessite une norme de sécurité différente, l’étiquette d’entrées de sécurité de pod pour l’espace de noms doit être explicitement définie.

Note

Dans le cas où vous ne souhaitez pas exécuter vos pods source de catalogue SQLite comme restreints, vous n’avez pas besoin de mettre à jour votre source de catalogue dans OpenShift Dedicated 4.

Cependant, il est recommandé de prendre des mesures dès maintenant pour s’assurer que vos sources de catalogue s’exécutent sous l’application de la sécurité des pods restreints. Lorsque vous ne prenez pas d’action pour vous assurer que vos sources de catalogue s’exécutent sous l’application de la sécurité des pods restreints, vos sources de catalogue pourraient ne pas fonctionner dans les futures versions d’OpenShift Dedicated.

En tant qu’auteur de catalogue, vous pouvez activer la compatibilité avec l’application de la sécurité des pods restreints en complétant l’une des actions suivantes:

  • Faites migrer votre catalogue vers le format de catalogue basé sur des fichiers.
  • Actualisez l’image de votre catalogue avec une version de l’outil opm CLI publié avec OpenShift Dedicated 4.11 ou version ultérieure.
Note

Le format du catalogue de base de données SQLite est obsolète, mais toujours pris en charge par Red Hat. Dans une version ultérieure, le format de base de données SQLite ne sera pas pris en charge et les catalogues devront migrer vers le format de catalogue basé sur les fichiers. À partir d’OpenShift Dedicated 4.11, le catalogue de l’opérateur par défaut Red Hat est publié dans le format de catalogue basé sur les fichiers. Les catalogues basés sur des fichiers sont compatibles avec l’application de la sécurité des pod restreints.

Lorsque vous ne souhaitez pas mettre à jour votre image de catalogue SQLite ou migrer votre catalogue vers le format de catalogue basé sur des fichiers, vous pouvez configurer votre catalogue pour fonctionner avec des autorisations élevées.

Il est possible de mettre à jour vos catalogues de format de base de données SQLite obsolètes au format de catalogue basé sur des fichiers.

Conditions préalables

  • Il y a une source de catalogue de base de données SQLite.
  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • La dernière version de l’outil Opm CLI est disponible avec OpenShift Dedicated 4 sur votre poste de travail.

Procédure

  1. Faites migrer votre catalogue de base de données SQLite vers un catalogue basé sur des fichiers en exécutant la commande suivante:

    $ opm migrate <registry_image> <fbc_directory>
    Copy to Clipboard Toggle word wrap
  2. Générez un Dockerfile pour votre catalogue basé sur des fichiers en exécutant la commande suivante:

    $ opm generate dockerfile <fbc_directory> \
      --binary-image \
      registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4
    Copy to Clipboard Toggle word wrap

Les prochaines étapes

  • Le Dockerfile généré peut être construit, étiqueté et poussé à votre registre.

4.7.4.2. La reconstruction des images du catalogue SQLite

Il est possible de reconstruire l’image de votre catalogue SQLite avec la dernière version de l’outil Opm CLI qui est publié avec votre version d’OpenShift Dedicated.

Conditions préalables

  • Il y a une source de catalogue de base de données SQLite.
  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • La dernière version de l’outil Opm CLI est disponible avec OpenShift Dedicated 4 sur votre poste de travail.

Procédure

  • Exécutez la commande suivante pour reconstruire votre catalogue avec une version plus récente de l’outil Opm CLI:

    $ opm index add --binary-image \
      registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4 \
      --from-index <your_registry_image> \
      --bundles "" -t \<your_registry_image>
    Copy to Clipboard Toggle word wrap

Dans le cas où vous ne souhaitez pas mettre à jour votre image de catalogue SQLite ou migrer votre catalogue vers le format de catalogue basé sur des fichiers, vous pouvez effectuer les actions suivantes pour vous assurer que votre source de catalogue s’exécute lorsque l’application de la sécurité de la pod par défaut est limitée:

  • Définissez manuellement le mode de sécurité du catalogue à l’héritage dans la définition de votre source de catalogue. Cette action garantit que votre catalogue s’exécute avec des autorisations héritées même si le mode de sécurité du catalogue par défaut change à restreint.
  • Étiqueter l’espace de noms source du catalogue pour l’application de la sécurité de base ou de pod privilégié.
Note

Le format du catalogue de base de données SQLite est obsolète, mais toujours pris en charge par Red Hat. Dans une version ultérieure, le format de base de données SQLite ne sera pas pris en charge et les catalogues devront migrer vers le format de catalogue basé sur les fichiers. Les catalogues basés sur des fichiers sont compatibles avec l’application de la sécurité des pod restreints.

Conditions préalables

  • Il y a une source de catalogue de base de données SQLite.
  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • Il y a un espace de noms cible qui prend en charge les pods en cours d’exécution avec la norme d’admission de sécurité élevée de base ou privilégiée.

Procédure

  1. Editez la définition de CatalogSource en définissant l’étiquette spec.grpcPodConfig.securityContextConfig sur l’héritage, comme indiqué dans l’exemple suivant:

    Exemple de CatalogSource Définition

    apiVersion: operators.coreos.com/v1alpha1
    kind: CatalogSource
    metadata:
      name: my-catsrc
      namespace: my-ns
    spec:
      sourceType: grpc
      grpcPodConfig:
        securityContextConfig: legacy
      image: my-image:latest
    Copy to Clipboard Toggle word wrap

    Astuce

    Dans OpenShift Dedicated 4, le champ spec.grpcPodConfig.securityContextConfig est défini à l’héritage par défaut. Dans une version ultérieure d’OpenShift Dedicated, il est prévu que le paramètre par défaut change pour être limité. Dans le cas où votre catalogue ne peut pas fonctionner sous une application restreinte, il est recommandé de définir manuellement ce champ sur l’héritage.

  2. Modifiez votre fichier &lt;namespace&gt;.yaml pour ajouter des normes d’admission de sécurité de pod élevées à votre espace de noms source de catalogue, comme indiqué dans l’exemple suivant:

    Exemple &lt;namespace&gt;.yaml fichier

    apiVersion: v1
    kind: Namespace
    metadata:
    ...
      labels:
        security.openshift.io/scc.podSecurityLabelSync: "false" 
    1
    
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: baseline 
    2
    
      name: "<namespace_name>"
    Copy to Clipboard Toggle word wrap

    1
    Désactivez la synchronisation des étiquettes de sécurité de pod en ajoutant l’étiquette security.openshift.io/scc.podSecurityLabelSync=false à l’espace de noms.
    2
    Appliquez l’étiquette pod-security.kubernetes.io/enforce. Définissez l’étiquette en ligne de base ou privilégiée. Utilisez le profil de sécurité de la pod de base, sauf si d’autres charges de travail dans l’espace de noms nécessitent un profil privilégié.

4.7.5. Ajout d’une source de catalogue à un cluster

L’ajout d’une source de catalogue à un cluster dédié OpenShift permet la découverte et l’installation des opérateurs pour les utilisateurs. Les administrateurs avec le rôle dédié-admin peuvent créer un objet CatalogSource qui fait référence à une image d’index. OperatorHub utilise des sources de catalogue pour peupler l’interface utilisateur.

Astuce

Alternativement, vous pouvez utiliser la console Web pour gérer les sources de catalogue. Dans la page Accueil Rechercher, sélectionnez un projet, cliquez sur la liste déroulante Ressources et recherchez CatalogSource. Il est possible de créer, mettre à jour, supprimer, désactiver et activer des sources individuelles.

Conditions préalables

  • « vous avez construit et poussé une image d’index vers un registre.
  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.

Procédure

  1. Créez un objet CatalogSource qui fait référence à votre image d’index.

    1. Modifiez ce qui suit à vos spécifications et enregistrez-le sous forme de fichier catalogSource.yaml:

      apiVersion: operators.coreos.com/v1alpha1
      kind: CatalogSource
      metadata:
        name: my-operator-catalog
        namespace: openshift-marketplace 
      1
      
        annotations:
          olm.catalogImageTemplate: 
      2
      
            "<registry>/<namespace>/<index_image_name>:v{kube_major_version}.{kube_minor_version}.{kube_patch_version}"
      spec:
        sourceType: grpc
        grpcPodConfig:
          securityContextConfig: <security_mode> 
      3
      
        image: <registry>/<namespace>/<index_image_name>:<tag> 
      4
      
        displayName: My Operator Catalog
        publisher: <publisher_name> 
      5
      
        updateStrategy:
          registryPoll: 
      6
      
            interval: 30m
      Copy to Clipboard Toggle word wrap
      1
      Lorsque vous souhaitez que la source du catalogue soit disponible à l’échelle mondiale pour les utilisateurs de tous les espaces de noms, spécifiez l’espace de noms openshift-marketplace. Dans le cas contraire, vous pouvez spécifier un espace de noms différent pour le catalogue à portée et disponible uniquement pour cet espace de noms.
      2
      Facultatif: Définir l’annotation olm.catalogImageTempler sur votre nom d’image d’index et utiliser une ou plusieurs des variables de version du cluster Kubernetes comme indiqué lors de la construction du modèle pour la balise d’image.
      3
      Indiquez la valeur de l’héritage ou de la restriction. Lorsque le champ n’est pas défini, la valeur par défaut est héritée. Dans une version ultérieure d’OpenShift Dedicated, il est prévu que la valeur par défaut soit limitée. Dans le cas où votre catalogue ne peut pas fonctionner avec des autorisations restreintes, il est recommandé de définir manuellement ce champ sur l’héritage.
      4
      Indiquez votre image d’index. Lorsque vous spécifiez une balise après le nom de l’image, par exemple :v4, la source du catalogue utilise une stratégie de traction d’image de Always, ce qui signifie que le pod tire toujours l’image avant de démarrer le conteneur. Lorsque vous spécifiez un digest, par exemple @sha256:&lt;id&gt;, la stratégie d’extraction de l’image est IfNotPresent, ce qui signifie que le pod tire l’image uniquement si elle n’existe pas déjà sur le nœud.
      5
      Indiquez votre nom ou un nom d’organisation qui publie le catalogue.
      6
      Les sources du catalogue peuvent vérifier automatiquement les nouvelles versions pour se tenir à jour.
    2. Créez l’objet CatalogSource:

      $ oc apply -f catalogSource.yaml
      Copy to Clipboard Toggle word wrap
  2. Assurez-vous que les ressources suivantes sont créées avec succès.

    1. Consultez les gousses:

      $ oc get pods -n openshift-marketplace
      Copy to Clipboard Toggle word wrap

      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
      Copy to Clipboard Toggle word wrap

    2. Consultez la source du catalogue:

      $ oc get catalogsource -n openshift-marketplace
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      NAME                  DISPLAY               TYPE PUBLISHER  AGE
      my-operator-catalog   My Operator Catalog   grpc            5s
      Copy to Clipboard Toggle word wrap

    3. Consultez le manifeste du paquet:

      $ oc get packagemanifest -n openshift-marketplace
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      NAME                          CATALOG               AGE
      jaeger-product                My Operator Catalog   93s
      Copy to Clipboard Toggle word wrap

Désormais, vous pouvez installer les Opérateurs à partir de la page OperatorHub sur votre console Web dédiée OpenShift.

4.7.6. La suppression des catalogues personnalisés

En tant qu’administrateur avec le rôle d’administrateur dédié, vous pouvez supprimer les catalogues d’opérateur personnalisés qui ont déjà été ajoutés à votre cluster en supprimant la source du catalogue connexe.

Conditions préalables

  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.

Procédure

  1. Dans la perspective de l’administrateur de la console Web, accédez à Home Rechercher.
  2. Choisissez un projet dans la liste Projet:
  3. Choisissez CatalogSource dans la liste Ressources.
  4. Choisissez le menu Options du catalogue que vous souhaitez supprimer, puis cliquez sur Supprimer CatalogSource.
Retour au début
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. Découvrez nos récentes mises à jour.

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 le Blog 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.

Theme

© 2025 Red Hat