3 Tipps für die Bereitstellung von APISIX in Kubernetes (Teil 2)

Wei Jin

Wei Jin

May 7, 2024

Technology

Die Ära des Cloud-Native-Computing hat eine weit verbreitete Einführung von Kubernetes als Container-Orchestrierungsplattform erlebt, wobei Apache APISIX als hochleistungsfähiges, cloud-natives dynamisches API-Gateway hervorgegangen ist. Die Bereitstellung von Apache APISIX in Kubernetes ist immer häufiger anzutreffen. Obwohl der Bereitstellungsprozess von Apache APISIX auf Kubernetes relativ unkompliziert ist, gibt es dennoch einige wichtige Punkte zu beachten. In dieser Artikelserie werden wir uns mit den folgenden Themen befassen:

  1. Überlegungen zu Bereitstellungsmethoden
  2. Gesundheitsprüfungen, Protokollierung und Überwachung
  3. Umgang mit benutzerdefinierten Plugins und Konfigurationen

Im vorherigen Artikel haben wir den ersten Punkt besprochen. Dieser Artikel konzentriert sich auf den zweiten Punkt: Überlegungen zu Gesundheitsprüfungen, Protokollierung und Überwachung.

Gesundheitsprüfungen

Bei der Bereitstellung von APISIX in Kubernetes sind Gesundheitsprüfungen besonders wichtig, da sie eine grundlegende Anforderung für Anwendungen in Kubernetes darstellen. In Kubernetes kann durch die Konfiguration von Liveness- und Readiness-Probes der Gesundheitszustand und die Verfügbarkeit von APISIX-Instanzen sichergestellt werden.

  • Der Liveness Probe wird verwendet, um festzustellen, ob die Anwendung läuft. Wenn die Anwendung als ungesund eingestuft wird, wird Kubernetes die Instanz neu starten.

  • Der Readiness Probe wird verwendet, um festzustellen, ob die Anwendung bereit ist, Datenverkehr zu empfangen. Wenn die Anwendung noch nicht bereit ist, wird sie keinen Datenverkehr empfangen. Dies hilft zu verhindern, dass Datenverkehr an Instanzen gesendet wird, die entweder nicht vollständig gestartet sind oder beschädigt sind.

Durch die ordnungsgemäße Konfiguration von Liveness- und Readiness-Probes kann Kubernetes automatisch ungesunde Pod-Instanzen verwalten. Dies bedeutet, dass Kubernetes bei Problemen mit Instanzen diese automatisch neu startet oder den Datenverkehr zu ungesunden Instanzen stoppt, wodurch die Verfügbarkeit und Stabilität des Systems verbessert wird.

YAML-Konfigurationsbeispiel:

apiVersion: v1
kind: Deployment
metadata:
  name: my-apisix-pod
spec:
  containers:
  - name: my-apisix-container
    image: my-apisix-image
    livenessProbe:
      httpGet:
        path: /healthz
        port: 9080
      initialDelaySeconds: 15
      periodSeconds: 10
    readinessProbe:
      httpGet:
        path: /readyz
        port: 9080
      initialDelaySeconds: 10
      periodSeconds: 5

Dieses Beispiel definiert die Liveness- und Readiness-Probes für den Container. Der Liveness Probe sendet alle 10 Sekunden eine HTTP-GET-Anfrage an den Pfad /healthz, um den Gesundheitszustand des Containers zu überprüfen. Wenn der Container nicht antwortet oder einen Statuscode zurückgibt, der nicht 200 ist, betrachtet Kubernetes den Container als ungesund und versucht, ihn neu zu starten. Der Readiness Probe ist ähnlich, wird jedoch verwendet, um zu überprüfen, ob der Container bereit ist, Datenverkehr zu empfangen.

Überwachung

Es gibt verschiedene Methoden, um APISIX während der Laufzeit zu überwachen, wobei die Integration von Prometheus ein empfohlener Ansatz ist. Tatsächlich bleibt Prometheus bis heute die am weitesten verbreitete Überwachungskomponente.

Die Integration von Prometheus hilft dabei, Metriken für APISIX und die von ihm bereitgestellten Dienste zu sammeln und zu überwachen. Diese Metriken können Anforderungsraten, Fehlerraten, Latenz und andere kritische Leistungsindikatoren umfassen. Durch die Überwachung dieser Metriken können Probleme schnell erkannt und Leistungsoptimierungen sowie Fehlerbehebungen durchgeführt werden. Stellen Sie sicher, dass Metriken und Warnregeln ordnungsgemäß konfiguriert sind, um bei Problemen schnell Maßnahmen ergreifen zu können.

