9.4. Types de plugins d'admission aux webhooks
Les administrateurs de clusters peuvent faire appel à des serveurs webhook par l'intermédiaire du plugin d'admission de mutation ou du plugin d'admission de validation dans la chaîne d'admission du serveur API.
9.4.1. Mutation du plugin d'admission
Le plugin d'admission à la mutation est invoqué pendant la phase de mutation du processus d'admission, ce qui permet de modifier le contenu de la ressource avant qu'elle ne soit conservée. Un exemple de webhook qui peut être appelé par le plugin d'admission à la mutation est la fonctionnalité Pod Node Selector, qui utilise une annotation sur un espace de noms pour trouver un sélecteur d'étiquette et l'ajouter à la spécification du pod.
Exemple de configuration du plugin d'admission à la mutation
apiVersion: admissionregistration.k8s.io/v1beta1 kind: MutatingWebhookConfiguration 1 metadata: name: <webhook_name> 2 webhooks: - name: <webhook_name> 3 clientConfig: 4 service: namespace: default 5 name: kubernetes 6 path: <webhook_url> 7 caBundle: <ca_signing_certificate> 8 rules: 9 - operations: 10 - <operation> apiGroups: - "" apiVersions: - "*" resources: - <resource> failurePolicy: <policy> 11 sideEffects: None
- 1
- Spécifie une configuration de plugin d'admission à la mutation.
- 2
- Le nom de l'objet
MutatingWebhookConfiguration
. Remplacer<webhook_name>
par la valeur appropriée. - 3
- Le nom du webhook à appeler. Remplacez
<webhook_name>
par la valeur appropriée. - 4
- Informations sur la manière de se connecter au serveur webhook, de lui faire confiance et de lui envoyer des données.
- 5
- L'espace de noms dans lequel le service frontal est créé.
- 6
- Le nom du service frontal.
- 7
- URL du webhook utilisé pour les demandes d'admission. Remplacez
<webhook_url>
par la valeur appropriée. - 8
- Un certificat d'autorité de certification codé en PEM qui signe le certificat de serveur utilisé par le serveur webhook. Remplacez
<ca_signing_certificate>
par le certificat approprié au format base64. - 9
- Règles qui définissent quand le serveur API doit utiliser ce plugin d'admission au webhook.
- 10
- Une ou plusieurs opérations qui déclenchent l'appel du serveur API à ce plugin d'admission au webhook. Les valeurs possibles sont
create
,update
,delete
ouconnect
. Remplacez<operation>
et<resource>
par les valeurs appropriées. - 11
- Indique comment la politique doit se dérouler si le serveur webhook n'est pas disponible. Remplacez
<policy>
parIgnore
(pour accepter inconditionnellement la demande en cas d'échec) ouFail
(pour refuser la demande qui a échoué). L'utilisation deIgnore
peut entraîner un comportement imprévisible pour tous les clients.
Dans OpenShift Container Platform 4.12, les objets créés par des utilisateurs ou des boucles de contrôle via un plugin d'admission mutant peuvent renvoyer des résultats inattendus, notamment si les valeurs définies dans une requête initiale sont écrasées, ce qui n'est pas recommandé.
9.4.2. Validation du plugin d'admission
Un plugin d'admission validant est invoqué pendant la phase de validation du processus d'admission. Cette phase permet d'appliquer des invariants à des ressources API particulières afin de s'assurer que la ressource ne sera pas modifiée à nouveau. Le Pod Node Selector est également un exemple de webhook appelé par le plugin de validation d'admission, pour s'assurer que tous les champs nodeSelector
sont contraints par les restrictions du sélecteur de nœuds sur l'espace de noms.
Exemple de validation de la configuration du plugin d'admission
apiVersion: admissionregistration.k8s.io/v1beta1 kind: ValidatingWebhookConfiguration 1 metadata: name: <webhook_name> 2 webhooks: - name: <webhook_name> 3 clientConfig: 4 service: namespace: default 5 name: kubernetes 6 path: <webhook_url> 7 caBundle: <ca_signing_certificate> 8 rules: 9 - operations: 10 - <operation> apiGroups: - "" apiVersions: - "*" resources: - <resource> failurePolicy: <policy> 11 sideEffects: Unknown
- 1
- Spécifie la configuration d'un plugin de validation des admissions.
- 2
- Le nom de l'objet
ValidatingWebhookConfiguration
. Remplacer<webhook_name>
par la valeur appropriée. - 3
- Le nom du webhook à appeler. Remplacez
<webhook_name>
par la valeur appropriée. - 4
- Informations sur la manière de se connecter au serveur webhook, de lui faire confiance et de lui envoyer des données.
- 5
- L'espace de noms dans lequel le service frontal est créé.
- 6
- Le nom du service frontal.
- 7
- URL du webhook utilisé pour les demandes d'admission. Remplacez
<webhook_url>
par la valeur appropriée. - 8
- Un certificat d'autorité de certification codé en PEM qui signe le certificat de serveur utilisé par le serveur webhook. Remplacez
<ca_signing_certificate>
par le certificat approprié au format base64. - 9
- Règles qui définissent quand le serveur API doit utiliser ce plugin d'admission au webhook.
- 10
- Une ou plusieurs opérations qui déclenchent l'appel du serveur API à ce plugin d'admission au webhook. Les valeurs possibles sont
create
,update
,delete
ouconnect
. Remplacez<operation>
et<resource>
par les valeurs appropriées. - 11
- Indique comment la politique doit se dérouler si le serveur webhook n'est pas disponible. Remplacez
<policy>
parIgnore
(pour accepter inconditionnellement la demande en cas d'échec) ouFail
(pour refuser la demande qui a échoué). L'utilisation deIgnore
peut entraîner un comportement imprévisible pour tous les clients.