5.11. Validation des paquets d'opérateurs
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>
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>
Nom | Description | Étiquette |
---|---|---|
Cadre de l'opérateur | Ce validateur teste un paquet Operator par rapport à l'ensemble des validateurs fournis par Operator Framework. |
|
OperatorHub | Ce validateur teste la compatibilité d'un paquet Operator avec 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. |
|
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
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
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
.NoteSi 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.
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
ouquay.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