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 Anthos Service Mesh. Si no instalaste Anthos Service Mesh, consulta la guía de instalación.
Varias aplicaciones de muestra incluyen la instalación de Anthos Service Mesh. En esta guía, aprenderás a implementar la aplicación de muestra BookInfo. Se trata de una aplicación sencilla que simula una librería, formada por cuatro servicios que proporcionan una página web de productos, detalles de libros, reseñas (con varias versiones del servicio de reseñas) y clasificaciones, todo administrado mediante Anthos Service Mesh. Puedes encontrar el código fuente y todos los demás archivos que se usaron en este ejemplo en el directorio de instalación de Anthos Service Mesh en samples/bookinfo
.
Habilita la inserción automática de sidecar
Para habilitar la inserción automática de sidecar, debes etiquetar tus espacios de nombres para que el webhook de inyector de sidecar asocie los sidecars insertados con una revisión del plano de control en particular. Si configuras la etiqueta predeterminada, etiqueta tus espacios de nombres con las etiquetas de inserción predeterminadas. De lo contrario, etiqueta tus espacios de nombres con la etiqueta de revisión. Además, la etiqueta que agregues también dependerá de si implementaste Anthos Service Mesh administrado o instalaste el plano de control en el clúster.
Administrado
Puedes usar la etiqueta de inserción predeterminada o la etiqueta de revisión para tu espacio de nombres
Etiquetas de inserción predeterminadas
Aplica la etiqueta de inyección predeterminada al espacio de nombres.
kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-
Etiqueta de revisión
Antes de implementar aplicaciones, quita las etiquetas
istio-injection
anteriores de sus espacios de nombres y configura la etiquetaistio.io/rev=REVISION_LABEL
en su lugar.Para cambiarla a una etiqueta de revisión específica, haz clic en
REVISION_LABEL
y reemplázala por la etiqueta aplicable:asm-managed-rapid
para un canal rápido,asm-managed
para un canal regular oasm-managed-stable
para un canal estable.La etiqueta de revisión corresponde a un canal de versiones:
Etiqueta de revisión Canal asm-managed
Normal asm-managed-rapid
Rápido asm-managed-stable
Estable kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Si también implementaste el plano de datos administrado opcional, anota el espacio de nombres
NAMESPACE
de la siguiente manera:kubectl annotate --overwrite namespace NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
En el clúster
Usa el siguiente comando para encontrar la etiqueta en
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
El resultado es similar al siguiente:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-173-3-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1157-21,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1157-21,istio=istiod,pod-template-hash=5788d57586
En el resultado, en la columna
LABELS
, observa el valor de la etiqueta de revisiónistiod
, que está después del prefijoistio.io/rev=
. En este ejemplo, el valor esasm-1157-21
.Aplica la etiqueta de revisión a los espacios de nombres predeterminados. En el siguiente comando,
REVISION
es el valor de la etiqueta de revisiónistiod
que anotaste en el paso anterior.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwrite
Puedes ignorar el mensaje
"istio-injection not found"
en el resultado. Esto significa que el espacio de nombres no tenía la etiquetaistio-injection
, que debería aparecer en las nuevas instalaciones de Anthos Service Mesh o en implementaciones nuevas. Debido a que la inserción automática falla si un espacio de nombres tiene las etiquetasistio-injection
y de revisión, todos los comandoskubectl label
en la documentación de Anthos Service Mesh especifican ambas etiquetas de forma explícita.
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 Anthos Service Mesh, ve a la raíz del directorio de instalación de Anthos Service Mesh. Si es necesario, descarga el archivo de instalación.
Implementa tu aplicación en el espacio de nombres predeterminado mediante
kubectl
:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Confirma que la aplicación se implementó 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
Finalmente, define el enrutamiento de la puerta de enlace para 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
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 Anthos Service Mesh en GKE en VMware, obtén la dirección IP externa de la puerta de enlace de entrada que configuraste después de instalar Anthos Service Mesh.
Si instalaste Anthos 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-system
Salida:
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/productpage
Si la respuesta muestra
200
, significa que la aplicación funciona de forma correcta con Anthos Service Mesh.Para ver la página web de Bookinfo, ingresa la siguiente dirección en tu navegador:
http://EXTERNAL_IP/productpage
Si 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 Anthos Service Mesh en la consola de Google Cloud para ver las métricas y otras funciones de observabilidad.
Realice 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.sh
Confirma 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.