Validieren Sie Ihren Anwendungscode und die Latenzzeit mit Iter8

Iter8 ist das Release-Engineering-Tool für Kubernetes, das die Validierung von Service-Level-Zielen (SLO), A/B-Tests und progressive Updates für Kubernetes ermöglicht. Nun können Sie mit Iter8 überprüfen, ob Ihre IBM Cloud® Code Engine Anwendung mit niedriger Latenzzeit ausgeführt wird und fehlerfrei ist. Erfahren Sie mehr über Iter8 in 5 Minuten.

Vorbereitende Schritte

  • Einrichten Docker auf Ihrem lokalen System.
  • Erstellen Sie eine Code Engine-Anwendung. Sie sind nicht sicher, wie Sie eine erstellen? Versuchen Sie anschließend das Lernprogramm Anwendungen implementieren .

URL der Code Engine Anwendung suchen

Um die URL Ihrer Anwendung über die Befehlszeilenschnittstelle (CLI) zu ermitteln, führen Sie den Befehl ibmcloud ce application get aus und geben die Option -output url an. Suchen Sie zum Beispiel die URL für eine Anwendung mit dem Namen myapp.

ibmcloud ce application get -n myapp -output url

Beispielausgabe

https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud

Um die URL einer Anwendung mithilfe der Code Engine Konsolezu suchen, rufen Sie die Seite 'Anwendungsübersicht' auf. Wenn sich die Anwendung im Status Ready befindet, können Sie sie auf einer Webseite öffnen, indem Sie auf Anwendungs-URL öffnenklicken. Speichern Sie die URL.

Ausführen des Iter8-Docker-Containers

Iter8 wird als Docker-Container bereitgestellt, der alle Abhängigkeiten enthält, die für die Ausführung von Iter8 erforderlich sind. Mit dem folgenden Befehl wird der Docker-Container gestartet.

docker run --name ind --privileged -d iter8/ind:0.7.4

Docker-Container 'Iter8' initialisieren

Wenn Sie diesen Docker-Container initialisieren, startet der Befehl einen lokalen Kubernetes-Cluster innerhalb des Docker-Containers und installiert anschließend Iter8 innerhalb des Containers.

docker exec ind ./iter8.sh

Suchen Sie nach einer Ausgabe, die besagt, dass All systems go....

Validating service-level objectives (SLOs)

Stellen Sie sicher, dass Ihre Code Engine Anwendung Latenzzeiten und fehlerbasierte Service-Level-Ziele (SLOs) erfüllt, die Sie für Ihre Anwendung festgelegt haben. Der folgende Befehl generiert Anforderungen für Ihre Code Engine -Anwendung, erstellt deren Latenz-und Fehlerprofil und überprüft, ob Ihre Anwendung die angegebenen SLOs erfüllt.

Ersetzen Sie <URL-OF-YOUR-APPLICATION> durch die in Schritt 1 abgerufene URL. Sie können auch benutzerdefinierte Grenzwerte für die drei Metriken festlegen, die zum Bewerten Ihrer Anwendung verwendet werden.Im folgenden Beispiel überprüfen Sie, ob die durchschnittliche Latenzzeit Ihrer Anwendung unter 200,0 ms liegt, die Fehlerrate unter 1 % liegt (Sie können dies 0,0 machen) und die 95-prozentige Nachsatzlatenz unter 500,0 ms liegt.

docker exec ind helm install \
--set URL=<URL-OF-YOUR-APPLICATION> \
--set LimitMeanLatency=200.0 \
--set LimitErrorRate=0.01 \
--set Limit95thPercentileLatency=500.0 \
codeengine /iter8/helm/conformance

Beispielausgabe

NAME: codeengine
LAST DEPLOYED: Wed Jun 30 01:10:14 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

Ergebnisse der SLO-Validierung abrufen

Der folgende Befehl gibt das Ergebnis der SLO-Validierung für Ihre Code Engine Anwendung aus.

docker exec ind \
bash -c "kubectl get experiment my-experiment -o yaml | iter8ctl describe -f -"

Beispielausgabe

Wenn Sie keine Ausgabe ähnlich dem folgenden Beispiel erhalten, müssen Sie möglicherweise etwas länger warten und den vorherigen Befehl erneut ausführen. Im Abschnitt "Ziele" wird angezeigt, ob Ihre Anwendung die angegebenen SLOs erfüllt. Der Abschnitt "Metriken" enthält die von Iter8 für Ihre Anwendung beobachteten Metriken.

****** Overview ******
Experiment name: my-experiment
Experiment namespace: default
Target: my-app
Testing pattern: Conformance
Deployment pattern: Progressive

****** Progress Summary ******
Experiment stage: Completed
Number of completed iterations: 1

****** Winner Assessment ******
> If the version being validated; i.e., the baseline version, satisfies the experiment objectives, it is the winner.
> Otherwise, there is no winner.
Winning version: my-app

****** Objective Assessment ******
> Identifies whether or not the experiment objectives are satisfied by the most recently observed metrics values for each version.
+--------------------------------------+--------+
|              OBJECTIVE               | MY-APP |
+--------------------------------------+--------+
| iter8-system/mean-latency <=         | true   |
|                              200.000 |        |
+--------------------------------------+--------+
| iter8-system/error-rate <=           | true   |
|                                0.010 |        |
+--------------------------------------+--------+
| iter8-system/latency-95th-percentile | true   |
| <= 500.000                           |        |
+--------------------------------------+--------+

****** Metrics Assessment ******
> Most recently read values of experiment metrics for each version.
+--------------------------------------+--------+
|                METRIC                | MY-APP |
+--------------------------------------+--------+
| iter8-system/request-count           | 40.000 |
+--------------------------------------+--------+
| iter8-system/error-count             |  0.000 |
+--------------------------------------+--------+
| iter8-system/mean-latency            | 66.060 |
+--------------------------------------+--------+
| iter8-system/error-rate              |  0.000 |
+--------------------------------------+--------+
| iter8-system/latency-95th-percentile | 73.055 |
+--------------------------------------+--------+

Überarbeitung rückgängig machen

Wenn Ihre letzte Revision die von Ihnen angegebenen Experimentziele nicht erfüllt, können Sie die letzte Revision löschen und Code Engine automatisch auf die vorherige stabile Revision zurückrollen lassen.

Um die neueste Revision mit der Befehlszeilenschnittstelle zu löschen, führen Sie den Befehl ibmcloud ce revision delete aus.

Um die neueste Version von der Konsole zu löschen, rufen Sie die Code Engine Konsoleauf. Wählen Sie Projekte-> Ihr Projekt-> Anwendungen -> Ihre Anwendung-> Revisionen und Datenverkehraus. Löschen Sie die fehlgeschlagene Revision. Code Engine führt automatisch ein Rollback zur vorherigen stabilen Revision durch.

Container 'Iter8' entfernen

Sie können Ihr lokales System bereinigen, indem Sie den Container Iter8-in-Docker und das Image entfernen, wenn Sie ihn nicht mehr benötigen.

docker rm -f -v ind

Nächste Schritte für Iter8

Dieses Lernprogramm basiert auf dem Open-Source-Projekt "Iter8". Weitere Informationen finden Sie auf der Open-Source-Projektseite Iter8.