Partager via


Validez les contrôleurs d’admission

Cet article fait partie d’une série. Commencez par la vue d’ensemble.

Les contrôleurs d’admission provoquent rarement des problèmes, mais il est essentiel de garantir leur fonctionnalité appropriée. Cet article explique comment les contrôleurs d’admission peuvent affecter d’autres composants lorsqu’ils ne fonctionnent pas correctement. Il décrit également les commandes que vous pouvez utiliser pour valider le niveau de performance du contrôleur d’admission.

Contrôleur d’admission

Un contrôleur d’admission est un élément de code qui intercepte les requêtes adressées à un serveur d’API Kubernetes avant la persistance d’un objet, mais une fois qu’une requête est authentifiée et autorisée.

Les contrôleurs d’admission peuvent être validées, en mutationou une combinaison des deux. Muter les contrôleurs peut modifier les objets associés avant d’admettre une requête. La validation des contrôleurs garantit uniquement que les requêtes répondent à des critères prédéfinis spécifiques.

L’une des principales fonctions des contrôleurs d’admission consiste à réglementer les requêtes de création, de suppression et de modification d’objets. En outre, les contrôleurs d’admission peuvent restreindre les verbes personnalisés, tels que la requête d’une connexion à un pod via un proxy de serveur d’API. Toutefois, les contrôleurs d’admission ne peuvent pas bloquer les requêtes de lecture d’objets, y compris les opérations telles que get, watchou list.

Certains composants peuvent affecter les contrôleurs d’admission, tels que mutant et validant des webhooks. Lorsque vous incorporez la mutation et la validation des webhooks dans votre cluster Kubernetes, il est impératif de garantir la haute disponibilité. Les nœuds non sains ne doivent pas bloquer les requêtes du serveur d’API. Il est essentiel de surveiller le pipeline de contrôle d’admission afin que les requêtes adressées au serveur d’API ne soient pas bloquées. Des contrôleurs d’admission en mauvaise santé peuvent affecter la mutation et la validation des webhooks. Les contrôleurs d’admission basés sur webhook que vous devez surveiller sont les suivants :

Les contrôleurs d’admission qui ne fonctionnent pas correctement peuvent également affecter différents composants, tels que les maillages de service. Les maillages de service, tels que Istio et Linkerd, utilisent des contrôleurs d’admission pour automatiser l’injection de conteneurs sidecar à l’intérieur d’un pod, entre autres fonctionnalités. Il est important d’évaluer et de vérifier que les contrôleurs d’admission fonctionnent correctement pour garantir l’opération transparente d’un maillage de service.

Vérifier l’état du module complémentaire Azure Policy pour les clusters AKS

Si vous installez le module complémentaire Azure Policy pour AKS, vous pouvez utiliser les commandes kubectl suivantes pour valider l’installation et les fonctionnalités des contrôleurs d’admission Azure Policy dans votre cluster :

# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system

# Sample output
...
NAME                                     READY   STATUS    RESTARTS   AGE
gatekeeper-audit-65844778cb-rkflg        1/1     Running   0          163m
gatekeeper-controller-78797d4687-4pf6w   1/1     Running   0          163m
gatekeeper-controller-78797d4687-splzh   1/1     Running   0          163m
...

Exécutez la commande précédente pour vérifier la disponibilité des pods d’agent Azure Policy dans l’espace de noms du système de contrôle. Si la sortie n’est pas ce que vous attendez, cela peut indiquer un problème avec un contrôleur d’admission, un service API ou une définition de ressource personnalisée (CRD).

# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources

# Sample output
...
NAME                                     SHORTNAMES    APIGROUP                       NAMESPACED   KIND
bindings                                                                              true         Binding
componentstatuses                        cs                                           false        ComponentStatus
configmaps                               cm                                           true         ConfigMap
...

La commande précédente vous permet de vérifier que toutes les ressources d’API fonctionnent correctement. Vérifiez que la sortie inclut les ressources attendues sans erreurs ni composants manquants. Utilisez les commandes kubectl get pod et kubectl api-resources pour vérifier l’état du module complémentaire Azure Policy pour AKS et valider les fonctionnalités des contrôleurs d’admission dans votre cluster Kubernetes. Surveillez régulièrement les contrôleurs d’admission pour vous assurer qu’ils fonctionnent correctement afin de maintenir l’intégrité globale et la stabilité de votre cluster.

Utilisez la commande kubectl get suivante pour confirmer que les affectations de politiques sont appliquées à votre cluster :

kubectl get constrainttemplates

Remarque

Les attributions de stratégies peuvent prendre jusqu’à 20 minutes pour se synchroniser avec chaque cluster.

Votre sortie doit ressembler à celle de l’exemple suivant :

NAME                                     AGE
k8sazureallowedcapabilities              23m
k8sazureallowedusersgroups               23m
k8sazureblockhostnamespace               23m
k8sazurecontainerallowedimages           23m
k8sazurecontainerallowedports            23m
k8sazurecontainerlimits                  23m
k8sazurecontainernoprivilege             23m
k8sazurecontainernoprivilegeescalation   23m
k8sazureenforceapparmor                  23m
k8sazurehostfilesystem                   23m
k8sazurehostnetworkingports              23m
k8sazurereadonlyrootfilesystem           23m
k8sazureserviceallowedports              23m

Pour plus d’informations, consultez les ressources suivantes :

Valider les webhooks

Pour vous assurer que la validation et la désactivation des webhooks fonctionnent comme prévu dans votre cluster Kubernetes, procédez comme suit.

  1. Exécutez la commande suivante pour répertorier les webhooks de validation dans le cluster :

    kubectl get ValidatingWebhookConfiguration -o wide
    

    Votre sortie doit ressembler à celle de l’exemple suivant :

    NAME                         WEBHOOKS   AGE
    aks-node-validating-webhook   1          249d
    azure-policy-validating-webhook-configuration   1          249d
    gatekeeper-validating-webhook-configuration     1          249d
    

    Vérifiez la sortie pour vérifier que les webhooks de validation sont présents et que leurs configurations sont comme prévu. La sortie inclut le nom de chaque webhook de validation, le nombre de webhooks et l’âge de chaque webhook.

  2. Exécutez la commande suivante pour répertorier les webhooks de mutation dans le cluster :

    kubectl get MutatingWebhookConfiguration -o wide
    

    Votre sortie doit ressembler à celle de l’exemple suivant :

    NAME                         WEBHOOKS   AGE
    aks-node-mutating-webhook    1          249d
    azure-policy-mutating-webhook-configuration    1          249d
    gatekeeper-mutating-webhook-configuration      1          249d
    

    Vérifiez la sortie pour vous assurer que les webhooks mutants sont répertoriés correctement et que leurs configurations sont souhaitées. La sortie inclut le nom de chaque webhook de mutation, le nombre de webhooks et l’âge de chaque webhook.

  3. Exécutez la commande suivante pour récupérer des détails spécifiques pour un contrôleur d’admission particulier :

    kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
    

    Remplacez <mutating-webhook-name> par le nom du webhook mutant pour lequel vous souhaitez récupérer les détails. La sortie de cette commande affiche la représentation YAML de la configuration de webhook en mode de mutation spécifié.

Exécutez les commandes de cette section et vérifiez la sortie pour confirmer que les webhooks de validation et de mutation dans le cluster Kubernetes sont présents et configurés comme prévu. Cette validation est essentielle pour garantir un bon fonctionnement. Il est également important de s’assurer que les webhooks adhèrent aux stratégies de validation et de modification des ressources dans le cluster.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Principaux auteurs :

Autres contributeurs :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.