Probleme mit Schutzmaßnahmen diagnostizieren

Schutzmaßnahmen – Übersicht

Apigee Hybrid Schutzmaßnahmen ist ein Mechanismus, der Kunden auf ein potenzielles Problem aufmerksam macht, bevor sich das Problem auf eine Hybridinstanz auswirken kann. Mit anderen Worten: Hybrid Schutzmaßnahmen stoppt einen Befehl in seinen Anfängen, wenn der Befehl die Stabilität einer Hybridinstanz beeinträchtigt. Unabhängig davon, ob es sich um eine falsche Konfiguration oder unzureichende Ressourcen handelt, verhindern Hybrid Schutzmaßnahmen alle Änderungen an einer Hybridinstanz, bis das Risiko durch das Problems beseitigt ist. So muss der Kunde keine Zeit für Probleme aufwenden, die normalerweise Stunden oder Tage in Anspruch nehmen würden zum Lösen.

Schutzmaßnahmen mit Apigee Hybrid verwenden

Führen Sie dieselben Befehle zur Hybrid-Helm-Installation oder Hybrid-Helm-Upgrades aus, die in der Hybrid-Installationsanleitung dokumentiert sind, um Hybrid Schutzmaßnahmen zu verwenden. Zum Ausführen von Schutzmaßnahmen sind keine zusätzlichen Befehle erforderlich.

Wenn Sie einen Helm-Befehl für Apigee Hybrid ausführen, geschieht Folgendes, bevor der Helm-Befehl die Konfiguration auf Ihre Hybridinstanz anwendet:

  • Helm erstellt einen temporären Schutzmaßnahmen-Pod mit der angewendeten Konfiguration. Wenn sich der Schutzmaßnahmen-Pod in einen fehlerfreien Zustand hochfährt, testet der Pod Ihre Hybridinstanz anhand der angewendeten Konfiguration. Wenn die Tests erfolgreich sind, wird der Schutzmaßnahmen-Pod beendet und Ihre Konfiguration dann auf Ihre Apigee Hybrid-Instanz angewendet.
  • Wenn die Tests fehlschlagen, bleibt der Schutzmaßnahmen-Pod in einem fehlerhaften Zustand, um die Diagnose des Pods zu ermöglichen. Der Helm-Befehl zeigt eine Fehlermeldung an, die angibt, dass der Schutzmaßnahmen-Pod fehlgeschlagen ist.

Das folgende Beispiel zeigt die Verwendung von Schutzmaßnahmen zum Testen der Netzwerkkonnektivität von einer Hybridinstanz zur Apigee-Steuerungsebene als Teil der Installation der apigee-datastore-Komponente. Sie können dieselbe Abfolge für alle Apigee Hybrid-Komponenten verwenden:

Installieren Sie die apigee-datastore-komponente mit dem folgenden Befehl:

helm upgrade datastore apigee-datastore/ \
  --install \
  --namespace apigee \
  --atomic \
  -f overrides.yaml

Wenn ein sofortiger Fehler auftritt, zeigt der Helm-Befehl auch eine Fehlermeldung an, die angibt, dass die Schutzmaßnahmen-Prüfungen fehlgeschlagen sind, wie im folgenden Beispiel:

 helm upgrade datastore apigee-datastore/ \
  --install \
  --namespace apigee \
  -f ../my-overrides.yaml

  . . .
    Error: UPGRADE FAILED: pre-upgrade hooks failed: 1 error occurred:
      * pod apigee-hybrid-helm-guardrail-datastore failed

Um zu sehen, welche Prüfung fehlgeschlagen ist und warum, prüfen Sie die Schutzmaßnahmen-Pod-Logs wie im folgenden Beispiel:

kubectl logs -n apigee apigee-hybrid-helm-guardrail-datastore
{"level":"INFO","timestamp":"2024-02-01T20:28:55.934Z","msg":"logging enabled","log-level":"INFO"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"","checkpoint":"upgrade","component":"apigee-datastore"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"initiating pre-install checks"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"check validation starting...","check":"controlplane_connectivity"}
{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}

In diesem Beispiel enthält dieser Teil die eigentliche Fehlermeldung:

{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}

Der Schutzmaßnahmen-Pod wird automatisch bereitgestellt, wenn Sie den Helm-Befehl ausführen. Wenn der Konnektivitätstest der Apigee-Steuerungsebene erfolgreich ist, wird der Schutzmaßnahmen-Pod am Ende der Ausführung beendet.

Sie können den Status der Pods schnell nach dem Ausführen des Befehls helm install prüfen. Die folgende Beispielausgabe zeigt die Schutzmaßnahmen-Pods in einem fehlerfreien Zustand. Das bedeutet, dass der Konnektivitätstest der Steuerungsebene bestanden wurde:

kubectl get pods -n apigee -w
NAME                                      READY    STATUS             RESTARTS    AGE
apigee-hybrid-helm-guardrail-datastore    0/1      Pending            0           0s
apigee-hybrid-helm-guardrail-datastore    0/1      Pending            0           1s
apigee-hybrid-helm-guardrail-datastore    0/1      ContainerCreating  0           1s
apigee-hybrid-helm-guardrail-datastore    0/1      Completed          0           2s
apigee-hybrid-helm-guardrail-datastore    0/1      Completed          0           3s
apigee-hybrid-helm-guardrail-datastore    0/1      Terminating        0           3s
apigee-hybrid-helm-guardrail-datastore    0/1      Terminating        0           3s

Wenn der Konnektivitätstest der Apigee-Steuerungsebene fehlschlägt, bleibt der Schutzmaßnahmen-Pod im Fehlerzustand ähnlich der folgenden Beispielausgabe:

kubectl get pods -n apigee -w
NAME                                      READY    STATUS             RESTARTS    AGE
apigee-hybrid-helm-guardrail-datastore    0/1      Pending            0           0s
apigee-hybrid-helm-guardrail-datastore    0/1      Pending            0           0s
apigee-hybrid-helm-guardrail-datastore    0/1      ContainerCreating  0           0s
apigee-hybrid-helm-guardrail-datastore    0/1      Error              0           4s
apigee-hybrid-helm-guardrail-datastore    0/1      Error              0           5s
apigee-hybrid-helm-guardrail-datastore    0/1      Error              0           6s

Schutzmaßnahmen vorübergehend deaktivieren

Wenn Sie die Schutzmaßnahmen-Prüfungen deaktivieren müssen, fügen Sie dem Helm-Befehl das Flag --no-hooks hinzu. Im folgenden Beispiel wird das Flag --no-hooks in einem Helm-Befehl verwendet:

helm upgrade datastore apigee-datastore/ \
  --install \
  --namespace apigee \
  -f ../my-overrides.yaml \
  --no-hooks

Schutzmaßnahmen in der Überschreibungsdatei konfigurieren

Ab Apigee Hybrid-Version 1.12 werden Schutzmaßnahmen standardmäßig in jedem Diagramm konfiguriert. Sie können die Image-URL, das Tag und die Image-Pull-Richtlinie in Ihrer overrides-Datei überschreiben.

Die folgende Schutzmaßnahmen-Image-URL, das Tag und die Pull-Richtlinie würden dann der Überschreibungsdatei hinzugefügt:

# Apigee Ingressgateway
ingressGateway:
  image:
    pullPolicy: Always

## NOTE: The Guardrails config is below. The ingressgateway config above is for position reference only and is NOT required for Guardrails config.

# Apigee Guardrails
guardrails:
  image:
    url: "gcr.io/ng-hybrid/guardrails/apigee-watcher"
    tag: "12345_6789abcde"
    pullPolicy: Always

Kubernetes-Toleranzen mit Guardrails verwenden

Sie können den Schutzmaßnahmen in Ihrer overrides-Datei auch Toleranzen hinzufügen. Wenn unter Schutzmaßnahmen-overrides-Konfiguration keine Toleranzen definiert sind, verwenden Schutzmaßnahmen global definierte Toleranzen.

Wenn Sie beispielsweise Toleranzen speziell in den Abschnitt „Schutzmaßnahmen“ Ihrer Datei overrides aufnehmen möchten, fügen Sie etwas Ähnliches wie die folgende Stanza hinzu:

  # Apigee Guardrails
  guardrails:
    image:
      url: "gcr.io/ng-hybrid/guardrails/apigee-watcher"
      tag: "12345_6789abcde"
      pullPolicy: Always
    tolerations:
    - key: "say"
      operator: "Equal"
      value: "taunt"
      effect: "NoSchedule"