Le module complémentaire Gatekeeper vous permet de gérer et d'appliquer des politiques Open Policy Agent (OPA) dans les clusters ACK, y compris la gestion des libellés de namespace. Cette rubrique présente les fonctionnalités de Gatekeeper, les instructions d'utilisation et les notes de version. Gatekeeper intègre OPA aux clusters ACK pour définir et appliquer des politiques d'admission via des CRD. Contrôlez la création de ressources en fonction des libellés, des types de ressources, des namespaces et d'autres attributs. Gatekeeper gère également les libellés de namespace.
Pour utiliser Gatekeeper :
Installez Gatekeeper depuis la page Add-ons de la console ACK. Consultez la rubrique Gérer les composants.
Créez un modèle de contrainte (ConstraintTemplate) pour définir la logique de la politique en Rego.
Créez une contrainte (Constraint) pour appliquer le modèle à des namespaces ou des types de ressources spécifiques.
Vérifiez que la contrainte fonctionne comme prévu.
Pour plus d'informations, consultez Open Policy Agent.
Fonctionnement
Gatekeeper s'exécute en tant que webhook d'admission. validation.gatekeeper.sh intercepte les demandes de création et de mise à jour de ressources, puis les évalue par rapport aux contraintes actives.
Le modèle de politique comprend deux couches :
ConstraintTemplate : définit la logique de la politique en Rego et enregistre un nouveau type de CRD.
Constraint : instance d'un ConstraintTemplate qui spécifie les ressources cibles et les paramètres d'application.
Consultez la documentation How to use Gatekeeper.
Appliquer des politiques de libellés de pods
Cet exemple impose que tous les pods d'un namespace portent un libellé spécifique. L'initialisation du modèle et de la contrainte prend environ 10 secondes.
Prérequis
Assurez-vous de disposer des éléments suivants :
Un cluster ACK avec Gatekeeper installé
kubectlconfiguré pour se connecter au cluster
Créer un namespace et lui ajouter un libellé
Créez un namespace de test avec le libellé correspondant à la contrainte :
kubectl create ns test-gatekeeper
kubectl label ns test-gatekeeper name=test-gatekeeper
Créer un modèle de contrainte
Ce modèle enregistre une CRD K8sRequiredLabels et définit la logique de la politique en Rego :
kubectl apply -f - <<EOF
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8srequiredlabels
spec:
crd:
spec:
names:
kind: K8sRequiredLabels
validation:
openAPIV3Schema:
properties:
labels:
type: array
items:
type: string
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8srequiredlabels
# A violation is triggered when required labels are missing from the resource.
violation[{"msg": msg, "details": {"missing_labels": missing}}] {
# Collect all labels on the incoming resource.
provided := {label | input.review.object.metadata.labels[label]}
# Collect all labels required by the constraint parameters.
required := {label | label := input.parameters.labels[_]}
# Compute the set of labels that are required but not provided.
missing := required - provided
count(missing) > 0
msg := sprintf("you must provide labels: %v", [missing])
}
EOF
Attendez environ 10 secondes pour l'initialisation.
Créer une contrainte
Appliquez le modèle K8sRequiredLabels aux pods des namespaces portant le libellé name=test-gatekeeper, en exigeant le libellé gatekeeper-test-label :
kubectl apply -f - <<EOF
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
name: pod-must-have-gatekeeper-test-label
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaceSelector:
matchExpressions:
- key: name
operator: In
values: ["test-gatekeeper"]
parameters:
labels: ["gatekeeper-test-label"]
EOF
Attendez environ 10 secondes pour l'activation.
Vérifier la contrainte
Exécutez les tests suivants pour vérifier la contrainte.
Test 1 : Le pod sans le libellé requis est refusé.
kubectl -n test-gatekeeper run test-deny --image=nginx --restart=Never
Sortie attendue :
Error from server ([denied by pod-must-have-gatekeeper-test-label] you must provide labels: {"gatekeeper-test-label"}): admission webhook "validation.gatekeeper.sh" denied the request: [denied by pod-must-have-gatekeeper-test-label] you must provide labels: {"gatekeeper-test-label"}
Rejeté : le namespace test-gatekeeper correspond au sélecteur et le pod ne possède pas le libellé gatekeeper-test-label.
Test 2 : Le pod avec le libellé requis est accepté.
kubectl -n test-gatekeeper run test-pass -l gatekeeper-test-label=pass --image=nginx --restart=Never
Sortie attendue :
pod/test-pass created
Accepté : le pod porte le libellé gatekeeper-test-label.
Test 3 : Le pod dans un namespace non contraint est accepté.
kubectl -n default run test-deny --image=nginx --restart=Never
Sortie attendue :
pod/test-deny created
Le namespace default ne possède pas le libellé name=test-gatekeeper ; la contrainte ne s'applique donc pas.
Notes de version
Mars 2025
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.18.2.192-ge2860248-aliyun |
registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.18.2.192-ge2860248-aliyun |
2025-03-04 |
|
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Décembre 2024
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.17.1.174-g6383c639-aliyun |
registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.17.1.174-g6383c639-aliyun |
2024-12-09 |
Mise à jour d'OPA Gatekeeper vers la v3.17.1. |
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Septembre 2024
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.16.3.158-g5e73c0ad-aliyun |
registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.16.3.158-g5e73c0ad-aliyun |
2024-09-25 |
Mise à jour d'OPA Gatekeeper vers la v3.16.3. |
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Mars 2024
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.15.1.150-g29b8b2a8-aliyun |
registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.15.1.150-g29b8b2a8-aliyun |
2024-03-27 |
Mise à jour d'OPA Gatekeeper vers la v3.15.1. |
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Octobre 2023
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.12.0.138-g1ee37e37-aliyun |
registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.12.0.138-g1ee37e37-aliyun |
2023-10-09 |
|
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Avril 2023
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.10.0.130-g0e79597d-aliyun |
registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.10.0.130-g0e79597d-aliyun |
2023-04-18 |
|
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Juin 2022
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.8.1.113-geb7947ef-aliyun |
registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.8.1.113-geb7947ef-aliyun |
2022-06-08 |
|
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Avril 2022
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.7.1.93-gaf375989-aliyun |
registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.1.93-gaf375989-aliyun |
2022-04-02 |
La mutation est désactivée par défaut. Activez-la sur la page Add-ons. Consultez Mutation. |
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Février 2022
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.7.0.84-gf5fd3ffd-aliyun |
registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.84-gf5fd3ffd-aliyun |
2022-02-15 |
Optimisation des performances. Correction d'une utilisation anormale du processeur dans des cas extrêmes. |
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Janvier 2022
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.7.0.82-gafe4391b-aliyun |
registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.82-gafe4391b-aliyun |
2022-01-14 |
|
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Septembre 2021
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.6.0.62-g156146d-aliyun |
registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.6.0.62-g156146d-aliyun |
2021-09-20 |
|
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Mars 2021
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.3.0.24-8e68abc-aliyun |
registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.3.0.24-8e68abc-aliyun |
2021-03-16 |
|
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |
Août 2020
|
Version |
Image address |
Release date |
Description |
Impact |
|
v3.1.0.11-24bab09-aliyun |
registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.1.0.11-24bab09-aliyun |
2020-08-20 |
Mise à jour d'OPA Gatekeeper vers la version 3.1.0-beta.12. |
Si des exceptions se produisent lors de la mise à jour du composant, les modifications apportées aux ressources du cluster peuvent échouer. Effectuez la mise à jour pendant les heures creuses. |