Cloud Workstations te permite crear y usar imágenes personalizadas para tus estaciones de trabajo. Una vez que se usa una imagen personalizada, es útil automatizar la recompilación de la imagen personalizada para incorporar las correcciones y actualizaciones disponibles en las imágenes base.
En este tutorial, aprenderá a crear una canalización automatizada para asegurarse de que incluye actualizaciones y parches de seguridad en sus imágenes de estación de trabajo personalizadas.
Objetivos
En este tutorial, crearás un flujo de procesamiento automatizado para tu imagen base siguiendo 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 tus imágenes.
- Crea un activador de Cloud Build para automatizar la creación y el despliegue de imágenes personalizadas en Artifact Registry.
- Configura Cloud Scheduler para que inicie compilaciones de forma periódica.
- Revisa los resultados de los procesos automatizados.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Cuando termines las tareas que se describen en este documento, puedes evitar que se te siga facturando eliminando los recursos que has creado. Para obtener más información, consulta la sección Limpiar.
Antes de empezar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de
gcloud
con tu identidad federada. -
Para inicializar la CLI de
gcloud
, ejecuta el siguiente comando:gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de
gcloud
con tu identidad federada. -
Para inicializar la CLI de
gcloud
, ejecuta el siguiente comando:gcloud init
Define el ID del proyecto de Google Cloud que quieras usar:
PROJECT_ID=$PROJECT_ID
Define el nombre de usuario de GitHub en el que quieres almacenar el repositorio:
GITHUB_USER=$GITHUB_ID
Define las variables
PROJECT_NUMBER
yREGION
que se van a usar durante el proceso:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGION
En el ejemplo anterior, sustituye $REGION por el nombre de la región que quieras usar (por ejemplo,
us-central1
).Para obtener más información sobre las regiones disponibles, consulta las ubicaciones de Cloud Workstations.
Crea un repositorio con el siguiente comando:
gcloud artifacts repositories create custom-images \ --repository-format=docker \ --location=$REGION \ --description="Docker repository"
Sustituye $REGION por el nombre de la región que quieras usar.
Configura Docker para que use tus credenciales de la CLI de
gcloud
al acceder a Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.dev
Para desactivar Análisis de artefactos, ejecuta el siguiente comando:
gcloud services disable containerscanning.googleapis.com
- Haz clic en este enlace para crear una bifurcación del repositorio
software-delivery-workshop
. - Si se te solicita, inicia sesión en GitHub.
- Selecciona tu nombre de usuario de GitHub como propietario. El nombre del repositorio es
software-delivery-workshop
. - Haz clic en Crear bifurcación y espera unos segundos a que se complete el proceso.
- El comando
gcloud
de la CLI crea un activador manual en Cloud Build llamadocustom-image-trigger
, tal como indica la marcaname
en la segunda línea. - Las tres líneas siguientes contienen marcas relacionadas con el repositorio de GitHub de origen:
- Ruta al repositorio
- Tipo de repositorio
- Rama de Git que se va a compilar
- La marca
build-config
indica la ruta al archivo de Cloud Build en el repositorio de Git. Para que el trabajo sea dinámico, usa la marca
substitutions
. En este trabajo, el comando pasa las siguientes variables:- Región,
$_REGION
- Nombre del repositorio de Artifact Registry,
$_AR_REPO_NAME
- Nombre de la imagen del contenedor,
$_AR_IMAGE_NAME
- Ubicación del Dockerfile que se va a compilar.
$_IMAGE_DIR
Consulta el archivo cloudbuild.yaml para ver cómo se usan estas variables en el proceso.
- Región,
Una vez creado el activador, se recupera su nombre único y se almacena en la variable de entorno
$TRIGGER_ID
para usarlo más adelante.Asigna un rol obligatorio a la cuenta de servicio predeterminada para invocar el activador de Cloud Build:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/cloudbuild.builds.editor"
Concede un rol obligatorio 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 la tarea 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-platform
La tarea está configurada para ejecutarse una vez al día. Sin embargo, para probar la función inmediatamente, ejecuta la tarea manualmente desde Cloud Scheduler:
- En la página Cloud Scheduler, busca la entrada que acabas de crear, llamada run-build.
- En la columna Acciones, haz clic en el menú de opciones more_vertMás de esa fila.
- Haz clic en Forzar la ejecución de un trabajo para probar el sistema manualmente.
Una vez que se haya ejecutado correctamente el comando, ve a la página del historial de Cloud Build para revisar el progreso:
Abre la página Repositorios de Artifact Registry:
En la lista de repositorios, haz clic en uno.
Haz clic en el nombre de una imagen. Los totales de vulnerabilidades de cada digest de imagen aparecen en la columna Vulnerabilidades.
Para ver la lista de vulnerabilidades de una imagen, haga clic en el enlace de la columna Vulnerabilidades. La lista de vulnerabilidades muestra la gravedad, la disponibilidad de una corrección y el nombre del paquete que contiene la vulnerabilidad.
- 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.
- 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.
- Consulta la lista de imágenes base preconfiguradas disponibles.
- Personaliza tus imágenes de contenedor.
- Consulta los tipos de máquinas disponibles.
- Configurar prácticas recomendadas de seguridad.
- Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.
Preparar el entorno
Antes de continuar, asegúrate de definir las siguientes variables de entorno.
Crear un repositorio de Artifact Registry
En este tutorial, usarás Artifact Registry para almacenar y analizar tus imágenes.
Configurar el repositorio de GitHub
En la práctica, el Dockerfile de tus imágenes personalizadas se guarda 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.
Crear una bifurcación del repositorio de ejemplo
Para bifurcar un repositorio de ejemplo que proporcione definiciones de contenedores, sigue estos pasos:
Conectar Cloud Build a GitHub
A continuación, conecta ese repositorio a Cloud Build mediante la función de conexión a GitHub integrada. Haz clic en el enlace al repositorio de GitHub y sigue las instrucciones para completar el proceso. No es necesario que crees el activador en el último paso del asistente, y puedes saltarte los últimos pasos porque puedes hacerlo más adelante desde la línea de comandos.
Si usas otra solución de repositorio de Git, también puedes seguir las instrucciones para conectar Cloud Build a GitLab o Bitbucket.
Crear un activador de Cloud Build
El repositorio de ejemplo 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 Cloud Build que ejecutará las instrucciones del archivo cloudbuild.yaml
, que se encuentra en la carpeta 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:
Configurar Cloud Scheduler
Para asegurarte de que tus imágenes están actualizadas con los últimos parches y actualizaciones, usa Cloud Scheduler para ejecutar el activador de Cloud Build con una frecuencia determinada. En este tutorial, el trabajo se ejecuta todos los días. En la práctica, define una frecuencia que se ajuste a las necesidades de tu organización para asegurarte de que siempre se incluyan las últimas actualizaciones.
Revisar los resultados
Como has habilitado la API Container Scanning durante el proceso de configuración, Artifact Registry analiza automáticamente las imágenes en busca de vulnerabilidades de seguridad.
Para revisar las vulnerabilidades, sigue estos pasos:
Limpieza
Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.
Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, no olvides eliminar los recursos que ya no necesites.
Para eliminar un Google Cloud proyecto desde la Google Cloud consola o desde la
gcloud
CLI, sigue estos pasos:
Consola
gcloud