Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev.

Metriken Kurzanleitung

Dieser Abschnitt dokumentiert, wie die Metrikberichterstattung auf dem Policy Server aktiviert wird.

Bevor Sie fortfahren, stellen Sie sicher, dass Sie den vorherigen OpenTelemetry Abschnitt dieses Buches abgeschlossen haben. Sie benötigen es, damit dieser Abschnitt korrekt funktioniert.

Sie verwenden Prometheus, um Metriken zu sammeln, die vom Policy Server exponiert werden.

Installieren Sie Prometheus

Sie verwenden Prometheus Operator, der es uns ermöglicht, die Ziele von Prometheus zu definieren.

Es gibt viele Möglichkeiten, Prometheus zu installieren und einzurichten. Zur Vereinfachung der Bereitstellung sollten Sie das Helm-Chart der Prometheus-Community verwenden.

Der mit diesem Helm-Chart bereitgestellte Prometheus-Operator verwendet Service Monitore, um zu definieren, welche Dienste Prometheus überwacht.

In Ihrem Fall fügen Sie einen ServiceMonitor hinzu, der auf den kubewarden Namespace zielt, für Dienste, die die Labels app=kubewarden-policy-server-default und app.kubernetes.io/name: kubewarden-controller aufweisen. Dies konfiguriert den Prometheus-Operator, um zu überprüfen, welche Kubernetes-Endpunkte zu den Diensten gehören, die diesen Bedingungen entsprechen.

Sie können die beiden ServiceMonitore mit den Namen kubewarden-controller und kubewarden-policy-server erstellen, die von der standardmäßigen Prometheus-Instanz verwendet werden, die durch das Helm-Chart installiert wurde.

Um dies zu tun, sollten Sie die folgende Werte-Datei erstellen:

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

Sie sollten das Helm-Chart des Prometheus-Stacks installieren:

Zum Zeitpunkt des Schreibens (2023-11-17) ist die neueste Chart-Version 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

Installieren Sie Admission Controller

Sie können jetzt Admission Controller auf die empfohlene Weise mit Helm-Charts installieren.

Die cert-manager ist eine Voraussetzung von OpenTelemetry, aber Sie haben sie bereits in einem vorherigen Abschnitt dieser Dokumentation installiert.

Zuerst sollten Sie das Helm-Repository hinzufügen, das Admission Controller enthält:

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

Dann installieren Sie die von Admission Controller definierten benutzerdefinierten Ressourcenbeschreibungen (CRDs):

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

Jetzt können Sie den Rest des Admission Controller Stacks bereitstellen. Das offizielle Helm-Chart erstellt einen PolicyServer mit dem Namen default.

Sie sollten das Helm-Chart so konfigurieren, dass Sie Metriken in Admission Controller aktiviert haben. Die kubewarden-values.yaml Datei sollte die folgenden Inhalte haben:

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

Jetzt installieren Sie die Helm-Charts:

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

Dies erstellt die default Instanz von PolicyServer:

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

Standardmäßig hat dieser Policy-Server keine aktivierten Metriken.

Zugriff auf Prometheus

Prometheus bietet eine Benutzeroberfläche, die Sie nutzen können, um die von verschiedenen Komponenten innerhalb Ihres Kubernetes-Clusters exponierten Metriken zu inspizieren.

Sie können den Prometheus-Port weiterleiten, damit Sie darauf zugreifen können.

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

Jetzt können Sie Prometheus auf Port 9090 besuchen und eine Abfrage durchführen, zum Beispiel: kubewarden_policy_evaluations_total. Sie können sehen, dass die Anzahl der Auswertungen im Laufe der Zeit wächst, während mehr Anfragen durch die Richtlinie gehen.

Zugriff auf Grafana

Sie können den Grafana-Dienst weiterleiten, damit Sie darauf zugreifen können.

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

Sie können sich jetzt mit dem Standardbenutzernamen admin und dem Passwort prom-operator anmelden.

Verwendung des Admission Controller Grafana-Dashboards

Admission Controller hat ein Grafana-Dashboard mit grundlegenden Metriken, das einen Überblick darüber gibt, wie sich Admission Controller im Cluster verhält. Dieses Dashboard ist in den GitHub-Releases des Admission Controller policy-server-Repositorys als JSON-Datei oder auf der Grafana-Website verfügbar.

Um das Dashboard in Ihre Umgebung zu importieren, können Sie die JSON-Datei von der Grafana-Website oder dem Repository herunterladen:

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

Sobald Sie die Datei haben, sollten Sie auf das Grafana-Dashboard zugreifen und importieren. Besuchen Sie /dashboard/import im Grafana-Dashboard und folgen Sie diesen Schritten:

  1. Kopieren Sie den Inhalt der JSON-Datei und fügen Sie ihn in das Import via panel json Feld in der Grafana-Benutzeroberfläche ein.

  2. Klicken Sie auf die Schaltfläche Load.

  3. Wählen Sie Prometheus als Quelle aus.

  4. Klicken Sie auf die Schaltfläche Import.

Eine weitere Möglichkeit ist, es direkt von der grafana.com-Website zu importieren. Dafür:

  1. Kopieren Sie die Dashboard-ID von der Dashboard-Seite,

  2. Fügen Sie sie in das Import via grafana.com Feld ein.

  3. Klicken Sie auf die Schaltfläche load.

  4. Nach dem Import des Dashboards definieren Sie die zu verwendende Prometheus-Datenquelle und beenden den Importprozess.

Das Grafana-Dashboard hat Bereiche, die den Zustand aller von Admission Controller verwalteten Richtlinien anzeigen. Es hat auch richtlinienspezifische Panels.

Sie können detaillierte Metriken für eine bestimmte Richtlinie erhalten, indem Sie den Wert der policy_name Variablen ändern, um den Namen der erforderlichen Richtlinie anzupassen.

Sie sollten in der Lage sein, ein Dashboard zu sehen, das diesem ähnlich ist:

Dashboard