|
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. |
Migration de la stratégie ValidatingAdmissionPolicy
À partir de Kubernetes v1.26, le ValidatingAdmissionPolicy fournit un moyen d’écrire des politiques d’admission personnalisées dans Kubernetes. Les politiques sont écrites avec le Common Expression Language (CEL), étendues avec quelques extensions spécifiques à Kubernetes. La stratégie ValidatingAdmissionPolicy a atteint la stabilité dans Kubernetes v1.30.
SUSE Security Admission Controller fournit une stratégie CEL capable d’exécuter des stratégies VAP Kubernetes sans aucune modification. Vous pouvez en savoir plus sur la stratégie CEL dans cette section de la documentation de Admission Controller. Ce paragraphe explique les avantages de l’exécution des stratégies VAP en utilisant Admission Controller.
Ce guide explique comment utiliser l’outil kwctl pour migrer une stratégie VAP vers Admission Controller.
Étapes de migration
|
Vous devez utiliser la version 1.14.0 ou ultérieure de |
Étant donné un fichier contenant cette définition YAML d’un ValidatingAdmissionPolicy :
ValidatingAdmissionPolicy Définition de
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:
name: "force-liveness-probe"
spec:
failurePolicy: Fail
variables:
- name: containers_without_liveness_probe
expression: |
object.spec.template.spec.containers.filter(c, !has(c.livenessProbe)).map(c, c.name)
matchConstraints:
resourceRules:
- apiGroups: ["apps"]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["deployments"]
validations:
- expression: |
size(variables.containers_without_liveness_probe) == 0
messageExpression: |
'These containers are missing a liveness probe: ' + variables.containers_without_liveness_probe.join(' ')
reason: Invalid
Et un fichier contenant la ValidatingAdmissionPolicyBinding ressource:
ValidatingAdmissionPolicyBinding Définition de
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicyBinding
metadata:
name: "kw-scaffold-demo"
spec:
policyName: "force-liveness-probe"
validationActions: [Deny]
matchResources:
namespaceSelector:
matchLabels:
docs.kubewarden.io/vap-migration: enabled
Vous pouvez migrer la stratégie vers Admission Controller en suivant ces étapes :
kwctl commande pour la migration de la stratégie
$ kwctl scaffold vap \
-p vap.yml \
-b vap-binding.yml
La commande produit une sortie similaire à ceci :
Sortie de la migration
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
name: kw-scaffold-demo
spec:
module: ghcr.io/kubewarden/policies/cel-policy:latest
settings:
failurePolicy: Fail
variables:
- expression: |
object.spec.template.spec.containers.filter(c, !has(c.livenessProbe)).map(c, c.name)
name: containers_without_liveness_probe
validations:
- expression: |
size(variables.containers_without_liveness_probe) == 0
messageExpression: |
'These containers are missing a liveness probe: ' + variables.containers_without_liveness_probe.join(' ')
reason: Invalid
rules:
- apiGroups:
- apps
apiVersions:
- v1
resources:
- deployments
operations:
- CREATE
- UPDATE
mutating: false
namespaceSelector:
matchLabels:
docs.kubewarden.io/vap-migration: enabled
|
La commande avertit l’utilisateur concernant l’utilisation de
Il est recommandé d’utiliser une version spécifique pour éviter des changements incompatibles. Vous pouvez le faire en utilisant
|