Validación del código de aplicación y latencia con Iter8
Iter8 es la herramienta de ingeniería de versiones para Kubernetes que permite la validación de objetivos de nivel de servicio (SLO), pruebas A/B y actualizaciones progresivas para las aplicaciones de Kubernetes. Ahora, se puede utilizar Iter8 para verificar que la aplicación IBM Cloud® Code Engine está ejecutando con baja latencia y sin errores. Obtenga más información sobre Iter8 en 5 minutos.
Antes de empezar
- Configure Docker en su sistema local.
- Cree una aplicación de Code Engine. ¿No está seguro de cómo crear uno? Luego, pruebe la guía de aprendizaje Despliegue de aplicaciones.
Búsqueda del URL de una aplicación Code Engine
Para encontrar el URL de una aplicación con la CLI, ejecute el comando ibmcloud ce application get y especifique la opción -output url.
Por ejemplo, buscar el URL de una aplicación llamada myapp.
ibmcloud ce application get -n myapp -output url
Salida de ejemplo
https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
Para encontrar el URL de una aplicación utilizando la consola Code Engine, vaya a la página Visión general de la aplicación. Si la aplicación se encuentra en estado Ready (lista),
podrá abrirla en una página web pulsando Abrir URL de aplicación. Guarde el URL.
Ejecución del contenedor Docker Iter8
Iter8 se proporciona como un contenedor Docker que incluye todas las dependencias necesarias para ejecutar Iter8. El comando siguiente inicia el contenedor Docker.
docker run --name ind --privileged -d iter8/ind:0.7.4
Inicialización del contenedor Docker Iter8
Cuando se inicializa este contenedor Docker, el comando inicia un clúster Kubernetes local dentro del contenedor Docker y luego instala Iter8 en el contenedor.
docker exec ind ./iter8.sh
Busque la salida que diga All systems go... (todos los sistemas funcionan...).
Validación de los objetivos de nivel de servicio (SLO)
Verifique que la aplicación Code Engine cumple la latencia y los objetivos de nivel de servicio (SLO) basados en error que haya determinado para la aplicación. El comando siguiente genera solicitudes para la aplicación Code Engine, construye su perfil de latencia y de error, y verifica que la aplicación cumple los SLO especificados.
Sustituya <URL-OF-YOUR-APPLICATION> por el URL obtenido en el Paso 1. También puede establecer límites personalizados para las tres métricas que se utilizan para evaluar la aplicación.En
el ejemplo siguiente, se verifica que la latencia media de la aplicación sea inferior a 200.0 ms, la tasa de error inferior al 1% (se puede hacer que sea 0.0) y la latencia de cola de percentil 95th inferior a 500.0 ms.
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
Salida de ejemplo
NAME: codeengine
LAST DEPLOYED: Wed Jun 30 01:10:14 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
Obtención de los resultados de la validación SLO
El comando siguiente genera el resultado de la validación SLO de una aplicación Code Engine.
docker exec ind \
bash -c "kubectl get experiment my-experiment -o yaml | iter8ctl describe -f -"
Salida de ejemplo
Si no ve una salida similar al ejemplo siguiente, es posible que tenga que esperar un poco más y volver a intentar el comando anterior. La sección de objetivos informa si la aplicación cumple los SLO especificados. La sección de métricas informa de las métricas de la aplicación que Iter8 ha observado.
****** 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 |
+--------------------------------------+--------+
Retrotracción de una revisión
Si la última revisión no cumple los objetivos de experimento especificados, puede que le interese suprimir la revisión más reciente y permitir que Code Engine se retrotraiga automáticamente a la revisión estable anterior.
Para suprimir la última revisión con la CLI, ejecute el comando ibmcloud ce revision delete.
Para suprimir la revisión más reciente en la consola, vaya a la Consola de Code Engine. Seleccione Proyectos-> su proyecto-> Aplicaciones -> su aplicación-> Revisiones y tráfico. Suprima la revisión que ha fallado. Code Engine se retrotrae automáticamente a la revisión estable anterior.
Eliminación del contenedor Iter8
Se puede limpiar el sistema local eliminando el contenedor y la imagen Iter8-in-Docker cuando ya no se necesita.
docker rm -f -v ind
Pasos siguientes para Iter8
Esta guía de aprendizaje se basa en el proyecto de código abierto Iter8. Para más información, consulte la página del proyecto de código abierto Iter8.