|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
|
Il s'agit d'une documentation non publiée pour Admission Controller 1.34-dev. |
Création d’une stratégie
Par exemple, vous créez une stratégie de validation simple qui traite les demandes de création de Pod.
La stratégie examine l’attribut metadata.name du Pod et rejette les pods ayant un nom invalide.
Sa liste de noms invalides doit être configurable par les utilisateurs finaux de la stratégie.
Les paramètres de la stratégie ressemblent à ceci :
invalid_names:
- bad_name1
- bad_name2
La stratégie doit accepter la création d’un Pod comme le suivant :
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
Elle doit rejeter la création d’un Pod comme :
apiVersion: v1
kind: Pod
metadata:
name: bad_name1
spec:
containers:
- name: nginx
image: nginx:latest
Échafaudage du nouveau projet de stratégie
Vous pouvez créer un nouveau projet de stratégie en utilisant cargo generate avec le modèle de projet.
Tout d’abord, installez cargo-generate. Cela nécessite openssl-devel.
cargo install cargo-generate
Maintenant, échafaudez le projet comme suit :
cargo generate --git https://github.com/kubewarden/rust-policy-template \
--branch main \
--name demo
La commande produit une sortie comme :
🔧 Creating project called `+demo+`...
✨ Done! New project created /<some-path-name>/demo
Cela crée le nouveau projet de stratégie dans le sous-répertoire demo.
|
Si vous prévoyez d’utiliser la fonctionnalité de registre de conteneurs GitHub dans la démonstration, vous devez activer le support amélioré des conteneurs. |
Tests
Vous pouvez essayer :
cargo test
Cela teste l’échafaudage généré. Si tout est correctement en place, vous verrez une série de messages de compilation se terminant par une sortie comme :
running 4 tests
test settings::tests::validate_settings ... ok
test tests::accept_request_with_non_pod_resource ... ok
test tests::accept_pod_with_valid_name ... ok
test tests::reject_pod_with_invalid_name ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s