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.

Démarrage rapide des métriques

Cette section documente comment activer le reporting des métriques sur le serveur de stratégie.

Avant de continuer, assurez-vous d’avoir complété la section précédente OpenTelemetry de ce livre. Vous en avez besoin pour que cette section fonctionne correctement.

Vous utilisez Prometheus pour collecter les métriques exposées par le serveur de stratégie.

Installez Prometheus

Vous utilisez Opérateur Prometheus, qui nous permet de définir les cibles de Prometheus.

Il existe de nombreuses façons d’installer et de configurer Prometheus. Pour faciliter le déploiement, vous devriez utiliser le chart Helm de la communauté Prometheus.

L’Opérateur Prometheus déployé avec ce chart Helm utilise Moniteurs de Service, pour définir quels services Prometheus surveille.

Dans votre cas, vous ajoutez un ServiceMonitor ciblant l’espace de noms kubewarden pour les services qui correspondent aux étiquettes app=kubewarden-policy-server-default et app.kubernetes.io/name: kubewarden-controller. Cela configure l’Opérateur Prometheus pour inspecter quels Endpoints Kubernetes appartiennent aux services correspondant à ces conditions.

Vous pouvez créer les deux ServiceMonitors nommés kubewarden-controller et kubewarden-policy-server pour être utilisés par l’instance Prometheus par défaut installée par le chart Helm.

Pour ce faire, vous devez créer le fichier de valeurs suivant :

cat <<EOF > kube-prometheus-stack-values.yaml
prometheus:
  additionalServiceMonitors:
    - name: kubewarden
      selector:
        matchLabels:
          app: kubewarden-policy-server-default
      namespaceSelector:
        matchNames:
          - kubewarden
      endpoints:
        - port: metrics
          interval: 10s
    - name: kubewarden-controller
      selector:
        matchLabels:
          app.kubernetes.io/name: kubewarden-controller
      namespaceSelector:
        matchNames:
          - kubewarden
      endpoints:
        - port: metrics
          interval: 10s
EOF

Vous devez installer le chart Helm de la pile Prometheus :

Au moment de la rédaction (2023-11-17), la dernière version du chart est 51.5.3

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

helm install --wait --create-namespace \
  --namespace prometheus \
  --version 51.5.3 \
  --values kube-prometheus-stack-values.yaml \
  prometheus prometheus-community/kube-prometheus-stack

Installez Admission Controller

Vous pouvez maintenant installer Admission Controller, de la manière recommandée avec des charts Helm.

Le cert-manager est une exigence d’OpenTelemetry, mais vous l’avez déjà installé dans une section précédente de cette documentation.

Tout d’abord, vous devez ajouter le dépôt Helm qui contient Admission Controller :

helm repo add kubewarden https://charts.kubewarden.io

Ensuite, vous installez les définitions de ressources personnalisées (CRDs) définies par Admission Controller :

helm install --wait \
  --namespace kubewarden --create-namespace \
  kubewarden-crds kubewarden/kubewarden-crds

Vous pouvez maintenant déployer le reste de la pile Admission Controller. Le chart Helm officiel crée un serveur de stratégie nommé default.

Vous devez configurer le chart Helm afin d’avoir les métriques activées dans Admission Controller. Le fichier kubewarden-values.yaml doit avoir le contenu suivant :

telemetry:
  mode: sidecar
  metrics: True
  sidecar:
    metrics:
      port: 8080

Maintenant, installez les charts Helm :

helm install --wait \
  --namespace kubewarden \
  --create-namespace \
  --values kubewarden-values.yaml \
  kubewarden-controller kubewarden/kubewarden-controller

helm install --wait \
  --namespace kubewarden \
  --create-namespace \
  kubewarden-defaults kubewarden/kubewarden-defaults \
  --set recommendedPolicies.enabled=True \
  --set recommendedPolicies.defaultPolicyMode=monitor

Cela crée l’instance default de PolicyServer :

kubectl get policyservers.policies.kubewarden.io
NAME      AGE
default   3m7s

Par défaut, ce serveur de stratégie n’a pas de métriques activées.

Accéder à Prometheus

Prometheus expose une interface utilisateur que vous pouvez utiliser pour inspecter les métriques exposées par différents composants de votre cluster Kubernetes.

Vous pouvez transférer le port de Prometheus afin de pouvoir y accéder.

kubectl port-forward -n prometheus --address 0.0.0.0 svc/prometheus-operated 9090

Maintenant, vous pouvez visiter Prometheus sur le port 9090 et effectuer une requête, par exemple : kubewarden_policy_evaluations_total. Vous pouvez voir que le nombre d’évaluations augmente avec le temps à mesure que plus de requêtes passent par la stratégie.

Accéder à Grafana

Vous pouvez transférer le service Grafana afin de pouvoir y accéder.

kubectl port-forward -n prometheus --address 0.0.0.0 svc/prometheus-grafana 8080:80

Vous pouvez maintenant vous connecter avec le nom d’utilisateur par défaut admin et le mot de passe prom-operator.

Utiliser le tableau de bord Grafana Admission Controller

Admission Controller dispose d’un tableau de bord Grafana avec des métriques de base donnant un aperçu de la façon dont Admission Controller se comporte dans le cluster. Ce tableau de bord est disponible dans les versions GitHub du dépôt du serveur de stratégie Admission Controller sous la forme d’un fichier JSON ou sur le site Web de Grafana.

Pour importer le tableau de bord dans votre environnement, vous pouvez télécharger le fichier JSON depuis le site Web de Grafana ou le dépôt :

curl https://github.com/kubewarden/policy-server/releases/latest/download/kubewarden-dashboard.json

Une fois que vous avez le fichier, vous devez accéder au tableau de bord Grafana et l’importer. Visitez /dashboard/import dans le tableau de bord Grafana et suivez ces étapes :

  1. Copiez et collez le contenu du fichier JSON dans la boîte Import via panel json de l’interface Grafana.

  2. Cliquez sur le bouton Load.

  3. Choisissez Prometheus comme source.

  4. Cliquez sur le bouton Import.

Une autre option est de l’importer directement depuis le site grafana.com. Pour cela :

  1. Copiez l’ID du tableau de bord depuis la page tableau de bord,

  2. Collez-le dans le champ Import via grafana.com.

  3. Cliquez sur le bouton load.

  4. Après avoir importé le tableau de bord, définissez la source de données Prometheus à utiliser et terminez le processus d’importation.

Le tableau de bord Grafana a des panneaux montrant l’état de toutes les stratégies gérées par Admission Controller. Il a également des panneaux spécifiques aux stratégies.

Vous pouvez obtenir des métriques détaillées pour une stratégie spécifique en changeant la valeur de la variable policy_name pour correspondre au nom de la stratégie requise.

Vous devriez être en mesure de voir un tableau de bord similaire à ceci :

Tableau de bord