Cloud Workstations te permite crear y usar imágenes personalizadas para tus estaciones de trabajo. Después de que se usa una imagen personalizada, es útil automatizar una recompilación de la imagen personalizada para extraer las correcciones y actualizaciones disponibles en las imágenes base.
En este instructivo, aprenderás a compilar una canalización automatizada para asegurarte de incluir actualizaciones y parches de seguridad en tus imágenes de estaciones de trabajo personalizadas.
Objetivos
Si sigues este instructivo, compilarás una canalización automatizada para tu imagen base con estos pasos:
- Crea un repositorio de Artifact Registry para almacenar y analizar tu imagen personalizada.
- Configura GitHub con Google Cloud para almacenar las configuraciones de tu imagen.
- Crea un activador de compilación de Cloud Build para automatizar la creación y la implementación de imágenes personalizadas en Artifact Registry.
- Configura Cloud Scheduler para iniciar compilaciones de forma periódica.
- Revisa los resultados de los procesos automatizados.
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.
Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.
Antes de comenzar
- Accede a tu Google Cloud cuenta. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command:gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command:gcloud init
Prepare el entorno
Antes de continuar, asegúrate de configurar las siguientes variables de entorno.
Establece el ID del proyecto de la nube que planeas usar:
PROJECT_ID=$PROJECT_IDEstablece el nombre de usuario de GitHub en el que planeas almacenar tu repositorio:
GITHUB_USER=$GITHUB_IDEstablece las variables
PROJECT_NUMBERyREGIONpara usarlas durante el proceso:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGIONEn el ejemplo anterior, reemplaza $REGION por el nombre de la región que planeas usar, por ejemplo,
us-central1.Para obtener más información sobre las regiones disponibles, consulta Ubicaciones de Cloud Workstations.
Crea un repositorio de Artifact Registry
En este instructivo, usarás Artifact Registry para almacenar y analizar tus imágenes.
Crea un repositorio con el siguiente comando:
gcloud artifacts repositories create custom-images \ --repository-format=docker \ --location=$REGION \ --description="Docker repository"Reemplaza $REGION por el nombre de la región que planeas usar.
Configura Docker para que use tus credenciales de la CLI de
gcloudcuando accedas a Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.devPara desactivar Artifact Analysis, ejecuta el siguiente comando:
gcloud services disable containerscanning.googleapis.com
Configura tu repositorio de GitHub
En la práctica, conservas el Dockerfile de tus imágenes personalizadas en un repositorio de Git. El proceso automatizado accede a ese repositorio durante el proceso de compilación para extraer las configuraciones y el Dockerfile pertinentes.
Bifurca el repositorio de muestra
Para bifurcar un repositorio de muestra que proporciona definiciones de contenedores, sigue estos pasos:
- Haz clic en este vínculo para
crear una bifurcación nueva.
del repositorio
software-delivery-workshop. - Si se te solicita, accede a GitHub.
- Selecciona tu nombre de usuario de GitHub como propietario. El nombre del repositorio aparece como
software-delivery-workshop. - Haz clic en Crear bifurcación y espera unos segundos para que se complete el proceso.
Conecta Cloud Build a GitHub
A continuación, conecta ese repositorio a Cloud Build con la capacidad de conexión integrada de GitHub. Haz clic en el vínculo al repositorio de GitHub y sigue las instrucciones que describen cómo completar el proceso. No es necesario que crees el activador en el último paso del asistente, y puedes omitir los últimos pasos porque puedes hacerlo más adelante desde la línea de comandos.
Si usas una solución de repositorio de Git diferente, también puedes seguir las instrucciones para conectar Cloud Build a GitLab o Bitbucket.
Crea un activador de compilación de Cloud Build
El repositorio de muestra contiene una definición de contenedor y una configuración de Cloud Build que se usa para compilar la imagen de contenedor. En este paso, crearás un
activador de compilación de Cloud Build que ejecuta las instrucciones del
cloudbuild.yaml archivo que puedes encontrar en la
labs/cloudbuild-scheduled-jobs/code-oss-java
labs/cloudbuild-scheduled-jobs/code-oss-java.
gcloud builds triggers create manual \
--name=custom-image-trigger \
--repo=$GITHUB_USER/software-delivery-workshop \
--repo-type=GITHUB \
--branch=main \
--build-config=labs/cloudbuild-scheduled-jobs/code-oss-java/cloudbuild.yaml \
--substitutions=_REGION=$REGION,_AR_REPO_NAME=custom-images,_AR_IMAGE_NAME=code-oss-java,_IMAGE_DIR=labs/cloudbuild-scheduled-jobs/code-oss-java
TRIGGER_ID=$(gcloud builds triggers list \
--filter=name="custom-image-trigger" --format="value(id)")
En este ejemplo, se configura lo siguiente:
- El comando de la CLI de
gcloudcrea un activador manual dentro de Cloud Build llamadocustom-image-trigger, como lo indica la marcanameen la segunda línea. - Las siguientes tres líneas contienen marcas relacionadas con el repositorio de GitHub de origen:
- Ruta de acceso al repositorio
- Tipo de repositorio
- Rama de Git para compilar
- La marca
build-configindica la ruta de acceso al archivo de Cloud Build en el repositorio de Git. Para que el trabajo sea dinámico, usa la marca
substitutions. Para este trabajo, el comando pasa las siguientes variables:- Región,
$_REGION - Nombre del repositorio de Artifact Registry,
$_AR_REPO_NAME - Nombre de la imagen de contenedor,
$_AR_IMAGE_NAME - Ubicación del Dockerfile para compilar,
$_IMAGE_DIR
Consulta el cloudbuild.yaml para ver cómo se usan estas variables en el proceso.
- Región,
Después de crear el activador, se recupera el nombre único del activador y se almacena en la variable de entorno
$TRIGGER_IDpara su uso posterior.
Configura Cloud Scheduler
Para asegurarte de que tus imágenes estén actualizadas con las actualizaciones y los parches más recientes, usa Cloud Scheduler para ejecutar el activador de Cloud Build en una frecuencia establecida. En este instructivo, el trabajo se ejecuta todos los días. En la práctica, establece esto en una frecuencia alineada con las necesidades de tu organización para asegurarte de que siempre se incluyan las actualizaciones más recientes.
Otorga un rol requerido a la cuenta de servicio predeterminada para invocar el activador de compilación de Cloud Build:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/cloudbuild.builds.editor"Otorga un rol requerido a la cuenta de servicio de Cloud Build para subir imágenes a Artifact Registry:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role="roles/artifactregistry.admin"Crea el trabajo de Cloud Scheduler con el siguiente comando:
gcloud scheduler jobs create http run-build \ --schedule='0 1 * * *' \ --uri=https://cloudbuild.googleapis.com/v1/projects/$PROJECT_ID/locations/global/triggers/$TRIGGER_ID:run \ --location=us-central1 \ --oauth-service-account-email=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --oauth-token-scope=https://www.googleapis.com/auth/cloud-platformEl trabajo está configurado para ejecutarse una vez al día; sin embargo, para probar la función de inmediato, ejecuta el trabajo de forma manual desde Cloud Scheduler:
- En la página de Cloud Scheduler, busca la entrada que acabas de crear llamada run-build.
- En la columna Acciones, haz clic en el menú more_vertMás opciones de esa fila.
- Haz clic en Forzar la ejecución de un trabajo para probar el sistema de forma manual.
Después de que el comando se ejecute correctamente, cambia a la página del historial de Cloud Build para revisar el progreso:
Revisa los resultados
Como habilitaste la API de Container Scanning como parte del proceso de configuración, Artifact Registry analiza automáticamente las imágenes en busca de vulnerabilidades de seguridad.
Para revisar las vulnerabilidades, haz lo siguiente:
Abre la página Repositorios de Artifact Registry:
En la lista de repositorios, haz clic en un repositorio.
Haz clic en un nombre de imagen. Los totales de vulnerabilidades para cada resumen de imagen aparecen en la columna Vulnerabilidades.

Para ver la lista de vulnerabilidades de una imagen, haz clic en el vínculo de la columna Vulnerabilidades. En la lista de vulnerabilidades, se muestra la gravedad, la disponibilidad de una corrección y el nombre del paquete que contiene la vulnerabilidad.

Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Para evitar que se apliquen cargos a tu Google Cloud cuenta por los recursos que usaste en esta página, asegúrate de borrar los recursos que ya no necesitas.
Para borrar un Google Cloud proyecto de la Google Cloud consola o de la
gcloud CLI, haz lo siguiente:
Console
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que deseas borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.
gcloud
Borra un Google Cloud proyecto:
gcloud projects delete PROJECT_ID
¿Qué sigue?
- Revisa la lista de imágenes base preconfiguradas disponibles.
- Personaliza tus imágenes de contenedor.
- Revisa los tipos de máquinas disponibles.
- Configura las prácticas recomendadas de seguridad.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.