Desplegar la muestra Bookinfo
En esta página se explica cómo desplegar una aplicación de ejemplo para demostrar Cloud Service Mesh. Si no has incorporado Cloud Service Mesh, consulta la guía de incorporación.
La instalación de Cloud Service Mesh incluye varias aplicaciones de ejemplo. En esta guía se explica cómo desplegar la aplicación de ejemplo BookInfo. Se trata de una aplicación de librería ficticia sencilla compuesta por cuatro servicios que proporcionan una página de producto web, detalles de libros, reseñas (con varias versiones del servicio de reseñas) y valoraciones. Todo ello se gestiona con Cloud Service Mesh. Puedes encontrar el código fuente y todos los demás archivos utilizados en este ejemplo en el directorio de instalación de Cloud Service Mesh en samples/bookinfo
.
Habilitar la inyección automática de sidecars
Habilita el espacio de nombres para la inyección. Los pasos dependen de la implementación del plano de control.
Gestionado (TD)
- Aplica la etiqueta de inyección predeterminada al espacio de nombres:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwrite
Gestionado (Istiod)
Recomendación: Ejecuta el siguiente comando para aplicar la etiqueta de inyección predeterminada al espacio de nombres:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwrite
Si ya eres usuario del plano de control de Istiod gestionado: Te recomendamos que utilices la inyección predeterminada, pero también se admite la inyección basada en revisiones. Sigue estas instrucciones:
Ejecuta el siguiente comando para localizar los canales de lanzamiento disponibles:
kubectl -n istio-system get controlplanerevision
El resultado debería ser similar al siguiente:
NAME AGE asm-managed-rapid 6d7h
NOTA: Si aparecen dos revisiones del plano de control en la lista anterior, elimina una. No se admite tener varios canales del plano de control en el clúster.
En el resultado, el valor de la columna
NAME
es la etiqueta de revisión que corresponde al canal de lanzamiento 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 inyección predeterminada al espacio de nombres:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwrite
Te recomendamos que uses la inyección predeterminada, pero también se admite la inyección basada en revisiones: Sigue estas instrucciones:
Usa el siguiente comando para localizar 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 al espacio de nombres. En el siguiente comando,
REVISION_LABEL
es el valor de la etiqueta de revisiónistiod
que has anotado en el paso anterior.kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Implementar la aplicación
Ahora que la inyección automática está habilitada en el espacio de nombres default
, cuando despliegues los servicios de la aplicación BookInfo, se inyectarán proxies adicionales junto a cada servicio.
En la línea de comandos del ordenador en el que hayas instalado 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.
Despliega tu aplicación en el espacio de nombres predeterminado con
kubectl
:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Confirma que la aplicación se ha desplegado correctamente ejecutando los siguientes comandos:
kubectl get services
Resultado:
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 pod
Resultado:
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
Por último, define el enrutamiento de la pasarela de entrada de la aplicación:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Resultado:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
Validar la implementación de la aplicación
Para comprobar si la aplicación BookInfo funciona, debe enviar tráfico a la puerta de enlace de entrada.
Si has instalado Cloud Service Mesh en Google Distributed Cloud (solo software) para VMware, obtén la dirección IP externa de la pasarela de entrada que configuraste después de instalar Cloud Service Mesh.
Si has instalado Cloud Service Mesh en GKE, obtén la dirección IP externa de la pasarela de entrada de la siguiente manera:
kubectl get service istio-ingressgateway -n istio-system
Resultado:
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
.
Probar la aplicación
Comprueba que la aplicación BookInfo se está ejecutando con
curl
:curl -I http://EXTERNAL_IP/productpage
Si la respuesta muestra
200
, significa que la aplicación funciona correctamente con Cloud Service Mesh.Para ver la página web BookInfo, introduce la siguiente dirección en tu navegador:
http://EXTERNAL_IP/productpage
Si actualizas la página varias veces, verás diferentes versiones de las reseñas en la página de producto, presentadas de forma rotatoria (estrellas rojas, estrellas negras y 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.
Eliminar los recursos utilizados
Cuando hayas terminado de experimentar con la muestra Bookinfo, elimínala de tu clúster.
Desinstala Bookinfo con la siguiente secuencia de comandos:
samples/bookinfo/platform/kube/cleanup.sh
Confirma el apagado:
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
Siguientes pasos
Consulta más información sobre el ejemplo Bookinfo.