Rechercher

5.11. Validation des paquets d'opérateurs

download PDF

En tant qu'auteur d'un Operator, vous pouvez exécuter la commande bundle validate dans le SDK Operator pour valider le contenu et le format d'un Operator bundle. Vous pouvez exécuter la commande sur une image de liasse Operator distante ou sur un répertoire de liasse Operator local.

5.11.1. À propos de la commande bundle validate

Alors que la commande Operator SDK scorecard permet d'exécuter des tests sur votre Operator à partir d'un fichier de configuration et d'images de test, la sous-commande bundle validate permet de valider le contenu et la structure des répertoires de paquets locaux et des images de paquets distants.

bundle validate syntaxe de la commande

$ operator-sdk bundle validate <bundle_dir_or_image> <flags>

Note

La commande bundle validate s'exécute automatiquement lorsque vous construisez votre bundle à l'aide de la commande make bundle.

Les images de l'offre groupée sont extraites d'un registre distant et construites localement avant d'être validées. Les répertoires locaux des offres groupées doivent contenir les métadonnées et les manifestes de l'opérateur. Les métadonnées et les manifestes de l'offre groupée doivent avoir une structure similaire à celle de l'offre groupée suivante :

Exemple de présentation de la liasse

./bundle
  ├── manifests
  │   ├── cache.my.domain_memcacheds.yaml
  │   └── memcached-operator.clusterserviceversion.yaml
  └── metadata
      └── annotations.yaml

Les tests de l'offre groupée passent la validation et se terminent par un code de sortie de 0 si aucune erreur n'est détectée.

Exemple de sortie

INFO[0000] All validation tests have completed successfully

Les tests échouent à la validation et se terminent par un code de sortie de 1 si des erreurs sont détectées.

Exemple de sortie

ERRO[0000] Error: Value cache.example.com/v1alpha1, Kind=Memcached: CRD "cache.example.com/v1alpha1, Kind=Memcached" is present in bundle "" but not defined in CSV

Les tests de l'offre groupée qui génèrent des avertissements peuvent toujours passer la validation avec un code de sortie de 0 tant qu'aucune erreur n'est détectée. Les tests n'échouent qu'en cas d'erreur.

Exemple de sortie

WARN[0000] Warning: Value : (memcached-operator.v0.0.1) annotations not found
INFO[0000] All validation tests have completed successfully

Pour plus d'informations sur la sous-commande bundle validate, exécutez :

$ operator-sdk bundle validate -h

5.11.2. Tests de validation des paquets intégrés

L'Operator SDK est livré avec des validateurs prédéfinis organisés en suites. Si vous exécutez la commande bundle validate sans spécifier de validateur, le test par défaut s'exécute. Le test par défaut vérifie qu'une offre groupée respecte les spécifications définies par la communauté Operator Framework. Pour plus d'informations, voir "Bundle format".

Vous pouvez exécuter des validateurs optionnels pour tester des problèmes tels que la compatibilité avec OperatorHub ou des API Kubernetes obsolètes. Les validateurs optionnels s'exécutent toujours en plus du test par défaut.

bundle validate syntaxe de la commande pour les suites de tests optionnelles

$ operator-sdk bundle validate <bundle_dir_or_image>
  --select-optional <test_label>

Tableau 5.18. Validateurs supplémentaires bundle validate
NomDescriptionÉtiquette

Cadre de l'opérateur

Ce validateur teste un paquet Operator par rapport à l'ensemble des validateurs fournis par Operator Framework.

suite=operatorframework

OperatorHub

Ce validateur teste la compatibilité d'un paquet Operator avec OperatorHub.

name=operatorhub

Bonnes pratiques

Ce validateur vérifie si une offre groupée d'opérateurs est conforme aux bonnes pratiques définies par le cadre des opérateurs. Il vérifie les problèmes, tels qu'une description CRD vide ou des ressources OLM (Operator Lifecycle Manager) non prises en charge.

name=good-practices

Ressources supplémentaires

5.11.3. Exécution de la commande bundle validate

Le validateur par défaut exécute un test chaque fois que vous entrez la commande bundle validate. Vous pouvez lancer des validateurs optionnels à l'aide de l'option --select-optional. Les validateurs optionnels exécutent des tests en plus du test par défaut.

Conditions préalables

  • Projet d'opérateur généré à l'aide de l'Operator SDK

Procédure

  1. Si vous souhaitez exécuter le validateur par défaut dans un répertoire local, entrez la commande suivante à partir du répertoire de votre projet Operator :

    $ operator-sdk bundle validate ./bundle
  2. Si vous souhaitez exécuter le validateur par défaut sur une image de regroupement d'opérateurs distante, entrez la commande suivante :

    $ operator-sdk bundle validate \
      <bundle_registry>/<bundle_image_name>:<tag>

    où :

    <bundle_registry>
    Spécifie le registre dans lequel le bundle est hébergé, par exemple quay.io/example.
    <nom_de_l'image_de_l'ensemble>
    Spécifie le nom de l'image de la liasse, par exemple memcached-operator.
    <tag>

    Spécifie l'étiquette de l'image de la liasse, par exemple v1.25.4.

    Note

    Si vous souhaitez valider une image de l'ensemble Operator, vous devez héberger votre image dans un registre distant. Le SDK Operator extrait l'image et la construit localement avant d'exécuter les tests. La commande bundle validate ne prend pas en charge les tests d'images groupées locales.

  3. Si vous souhaitez exécuter un validateur supplémentaire par rapport à une liasse d'opérateurs, entrez la commande suivante :

    $ operator-sdk bundle validate \
      <bundle_dir_or_image> \
      --select-optional <test_label>

    où :

    <bundle_dir_ou_image>
    Spécifie le répertoire de la liasse locale ou l'image de la liasse distante, telle que ~/projects/memcached ou quay.io/example/memcached-operator:v1.25.4.
    <test_label>

    Spécifie le nom du validateur que vous souhaitez exécuter, par exemple name=good-practices.

    Exemple de sortie

    ERRO[0000] Error: Value apiextensions.k8s.io/v1, Kind=CustomResource: unsupported media type registry+v1 for bundle object
    WARN[0000] Warning: Value k8sevent.v0.0.1: owned CRD "k8sevents.k8s.k8sevent.com" has an empty description

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.