Das Aktivieren des Prometheus-Plugins in APISIX ist einfach. Zuerst setzen Sie den export_uri in config.yaml.

plugin_attr:
  prometheus:
    export_uri: /apisix/metrics

Dann aktivieren Sie das Plugin auf der API oder dem Dienst, der von Prometheus statistisch analysiert werden soll.

curl http://127.0.0.1:9180/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/hello",
    "plugins": {
        "prometheus":{}
    },
    "upstream": {
        ...
    }
}'

Schließlich kann der Prometheus-Server regelmäßig Konfigurationen vom export_uri abrufen.

scrape_configs:
  - job_name: "apisix"
    scrape_interval: 15s
    metrics_path: "/apisix/prometheus/metrics"
    static_configs:
      - targets: ["127.0.0.1:9091"]

In der praktischen Anwendung muss Prometheus auch hochverfügbar bereitgestellt werden, beispielsweise mit Open-Source-Lösungen wie Thanos. Die Integration mit APISIX kann im Thanos-Sidecar-Modus erfolgen.

Protokollierung

In APISIX werden wichtige Protokolle grob in zwei Arten unterteilt: Verkehrsprotokolle und Überwachungsprotokolle.

  • Verkehrsprotokolle beziehen sich auf die Protokollierung jeder Anfrage, wenn APISIX als Reverse-Proxy fungiert. Diese Protokolle, die sowohl den Anfrageverkehr als auch die zurückgegebenen Informationen enthalten, zusammen mit internen Betriebsprotokollen von APISIX, sind entscheidend für die Nachverfolgung und Fehlerbehebung. Typischerweise werden geeignete Protokollebenen und -formate für die Aufzeichnung festgelegt. In praktischen Szenarien sollten Sie in Betracht ziehen, Protokolle in ein zentralisiertes Protokollierungssystem auszugeben, wie z.B. ELK (Elasticsearch, Logstash und Kibana), Fluentd oder Splunk. APISIX bietet Log-Plugins zur Auswahl.

  • Überwachungsprotokolle beziehen sich hauptsächlich auf die Protokolle, die bei der Verwaltung von APISIX-Konfigurationen generiert werden. Sie helfen nicht nur bei der Einhaltung von Compliance-Anforderungen, sondern dienen auch der Sicherheitsanalyse. Durch die Analyse von Überwachungsprotokollen können potenzielle Sicherheitsrisiken und unangemessene Konfigurationen oder Verwaltungsverhalten identifiziert werden, und entsprechende Maßnahmen können ergriffen werden, um die Systemsicherheit zu verbessern.

Die Open-Source-Version von APISIX bietet eine Admin-API zur einfachen Konfigurationsverteilung, verfügt jedoch nicht über Konfigurationen im Zusammenhang mit Überwachungsprotokollen. In der Regel müssen Benutzer diese Protokolle selbst aufzeichnen oder die Enterprise-Version von APISIX verwenden.

Es gibt nicht viele Unterschiede in der Protokollierungskonfiguration zwischen Kubernetes und anderen Umgebungen. Es ist erwähnenswert, dass bei der Konfiguration von Upstreams und verwandten Informationen in APISIX häufig die Kubernetes-Dienstentdeckung verwendet wird. Es wird empfohlen, den Dienstnamen in den Protokollen zu erfassen, um die Fehlerbehebung bei nachfolgenden Problemen zu erleichtern.

Fazit

Durch die Konfiguration von Gesundheitsprüfungsmechanismen zur Erkennung ungesunder Instanzen von APISIX kann Kubernetes schnell Maßnahmen ergreifen, um den Datenverkehr zu migrieren und die Wiederherstellung zu erleichtern, wodurch die Kontinuität und Stabilität der API-Dienste sichergestellt wird. APISIX unterstützt auch die Integration mit fortschrittlichen Überwachungstools wie Prometheus, um die Leistung und Stabilität von APIs zu überwachen, einschließlich wichtiger Metriken wie Anforderungsraten, Fehlerraten und Latenz. Diese Überwachungsfähigkeit ermöglicht es Organisationen, potenzielle Probleme schnell zu identifizieren und rechtzeitig Leistungsoptimierungen und -anpassungen durchzuführen, um den effizienten Betrieb von API-Diensten sicherzustellen.

Tags: