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 ausgeben, passieren zwei Dinge, bevor der Helm-Befehl die Konfiguration auf Ihre Hybrid-Instanz 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 für alle Apigee Hybrid-Komponenten dieselbe Sequenz 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 ist die eigentliche Fehlermeldung des Tests in diesem Teil:
{"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.
Prüfen Sie den Status der Pods schnell nach Ausführung des Befehls helm install
. 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. Das folgende Beispiel zeigt das Flag --no-hooks
in einem Helm-Befehl:
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 Schutzmaßnahmen verwenden
Sie können in Ihrer overrides
-Datei auch Toleranzen für Schutzmaßnahmen 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"