Dockerfile
en su raíz.
Para automatizar el despliegue desde Git con Cloud Build, sigue estos pasos:
Crea una configuración de Cloud Build que haga lo siguiente:
- Crea la imagen del contenedor.
- Envía la imagen a Container Registry (obsoleto).
- Despliega una nueva revisión en el servicio de Cloud Run
Para ello, añade un archivo llamado
cloudbuild.yamlen la raíz de tu repositorio con este contenido:steps: # build the container image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.'] # push the container image to Container Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'] # Deploy container image to Cloud Run - name: 'gcr.io/cloud-builders/gcloud' args: - 'run' - 'deploy' - '[SERVICE-NAME]' - '--image' - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA' - '--region' - '[REGION]' images: - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'Sustituir
- [SERVICE-NAME] con el nombre del servicio de Cloud Run.
- [REGION] por la región del servicio de Cloud Run que vas a desplegar.
Cloud Build rellena la variable de sustitución
$COMMIT_SHAcuando se activa desde un repositorio de Git.Asigna los roles Administrador de Cloud Run y Usuario de cuenta de servicio a la cuenta de servicio de Cloud Build:
Abre la página de configuración de Cloud Build en la Google Cloud consola:
En el panel Permisos de cuenta de servicio, define el estado del rol Administrador de Cloud Run como Habilitar:
Selecciona GRANT ACCESS TO ALL SERVICE ACCOUNTS (CONCEDER ACCESO A TODAS LAS CUENTAS DE SERVICIO) para asignar el rol Usuario de cuenta de servicio a todas las cuentas de servicio del proyecto en tu página.
En el panel de navegación de la izquierda, haga clic en Activadores para abrir la página Activadores:
- Haz clic en Crear activador.
- En el campo Nombre, introduce un nombre para el 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 Archivo de configuración de Cloud Build (yaml o json), selecciona Archivo de configuración de Cloud Build.
- 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.
¡Ya has terminado! A partir de ahora, cada vez que envíes contenido a tu repositorio, se invocará automáticamente una compilación y un despliegue en tu servicio de Cloud Run.
Despliegue continuo con un número mínimo de permisos de gestión de identidades y accesos
Cuando se despliega un contenedor en un servicio de Cloud Run, se ejecuta con la identidad de la cuenta de servicio de entorno de ejecución de ese servicio de Cloud Run. Como Cloud Build puede desplegar contenedores nuevos automáticamente, debe poder actuar como la cuenta de servicio de entorno de ejecución de tu servicio de Cloud Run.
Para conceder acceso limitado a Cloud Build para desplegar en un servicio de Cloud Run, sigue estos pasos:
Interfaz de usuario de la consola
Ve a la página Cuentas de servicio de la Google Cloud consola:
Haz clic en la dirección de correo de la cuenta de servicio de entorno de ejecución de tu servicio de Cloud Run (de forma predeterminada, es
PROJECT_NUMBER-compute@developer.gserviceaccount.com).Haz clic en la pestaña Principales con acceso.
Haz clic en Conceder acceso.
Introduce la cuenta de servicio de Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com).En el menú desplegable Seleccionar un rol, selecciona el rol Cuentas de servicio > Usuario de cuenta de servicio.
Haz clic en Guardar.
gcloud
Usa el comando gcloud iam service-accounts add-iam-policy-binding:
gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
Sustituye PROJECT_NUMBER por el ID numérico de tu proyecto.
Si usas Cloud Run con una identidad de servicio personalizada, sustituye PROJECT_NUMBER-compute@developer.gserviceaccount.com por la dirección de tu cuenta de servicio.
Para obtener más información, consulta Permisos de implementación.
Siguientes pasos
- Consulta cómo implementar o publicar una imagen de contenedor en un registro privado de otro proyecto en Configurar permisos de cuenta de servicio.