Cloud Run te permite ejecutar imágenes sin estado en un entorno sin servidor. Con Cloud Build, puedes desplegar imágenes de Artifact Registry en Cloud Run. Puedes implementar una imagen que ya tengas, crear e implementar una imagen o automatizar la implementación.
Antes de empezar
-
Enable the Cloud Build, Cloud Run, Artifact Registry, and Resource Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Tener listo el código fuente de la aplicación. El código fuente debe almacenarse en un repositorio como GitHub o Bitbucket.
Para ejecutar los comandos
gcloud
de esta página, instala Google Cloud CLI.Si usas Controles de Servicio de VPC, configura un grupo privado en el perímetro de Controles de Servicio de VPC. También debes configurar Cloud Run para Controles de Servicio de VPC.
Permisos de Gestión de Identidades y Accesos necesarios
-
En la Google Cloud consola, ve a la página Permisos de settings Cloud Build:
En la cuenta de servicio de Cloud Build especificada o en la cuenta de servicio de Cloud Build predeterminada, asigna el estado Habilitado a los siguientes roles:
- Administrador de Cloud Run (
roles/run.admin
): permite a Cloud Build desplegar nuevos servicios en Cloud Run.- En el panel Asignar rol de usuario de cuenta de servicio, elige una cuenta de servicio que suplantar y, a continuación, haz clic en Conceder permiso.
- Administrador de almacenamiento (
roles/storage.admin
): permite leer y escribir en Cloud Storage. - Escritor de Artifact Registry (
roles/artifactregistry.writer
): permite extraer imágenes de Artifact Registry y escribir en él. - Escritor de registros (
roles/logging.logWriter
): permite escribir entradas de registro en Cloud Logging. - Editor de Cloud Build (
roles/cloudbuild.builds.editor
): permite que tu cuenta de servicio ejecute compilaciones.
- Administrador de Cloud Run (
Crear y desplegar una imagen
Cloud Build te permite compilar una imagen, almacenarla en Artifact Registry y, a continuación, desplegarla en Cloud Run.
Para crear y desplegar una imagen, sigue estos pasos:
En el directorio raíz de tu proyecto, crea un archivo de configuración llamado
cloudbuild.yaml
.En el archivo de configuración de compilación, añade
docker
pasos de compilación para crear la imagen y enviarla a Artifact Registry. A continuación, añade ungcloud
paso de compilación para invocar el comandogcloud run deploy
y desplegar la imagen en Cloud Run:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION'] images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
Donde:
REPOSITORY
es el nombre del repositorio de Artifact Registry desde el que implementas la imagen.LOCATION
es la ubicación de tu repositorio de Artifact Registry, comous-east1
.PROJECT_ID
es el ID del proyecto Google Cloud en el que se almacena la imagen.SERVICE_NAME
es el nombre del servicio de Cloud Run.SERVICE_REGION
es la región del servicio de Cloud Run que vas a desplegar.IMAGE
es el nombre de la imagen en Artifact Registry.
Ve al directorio raíz de tu proyecto y ejecuta el siguiente comando, donde
LOCATION
es una de las regiones de compilación admitidas para ejecutar la compilación:gcloud builds submit --region=LOCATION
Una vez completado el proceso, se muestra un mensaje de éxito junto con la URL del servicio implementado.
Despliegue continuo
Puedes automatizar el despliegue de tu software en Cloud Run creando activadores de Cloud Build. Puedes configurar tus activadores para compilar y desplegar imágenes cada vez que actualices tu código fuente.
Para automatizar el despliegue, sigue estos pasos:
En la raíz de tu repositorio, añade un archivo de configuración llamado
cloudbuild.yaml
con los pasos para crear la imagen, enviarla a Artifact Registry y, a continuación, invocar el comandogcloud run deploy
:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA' - '--region' - 'SERVICE_REGION' images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
Donde:
REPOSITORY
es el nombre del repositorio de Artifact Registry desde el que implementas la imagen.LOCATION
es la ubicación de tu repositorio de Artifact Registry, comous-east1
.PROJECT_ID
es el ID del proyecto Google Cloud en el que se almacena la imagen.SERVICE_NAME
es el nombre del servicio de Cloud Run.SERVICE_REGION
es la región del servicio de Cloud Run que vas a desplegar.IMAGE
es el nombre de la imagen en Artifact Registry.
Cloud Build rellena la variable de sustitución
$COMMIT_SHA
cuando se activa desde un repositorio de Git.Crea un activador de compilación con el archivo de configuración que has creado en el paso anterior:
Abre la página Activadores:
Haz clic en Crear activador.
En el campo Nombre, introduce un nombre para el activador.
En Región, selecciona la región de tu activador.
En Evento, selecciona el evento del repositorio para iniciar el activador.
En Source (Origen), selecciona tu repositorio y el nombre de la rama o etiqueta que activará el activador. Para obtener más información sobre cómo especificar qué ramas se deben compilar automáticamente, consulta Crear un activador de compilación.
En Configuración, selecciona Archivo de configuración de Cloud Build (YAML o JSON).
En el campo Ubicación del archivo de configuración de Cloud Build, escribe
cloudbuild.yaml
después de/
.Haz clic en Crear para guardar el activador de compilación.
Ahora, cuando envíes código nuevo a tu repositorio, Cloud Build invocará una compilación y desplegará el servicio en Cloud Run.
Para obtener más información sobre cómo crear activadores de Cloud Build, consulta el artículo Crear y gestionar activadores de compilación.
Ejemplos de código
Aquí tienes algunos repositorios de ejemplo, cada uno de los cuales contiene una aplicación de ejemplo y un archivo de configuración de compilación para desplegar la aplicación en Cloud Run:
- deploy-prebuilt: un ejemplo de código que muestra cómo desplegar una imagen prediseñada en Cloud Run.
- run-example-builddeploy: un ejemplo de código que muestra cómo crear y desplegar una imagen en Cloud Run.
Siguientes pasos
- Consulta cómo usar Cloud Deploy para desplegar en Cloud Run.
- Consulta cómo desplegar en GKE.
- Consulta cómo desplegar en Cloud Run Functions.
- Consulta cómo desplegar en App Engine.
- Consulta cómo implementar en Firebase.
- Consulta cómo realizar implementaciones azul-verde en Compute Engine.
- Consulta cómo solucionar errores de compilación.