Cloud Run te permite ejecutar imágenes sin estado en un entorno sin servidores. Con Cloud Build, puedes implementar imágenes desde Artifact Registry en Cloud Run. Puedes implementar una imagen existente, compilar e implementar una imagen, o automatizar la implementación.
Antes de comenzar
Habilita las APIs de Cloud Build, Cloud Run, Artifact Registry y Resource Manager si alguna aún no está habilitada.
Roles necesarios para habilitar las APIs
Para habilitar APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.
Ten preparado el código fuente de la aplicación. Tu código fuente debe almacenarse en un repositorio, como GitHub o Bitbucket.
Para ejecutar los comandos de
gclouden esta página, instala Google Cloud CLI.Si usas los Controles del servicio de VPC, configura un grupo privado en el perímetro de los Controles del servicio de VPC. También debes configurar Cloud Run para los Controles del servicio de VPC.
Permisos necesarios de Identity and Access Management
-
En la consola Google Cloud , ve a la página settings Cloud Build Permisos:
Para tu cuenta de servicio de Cloud Build especificada o la cuenta de servicio de Cloud Build predeterminada, establece el estado de los siguientes roles como Habilitado:
- Administrador de Cloud Run (
roles/run.admin): Permite que Cloud Build implemente servicios nuevos en Cloud Run.- En el panel Assign Service Account User Role, elige una cuenta de servicio para suplantar y, luego, haz clic en Grant Permission.
- Administrador de almacenamiento (
roles/storage.admin): Permite leer y escribir desde Cloud Storage. - Escritor de Artifact Registry (
roles/artifactregistry.writer): Permite extraer imágenes de Artifact Registry y escribir en él. - Logs Writer (
roles/logging.logWriter) | Permite que las entradas de registro se escriban en Cloud Logging. - Editor de Cloud Build (
roles/cloudbuild.builds.editor): Permite que tu cuenta de servicio ejecute compilaciones.
- Administrador de Cloud Run (
Compila e implementa una imagen
Cloud Build te permite compilar una imagen, almacenarla en Artifact Registry y, luego, implementarla en Cloud Run.
Para compilar e implementar una imagen, haz lo siguiente:
En el directorio raíz del proyecto, crea un archivo de configuración llamado
cloudbuild.yaml.En el archivo de configuración de compilación, agrega pasos de compilación
dockerpara compilar la imagen y enviarla a Artifact Registry. Luego, agrega un paso de compilacióngcloudpara invocar el comandogcloud run deployy, así, implementar 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'Aquí:
REPOSITORYes el nombre del repositorio de Artifact Registry desde el que implementas tu imagen.LOCATIONes la ubicación de tu repositorio de Artifact Registry, comous-east1.PROJECT_IDes el ID del proyecto de Google Clouden el que se almacena tu imagen.SERVICE_NAMEes el nombre del servicio de Cloud Run.SERVICE_REGIONes la región del servicio de Cloud Run que implementas.IMAGEes el nombre de tu imagen en Artifact Registry.
Navega al directorio raíz de tu proyecto y ejecuta el siguiente comando, en el que
LOCATIONes una de las regiones de compilación admitidas para ejecutar la compilación:gcloud builds submit --region=LOCATION
Una vez que la operación se completa de manera correcta, se muestra un mensaje de éxito, además de la URL del servicio implementado.
Implementación continua
Puedes automatizar la implementación de tu software en Cloud Run creando activadores de Cloud Build. Puedes configurar los activadores para compilar e implementar imágenes cada vez que actualices tu código fuente.
Para automatizar tu implementación, sigue estos pasos:
En la raíz del repositorio, agrega un archivo de configuración llamado
cloudbuild.yamlcon pasos para compilar la imagen, enviarla a Artifact Registry y, luego, 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'Aquí:
REPOSITORYes el nombre del repositorio de Artifact Registry desde el que implementas tu imagen.LOCATIONes la ubicación de tu repositorio de Artifact Registry, comous-east1.PROJECT_IDes el ID del proyecto de Google Clouden el que se almacena tu imagen.SERVICE_NAMEes el nombre del servicio de Cloud Run.SERVICE_REGIONes la región del servicio de Cloud Run que implementas.IMAGEes el nombre de tu imagen en Artifact Registry.
Cloud Build completa la variable de sustitución
$COMMIT_SHAcuando se activa desde un repositorio de Git.Crea un activador de compilación con el archivo de configuración creado en el paso anterior:
Abrir la página Activadores:
Haz clic en Crear activador.
En el campo Nombre, ingresa un nombre para el activador.
En Región, selecciona la región para tu activador.
En Evento, selecciona el evento del repositorio para iniciar el activador.
En Fuente, selecciona el repositorio y el nombre de la rama o de la etiqueta que iniciará el activador. Para obtener más información sobre cómo especificar qué ramas se deben compilar de manera automática, consulta Crea 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.yamldespué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, luego, implementará el servicio en Cloud Run.
Para obtener más información sobre cómo crear activadores de Cloud Build, consulta Crea y administra activadores de compilación.
Ejemplos de código
Estos son algunos repositorios de muestra. Cada uno contiene una aplicación de muestra y un archivo de configuración de compilación para implementar la aplicación en Cloud Run:
- deploy-prebuilt: Un ejemplo de código que muestra cómo implementar una imagen compilada previamente en Cloud Run.
- run-example-builddeploy: Un ejemplo de código con el que se muestra cómo compilar y, también, implementar una imagen en Cloud Run.
¿Qué sigue?
- Aprende a usar Cloud Deploy para realizar implementaciones en Cloud Run.
- Consulta Implementa en GKE.
- Aprende a implementar en Cloud Run Functions.
- Consulta Implementa en App Engine.
- Consulta Implementa en Firebase.
- Obtén más información para realizar implementaciones azul-verde en Compute Engine.
- Obtén más información para solucionar errores de compilación.