Implementa la aplicación de muestra BookInfo
En esta página, se explica cómo implementar una aplicación de muestra para demostrar el funcionamiento de Cloud Service Mesh. Si no realizaste la incorporación a Cloud Service Mesh, consulta la guía de incorporación.
Varias aplicaciones de muestra incluyen la instalación de Cloud Service Mesh. En esta guía, se explica cómo implementar la muestra de BookInfo. Se trata de una aplicación sencilla que simula una librería formada por cuatro servicios que proporcionan una página de productos web, detalles de libros, opiniones (con varias versiones del servicio de opiniones) y calificaciones, todo administrado con Cloud Service Mesh. Puedes encontrar el código fuente y todos los demás archivos usados en este ejemplo en el directorio de instalación de Cloud Service Mesh en samples/bookinfo.
Acceso a la red para imágenes de muestra
La herramienta de asmcli no verifica ni extrae nada de Docker Hub (docker.io) durante la instalación de la malla principal. Sin embargo, implementar imágenes de contenedor de terceros después de la instalación hace que Kubelet recupere imágenes de aplicaciones de muestra de Docker Hub y de la CDN de Cloudflare que respalda a Docker Hub.
En las redes restringidas o aisladas, estas extracciones de imágenes fallan, a menos que se realicen explícitamente.
Para admitir tus extracciones de imágenes, elige uno de los siguientes enfoques:
Permitir tráfico de salida
Actualiza tu firewall o proxy para permitir la salida de HTTPS (puerto 443) a los siguientes dominios. Ten en cuenta que se requiere el dominio de Cloudflare porque Docker Hub usa redireccionamientos HTTP 307 para entregar capas de imágenes.
- docker.io
- hub.docker.com
- *.cloudflarestorage.com
Duplica en un registro privado
En el caso de los entornos completamente restringidos, no abras puertos de firewall. En su lugar, duplica las imágenes de muestra requeridas en tu registro interno y configura tu clúster para que use tu registro interno.
Para obtener instrucciones detalladas sobre cómo configurar esto en entornos de GDC, consulta Usa una duplicación del registro para imágenes de contenedores.
Habilita la inserción automática de sidecar
Habilita el espacio de nombres para la inserción. Los pasos dependen de tu implementación del plano de control.
Administrado (TD)
- Aplica la etiqueta de inserción predeterminada al espacio de nombres:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteAdministrado (Istiod)
Recomendación: Ejecuta el siguiente comando para aplicar la etiqueta de inserción predeterminada al espacio de nombres:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteSi ya eres usuario del plano de control de Istiod administrado, te recomendamos que uses la inserción predeterminada, pero también se admite la inserción basada en revisiones. Sigue estas instrucciones:
Ejecuta el siguiente comando para ubicar los canales de versiones disponibles:
kubectl -n istio-system get controlplanerevisionEl resultado es similar a lo siguiente:
NAME AGE asm-managed-rapid 6d7hNOTA: Si aparecen dos revisiones del plano de control en la lista anterior, quita una. No se admite tener varios canales del plano de control en el clúster.
En el resultado, el valor en la columna
NAMEes la etiqueta de revisión que corresponde al canal de versiones disponible para la versión de Cloud Service Mesh.Aplica la etiqueta de revisión al espacio de nombres:
kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
En el clúster
Recomendación: Ejecuta el siguiente comando para aplicar la etiqueta de inserción predeterminada al espacio de nombres:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteTe recomendamos que uses la inserción predeterminada, pero se admite la inserción basada en revisiones: Sigue estas instrucciones:
Usa el siguiente comando para encontrar la etiqueta de revisión en
istiod:kubectl get deploy -n istio-system -l app=istiod -o \ jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'Aplica la etiqueta de revisión a los espacios de nombres. En el siguiente comando,
REVISION_LABELes el valor de la etiqueta de revisiónistiodque anotaste en el paso anterior.kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Implementa la aplicación
Ahora que la inserción automática está habilitada en el espacio de nombres default, cuando implementas los servicios de la aplicación BookInfo, los proxies de sidecar se insertan junto con cada servicio.
En la línea de comandos de la computadora en la que instalaste Cloud Service Mesh, ve a la raíz del directorio de instalación de Cloud Service Mesh. Si es necesario, descarga el archivo de instalación en el clúster, que incluye la aplicación de ejemplo bookinfo, y extráelo.
Implementa tu aplicación en el espacio de nombres predeterminado mediante
kubectl:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlConfirma que la aplicación se implementó correctamente ejecutando los siguientes comandos:
kubectl get servicesSalida:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE details 10.0.0.31 <none> 9080/TCP 6m kubernetes 10.0.0.1 <none> 443/TCP 7d productpage 10.0.0.120 <none> 9080/TCP 6m ratings 10.0.0.15 <none> 9080/TCP 6m reviews 10.0.0.170 <none> 9080/TCP 6m
y
kubectl get podSalida:
NAME READY STATUS RESTARTS AGE details-v1-1520924117-48z17 2/2 Running 0 6m productpage-v1-560495357-jk1lz 2/2 Running 0 6m ratings-v1-734492171-rnr5l 2/2 Running 0 6m reviews-v1-874083890-f0qf0 2/2 Running 0 6m reviews-v2-1343845940-b34q5 2/2 Running 0 6m reviews-v3-1813607990-8ch52 2/2 Running 0 6m
Finalmente, define el enrutamiento de la puerta de enlace para la aplicación:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yamlSalida:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
Valida la implementación de la aplicación
Para comprobar que la aplicación Bookinfo funcione, envía tráfico a la puerta de enlace de entrada.
Si instalaste Cloud Service Mesh en Google Distributed Cloud (solo software) para VMware, obtén la dirección IP externa de la puerta de enlace de entrada que configuraste después de instalar Cloud Service Mesh.
Si instalaste Cloud Service Mesh en GKE, obtén la dirección IP externa de la puerta de enlace de entrada de la siguiente manera:
kubectl get service istio-ingressgateway -n istio-systemResultado:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
En este ejemplo, la dirección IP del servicio de entrada es
35.239.7.64.
Prueba la aplicación
Verifica que la app Bookinfo se ejecute con
curl:curl -I http://EXTERNAL_IP/productpageSi la respuesta muestra
200, significa que la aplicación funciona correctamente con Cloud Service Mesh.Para ver la página web de Bookinfo, ingresa la siguiente dirección en tu navegador:
http://EXTERNAL_IP/productpageSi actualizas la página varias veces, deberías ver diferentes versiones de reseñas que se muestran en la página de productos, que se presentan en un estilo round robin (estrellas rojas, negras, sin estrellas).
Ahora que tienes una aplicación que genera tráfico, puedes explorar las páginas de Cloud Service Mesh en la consola de Google Cloud para ver las métricas y otras funciones de observabilidad.
Realiza una limpieza
Cuando termines de hacer pruebas con la muestra Bookinfo, quítala del clúster.
Desinstala Bookinfo mediante la siguiente secuencia de comandos:
samples/bookinfo/platform/kube/cleanup.shConfirma la finalización:
kubectl get virtualservices #-- there should be no virtual services kubectl get destinationrules #-- there should be no destination rules kubectl get gateway #-- there should be no gateway kubectl get pods #-- the Bookinfo pods should be deleted
¿Qué sigue?
Obtén más información sobre la aplicación de muestra Bookinfo.