# Kubernetes Kyverno

**L'auteur original de cette page est** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)

## Définition&#x20;

Kyverno est un cadre de gestion des politiques open-source pour Kubernetes qui permet aux organisations de définir, d'appliquer et d'auditer des politiques sur l'ensemble de leur infrastructure Kubernetes. Il fournit une solution évolutive, extensible et hautement personnalisable pour gérer la sécurité, la conformité et la gouvernance des clusters Kubernetes.

## Cas d'utilisation

Kyverno peut être utilisé dans une variété de cas d'utilisation, y compris :

1. **Application des politiques réseau** : Kyverno peut être utilisé pour appliquer des politiques réseau, telles que permettre ou bloquer le trafic entre les pods ou les services.
2. **Gestion des secrets** : Kyverno peut être utilisé pour appliquer des politiques de gestion des secrets, telles que l'exigence que les secrets soient stockés dans un format ou un emplacement spécifique.
3. **Contrôle d'accès** : Kyverno peut être utilisé pour appliquer des politiques de contrôle d'accès, telles que l'exigence que les utilisateurs aient des rôles ou des autorisations spécifiques pour accéder à certaines ressources.

## **Exemple : ClusterPolicy et Policy**

Disons que nous avons un cluster Kubernetes avec plusieurs espaces de noms, et nous voulons appliquer une politique qui exige que tous les pods dans l'espace de noms `default` aient une étiquette spécifique.

**ClusterPolicy**

Une ClusterPolicy est une politique de haut niveau qui définit l'intention générale de la politique. Dans ce cas, notre ClusterPolicy pourrait ressembler à ceci :
```yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-label
spec:
rules:
- validate:
message: "Pods in the default namespace must have the label 'app: myapp'"
match:
any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
- any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
validationFailureAction: enforce
```
Lorsqu'un pod est créé dans l'espace de noms `default` sans l'étiquette `app: myapp`, Kyverno bloquera la demande et renverra un message d'erreur indiquant que le pod ne respecte pas les exigences de la politique.

## Références

* [https://kyverno.io/](https://kyverno.io/)
