Pruebas en producción
¡Prueba tu microservicio, en producción!
Probar microservicios individuales
Emite una solicitud HTTP desde el Pod de prueba a uno de tus servicios:
$ kubectl exec $(kubectl get pod -l app=curl -o jsonpath='{.items[0].metadata.name}') -- curl -sS http://ratings:9080/ratings/7
Pruebas de caos
Realiza algunas pruebas de caos
en producción y ve cómo reacciona tu aplicación. Después de cada operación de caos,
accede a la página web de la aplicación y ve si algo cambió. Verifica
el estado de los pods con kubectl get pods
.
Termina el Service
details
en un Pod.$ kubectl exec $(kubectl get pods -l app=details -o jsonpath='{.items[0].metadata.name}') -- pkill ruby
Verifica el estado de los pods:
$ kubectl get pods NAME READY STATUS RESTARTS AGE details-v1-6d86fd9949-fr59p 1/1 Running 1 47m details-v1-6d86fd9949-mksv7 1/1 Running 0 47m details-v1-6d86fd9949-q8rrf 1/1 Running 0 48m productpage-v1-c9965499-hwhcn 1/1 Running 0 47m productpage-v1-c9965499-nccwq 1/1 Running 0 47m productpage-v1-c9965499-tjdjx 1/1 Running 0 48m ratings-v1-7bf577cb77-cbdsg 1/1 Running 0 47m ratings-v1-7bf577cb77-cz6jm 1/1 Running 0 47m ratings-v1-7bf577cb77-pq9kg 1/1 Running 0 48m reviews-v1-77c65dc5c6-5wt8g 1/1 Running 0 47m reviews-v1-77c65dc5c6-kjvxs 1/1 Running 0 48m reviews-v1-77c65dc5c6-r55tl 1/1 Running 0 47m curl-88ddbcfdd-l9zq4 1/1 Running 0 47m
Nota que el primer Pod se reinició una vez.
Termina el servicio
details
en todos sus pods:$ for pod in $(kubectl get pods -l app=details -o jsonpath='{.items[*].metadata.name}'); do echo terminating "$pod"; kubectl exec "$pod" -- pkill ruby; done
Verifica la página web de la aplicación:
Aplicación Web Bookinfo, detalles no disponibles Nota que la sección de detalles contiene mensajes de error en lugar de detalles del libro.
Verifica el estado de los pods:
$ kubectl get pods NAME READY STATUS RESTARTS AGE details-v1-6d86fd9949-fr59p 1/1 Running 2 48m details-v1-6d86fd9949-mksv7 1/1 Running 1 48m details-v1-6d86fd9949-q8rrf 1/1 Running 1 49m productpage-v1-c9965499-hwhcn 1/1 Running 0 48m productpage-v1-c9965499-nccwq 1/1 Running 0 48m productpage-v1-c9965499-tjdjx 1/1 Running 0 48m ratings-v1-7bf577cb77-cbdsg 1/1 Running 0 48m ratings-v1-7bf577cb77-cz6jm 1/1 Running 0 48m ratings-v1-7bf577cb77-pq9kg 1/1 Running 0 49m reviews-v1-77c65dc5c6-5wt8g 1/1 Running 0 48m reviews-v1-77c65dc5c6-kjvxs 1/1 Running 0 49m reviews-v1-77c65dc5c6-r55tl 1/1 Running 0 48m curl-88ddbcfdd-l9zq4 1/1 Running 0 48m
El primer Pod se reinició dos veces y otros dos pods
details
se reiniciaron una vez. Puedes experimentar el estadoError
y el estadoCrashLoopBackOff
hasta que los pods alcancen el estadoRunning
.Usa Ctrl-C en la terminal para detener el bucle infinito que se está ejecutando para simular tráfico.
En ambos casos, la aplicación no falló. El fallo en el
microservicio details
no causó que otros microservicios fallaran. Este comportamiento significa que
no tuviste una falla en cascada en esta situación. En su lugar, tuviste
degradación gradual del servicio: a pesar de que un microservicio falló, la
aplicación aún pudo proporcionar funcionalidad útil. Mostró las reseñas
y la información básica sobre el libro.
Estás listo para agregar una nueva versión de la aplicación reviews.