En este instructivo, se muestra cómo escribir un servicio de Cloud Run for Anthos desde una suscripción de envío a Pub/Sub, cómo implementarlo y cómo llamarlo.
Objetivos
- Escribir, compilar e implementar un servicio en Cloud Run for Anthos
- Llamar al servicio mediante la publicación de un mensaje en un tema de Pub/Sub
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Habilita la API de Cloud Run for Anthos
- Instala e inicializa la CLI de gcloud.
- Instala el componente
kubectl
:gcloud components install kubectl
- Actualiza los componentes, como se indica a continuación:
gcloud components update
- Si usas Cloud Run for Anthos, crea un clúster nuevo según las instrucciones de Configura Cloud Run for Anthos.
Configura los valores predeterminados de gcloud
Si deseas configurar gcloud con la configuración predeterminada para el servicio de Cloud Run for Anthos, haz lo siguiente:
Configura el proyecto predeterminado:
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID por el nombre del proyecto que creaste para este instructivo.
Configura gcloud para tu clúster:
gcloud config set run/platform gke gcloud config set run/cluster CLUSTER-NAME gcloud config set run/cluster_location REGION
Reemplaza lo siguiente:
- CLUSTER-NAME por el nombre que usaste para el clúster
- REGION por la ubicación de clúster compatible que elijas
Crea un tema de Pub/Sub
El servicio de muestra se activa mediante mensajes publicados en un tema de Pub/Sub, por lo que deberás crear un tema en Pub/Sub.
Para crear un tema nuevo de Pub/Sub, usa el siguiente comando:
gcloud pubsub topics create myRunTopic
Puedes usar myRunTopic o reemplazar por un nombre de tema único dentro de tu proyecto de Cloud.
Recupera la muestra de código
A fin de recuperar la muestra de código para su uso, haz lo siguiente:
Clona el repositorio de la app de muestra en tu máquina local:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Comienza a usarlo
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Cambia al directorio que contiene el código de muestra de Cloud Run for Anthos:
Node.js
cd nodejs-docs-samples/run/pubsub/
Python
cd python-docs-samples/run/pubsub/
Comienza a usarlo
cd golang-samples/run/pubsub/
Java
cd java-docs-samples/run/pubsub/
Observa el código
El código de este instructivo consta de los siguientes elementos:
Un servidor que maneja las solicitudes entrantes
Node.js
Para que el servicio de Node.js sea fácil de probar, la configuración del servidor es independiente del inicio del servidor.El servidor web de Node.js se configura en
El servidor web se inicia enapp.js
.index.js
:Python
Comienza a usarlo
Java
Un controlador que procesa el mensaje de Pub/Sub y registra un saludo
Node.js
Python
Comienza a usarlo
Java
Debes codificar el servicio para mostrar un código de respuesta HTTP preciso. Los códigos de éxito, como HTTP
200
o204
, confirman la recepción del procesamiento completo del mensaje de Pub/Sub. Los códigos de error, como HTTP400
o500
, indican que se volverá a intentar enviar el mensaje, como se describe en la Guía de recepción de mensajes mediante suscripciones de envío.Un
Dockerfile
que define el entorno operativo del servicio. El contenido delDockerfile
varía según el lenguajeNode.js
Python
Comienza a usarlo
Java
En esta muestra, se usa Jib para compilar imágenes de Docker mediante herramientas de Java comunes. Jib optimiza las compilaciones de contenedores sin la necesidad de tener un Dockerfile o tener Docker instalado. Obtén más información sobre cómo compilar contenedores de Java con Jib.
Para obtener detalles sobre cómo autenticar el origen de las solicitudes de Pub/Sub, lee la siguiente sección sobre Integración en Pub/Sub.
Envía el código
El código de envío consta de tres pasos: compilar una imagen de contenedor con Cloud Build, subir la imagen de contenedor a Container Registry y, luego, implementar la imagen de contenedor en Cloud Run for Anthos.
Para enviar el código, haz lo siguiente:
Compila el contenedor y publica en Container Registry:
Node.js
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
En el que PROJECT_ID es el ID del proyecto de Cloud y
pubsub
es el nombre que deseas darle a tu servicio.Si la operación se completa de manera correcta, deberías ver un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. La imagen se almacena en Container Registry y puede volver a usarse si así se desea.
Python
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
En el que PROJECT_ID es el ID del proyecto de Cloud y
pubsub
es el nombre que deseas darle a tu servicio.Si la operación se completa de manera correcta, deberías ver un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. La imagen se almacena en Container Registry y puede volver a usarse si así se desea.
Comienza a usarlo
gcloud builds submit --tag gcr.io/PROJECT_ID/pubsub
En el que PROJECT_ID es el ID del proyecto de Cloud y
pubsub
es el nombre que deseas darle a tu servicio.Si la operación se completa de manera correcta, deberías ver un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. La imagen se almacena en Container Registry y puede volver a usarse si así se desea.
Java
mvn compile jib:build -Dimage=gcr.io/PROJECT_ID/pubsub
En el que PROJECT_ID es el ID del proyecto de Cloud y
pubsub
es el nombre que deseas darle a tu servicio.Si se ejecuta de forma correcta, deberías ver un mensaje de COMPILACIÓN EXITOSA. La imagen se almacena en Container Registry y puede volver a usarse si así se desea.
Ejecuta el comando siguiente para implementar tu app:
gcloud run deploy pubsub-tutorial --image gcr.io/PROJECT_ID/pubsub
Reemplaza PROJECT_ID por tu ID del proyecto de Cloud.
pubsub
es el nombre del contenedor ypubsub-tutorial
es el nombre del servicio. Ten en cuenta que la imagen de contenedor se implementa en el servicio y en el clúster que configuraste antes en Configura gcloud.Espera hasta que finalice la implementación; esto puede tomar alrededor de medio minuto. Si la operación se completa de forma correcta, la línea de comandos mostrará la URL de servicio. Esta URL se usa para configurar una suscripción a Pub/Sub.
Si deseas implementar una actualización de código en el servicio, repite los pasos anteriores. Con cada implementación en un servicio se crea una revisión nueva y se comienza a entregar tráfico de manera automática cuando está lista.
Integra en Pub/Sub
Ahora que implementamos nuestro servicio de Cloud Run for Anthos, configuraremos Pub/Sub para enviarle mensajes.
Para integrar el servicio en Pub/Sub, sigue estos pasos:
Habilita Pub/Sub para crear tokens de autenticación en tu proyecto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Reemplaza
- PROJECT_ID por tu ID del proyecto de Cloud
- PROJECT-NUMBER por el número de tu proyecto de Cloud
Crea o selecciona una cuenta de servicio para representar la identidad de suscripción a Pub/Sub.
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run for Anthos Pub/Sub Invoker"
Puedes usar
cloud-run-pubsub-invoker
o reemplazar con un nombre único dentro de tu proyecto de Cloud.Crea una suscripción a Pub/Sub con la cuenta de servicio:
Habilita HTTPS y TLS automáticos para tu clúster y agrega una asignación de dominio a tu servicio.
Registra la propiedad del dominio de Pub/Sub.
Agrega código para validar el token de autenticación adjunto a los mensajes de Pub/Sub. El código de muestra se proporciona en Autenticación y autorización por parte del extremo de envío.
La autenticación debe garantizar que el token sea válido y esté asociado con la cuenta de servicio prevista. A diferencia de Cloud Run, Cloud Run for Anthos no tiene una verificación de autorización integrada de que el token sea válido o de que la cuenta de servicio tenga autorización para invocar el servicio de Cloud Run for Anthos.
Crea una suscripción a Pub/Sub con la cuenta de servicio:
gcloud pubsub subscriptions create myRunSubscription --topic myRunTopic \ --push-endpoint=SERVICE-URL/ \ --push-auth-service-account=cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
Reemplaza los siguientes elementos:
- myRunTopic por el tema que creaste antes
- SERVICE-URL por la URL de tu servicio personalizado.
Especifica
https
como el protocolo. - PROJECT_ID por el ID del proyecto de Cloud
La marca
--push-auth-service-account
activa la funcionalidad de envío de Pub/Sub para la autenticación y la autorización.
Tu servicio ahora está completamente integrado en Pub/Sub.
Haz una prueba
Para probar la solución de extremo a extremo, sigue estos pasos:
Envía un mensaje de Pub/Sub al tema:
gcloud pubsub topics publish myRunTopic --message "Runner"
También puedes publicar mensajes de manera programática en lugar de usar la línea de comandos como se muestra en este instructivo. Para obtener más información, consulta Publica mensajes.
Navega a los registros de servicio:
Navega a la página de Cloud Run for Anthos en la consola de Google Cloud:
Haz clic en el servicio
pubsub-tutorial
.Selecciona la pestaña Registros.
Los registros pueden tomar un tiempo en aparecer. Si no los ves de inmediato, vuelve a revisar en unos minutos.
Busca el mensaje “Hello Runner!”.
Realiza una limpieza
Para revisar un caso de uso más detallado del uso de Cloud Run for Anthos con Pub/Sub, omite la limpieza por ahora y continúa con el instructivo Procesamiento de imágenes.
Si creaste un proyecto nuevo para este instructivo, bórralo. Si usaste un proyecto existente y deseas conservarlo sin los cambios que se agregaron en este instructivo, borra los recursos creados para el instructivo.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, haga lo siguiente:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Borra los recursos del instructivo
Borra el servicio de Cloud Run for Anthos que implementaste en este instructivo:
gcloud run services delete SERVICE-NAME
En el ejemplo anterior, SERVICE-NAME es el nombre del servicio que elegiste.
También puedes borrar los servicios de Cloud Run for Anthos desde la consola de Google Cloud.
Quita las opciones de configuración predeterminadas de gcloud que agregaste durante la configuración del instructivo.
gcloud config unset run/platform gcloud config unset run/cluster gcloud config unset run/cluster_location
Quita la configuración del proyecto:
gcloud config unset project
Borra otros recursos de Google Cloud que creaste en este instructivo:
- Borra el tema de Pub/Sub
myRunTopic
. - Borra la suscripción a Pub/Sub
myRunSubscription
. - Borra la imagen del contenedor llamada
gcr.io/PROJECT_ID/pubsub
de Container Registry. - Borra la cuenta de servicio de invocador
cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
. - Si creaste un clúster para este instructivo, bórralo
- Borra el tema de Pub/Sub
¿Qué sigue?
- Expande el servicio de muestra implementado en este instructivo para agregar una funcionalidad de procesamiento de imágenes que modifique las imágenes subidas a Cloud Storage.
- Obtén más información sobre cómo se ajustan los temas a la arquitectura de Pub/Sub y cómo administrarlos.
- Obtén más información sobre las suscripciones a Pub/Sub en Administra suscripciones.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.