5.10. La validation des paquets d’opérateurs
En tant qu’auteur de l’opérateur, vous pouvez exécuter la commande de validation du paquet dans le SDK de l’opérateur pour valider le contenu et le format d’un paquet Opérateur. Il est possible d’exécuter la commande sur une image de faisceau d’opérateur distant ou un répertoire de paquets Opérateur local.
La version prise en charge par Red Hat de l’outil Operator SDK CLI, y compris les outils d’échafaudage et de test connexes pour les projets d’opérateur, est dépréciée et devrait être supprimée dans une version ultérieure d’OpenShift Dedicated. Le Red Hat fournira des corrections de bogues et une prise en charge de cette fonctionnalité pendant le cycle de vie de la version actuelle, mais cette fonctionnalité ne recevra plus d’améliorations et sera supprimée des futures versions d’OpenShift Dedicated.
La version prise en charge par Red Hat du SDK de l’opérateur n’est pas recommandée pour la création de nouveaux projets d’opérateur. Les auteurs d’opérateurs avec des projets d’opérateur existants peuvent utiliser la version de l’outil Operator SDK CLI publié avec OpenShift Dedicated 4 pour maintenir leurs projets et créer des versions d’opérateur ciblant des versions plus récentes d’OpenShift Dedicated.
Les images de base suivantes pour les projets d’opérateur ne sont pas dépréciées. Les fonctionnalités d’exécution et les API de configuration de ces images de base sont toujours prises en charge pour les corrections de bogues et pour l’adressage des CVE.
- L’image de base pour les projets d’opérateurs basés sur Ansible
- L’image de base pour les projets d’opérateur basé sur Helm
Afin d’obtenir de l’information sur la version non prise en charge et gérée par la communauté du SDK de l’opérateur, voir Operator SDK (Operator Framework).
5.10.1. À propos de la commande de validation du paquet Copier lienLien copié sur presse-papiers!
Alors que la commande Operator SDK scorecard peut exécuter des tests sur votre opérateur en fonction d’un fichier de configuration et d’images de test, la sous-commande valide par paquet peut valider les répertoires de paquets locaux et les images de faisceau à distance pour le contenu et la structure.
bundle valider la syntaxe de commande
operator-sdk bundle validate <bundle_dir_or_image> <flags>
$ operator-sdk bundle validate <bundle_dir_or_image> <flags>
La commande de validation du paquet s’exécute automatiquement lorsque vous construisez votre paquet à l’aide de la commande make bundle.
Les images groupées sont tirées d’un registre distant et construites localement avant qu’elles ne soient validées. Les répertoires de paquets locaux doivent contenir des métadonnées et des manifestes de l’opérateur. Les métadonnées et les manifestes du bundle doivent avoir une structure similaire à la disposition de paquet suivante:
Exemple de mise en page de paquets
Les tests groupés 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
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
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 groupés qui entraînent des avertissements peuvent encore passer la validation avec un code de sortie de 0 tant qu’aucune erreur n’est détectée. Les tests échouent uniquement sur les erreurs.
Exemple de sortie
WARN[0000] Warning: Value : (memcached-operator.v0.0.1) annotations not found INFO[0000] All validation tests have completed successfully
WARN[0000] Warning: Value : (memcached-operator.v0.0.1) annotations not found
INFO[0000] All validation tests have completed successfully
Afin d’obtenir de plus amples informations sur la sous-commande valider le paquet, exécutez:
operator-sdk bundle validate -h
$ operator-sdk bundle validate -h
5.10.2. Ensemble intégré valider les tests Copier lienLien copié sur presse-papiers!
Le SDK de l’opérateur est livré avec des validateurs prédéfinis disposés en suites. Lorsque vous exécutez la commande de validation du paquet sans spécifier un validateur, le test par défaut s’exécute. Le test par défaut vérifie qu’un paquet respecte les spécifications définies par la communauté Operator Framework. En savoir plus, voir "Bundle Format".
Il est possible d’exécuter des validateurs optionnels pour tester des problèmes tels que la compatibilité OperatorHub ou les API Kubernetes dépréciées. Les validateurs optionnels s’exécutent toujours en plus du test par défaut.
ensemble valider la syntaxe de commande pour les suites de test optionnelles
operator-sdk bundle validate <bundle_dir_or_image>
$ operator-sdk bundle validate <bundle_dir_or_image>
--select-optional <test_label>
Le nom | Description | Étiquette |
---|---|---|
Cadre de l’opérateur | Ce validateur teste un ensemble d’opérateurs par rapport à l’ensemble des validateurs fournis par le Cadre d’opérateur. |
|
L’opérateurHub | Ce validateur teste un ensemble d’opérateurs pour la compatibilité avec OperatorHub. |
|
Bonnes pratiques | Ce validateur vérifie si un groupe d’opérateurs est conforme aux bonnes pratiques définies par le Cadre de l’opérateur. Il vérifie les problèmes, tels qu’une description CRD vide ou des ressources non prises en charge par le gestionnaire de cycle de vie de l’opérateur (OLM). |
|
5.10.3. Exécution de la commande de validation du paquet Copier lienLien copié sur presse-papiers!
Le validateur par défaut exécute un test chaque fois que vous entrez la commande de validation du paquet. Les validateurs optionnels peuvent être exécutés à l’aide du drapeau --select-optional. Les validateurs optionnels exécutent des tests en plus du test par défaut.
Conditions préalables
- Le projet d’opérateur généré à l’aide du SDK de l’opérateur
Procédure
Dans le cas où vous souhaitez exécuter le validateur par défaut par rapport à un répertoire de paquets locaux, entrez la commande suivante depuis votre répertoire de projet Opérateur:
operator-sdk bundle validate ./bundle
$ operator-sdk bundle validate ./bundle
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque vous souhaitez exécuter le validateur par défaut contre une image de faisceau d’opérateur distant, entrez la commande suivante:
operator-sdk bundle validate \ <bundle_registry>/<bundle_image_name>:<tag>
$ operator-sdk bundle validate \ <bundle_registry>/<bundle_image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow là où:
- <bundle_registry>
- Indique le registre où le paquet est hébergé, tel que quay.io/exemple.
- <bundle_image_name>
- Indique le nom de l’image du paquet, tel que l’opérateur memcached.
- <tag>
Indique la balise de l’image de paquet, telle que v1.38.0.
NoteLorsque vous souhaitez valider une image de groupe Opérateur, vous devez héberger votre image dans un registre à distance. Le SDK de l’opérateur tire l’image et la construit localement avant d’exécuter des tests. La commande de validation du paquet ne prend pas en charge le test d’images de paquets locaux.
Lorsque vous souhaitez exécuter un validateur supplémentaire contre un paquet Opérateur, entrez la commande suivante:
operator-sdk bundle validate \ <bundle_dir_or_image> \ --select-optional <test_label>
$ operator-sdk bundle validate \ <bundle_dir_or_image> \ --select-optional <test_label>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow là où:
- <bundle_dir_or_image>
- Indique le répertoire local de paquets ou l’image de paquet distant, tels que ~/projects/memcached ou quay.io/example/memcached-operator:v1.38.0.
- <test_label>
Indique le nom du validateur que vous souhaitez exécuter, tel que name=good-pratiques.
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow