Cloud Workstations vous permet de créer et d'utiliser des images personnalisées pour vos stations de travail. Une fois qu'une image personnalisée est utilisée, il est utile d'automatiser sa recréation afin d'intégrer les correctifs et les mises à jour disponibles dans les images de base.
Dans ce tutoriel, vous allez apprendre à créer un pipeline automatisé pour vous assurer d'inclure les mises à jour et les correctifs de sécurité dans vos images de stations de travail personnalisées.
Objectifs
En suivant ce tutoriel, vous allez créer un pipeline automatisé pour votre image de base en procédant comme suit :
- Créez un dépôt Artifact Registry pour stocker et analyser votre image personnalisée.
- Configurez GitHub avec Google Cloud pour stocker les configurations de votre image.
- Créez un déclencheur Cloud Build pour automatiser la création et le déploiement d'images personnalisées dans Artifact Registry.
- Configurez Cloud Scheduler pour lancer des compilations à intervalles réguliers.
- Examinez les résultats des processus automatisés.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud:
Obtenez une estimation des coûts en fonction de votre utilisation prévue,
utilisez le simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Connectez-vous à votre Google Cloud compte. Si vous êtes un nouvel utilisateur de Google Cloud, créez un compte pour évaluer les performances de nos produits dans des scénarios réels. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la
gcloudCLI avec votre identité fédérée. -
Pour initialiser CLI, exécutez la commande suivante :
gcloudgcloud 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la
gcloudCLI avec votre identité fédérée. -
Pour initialiser CLI, exécutez la commande suivante :
gcloudgcloud init
Préparer l'environnement
Avant de continuer, assurez-vous de définir les variables d'environnement suivantes.
Définissez l'ID du projet cloud que vous prévoyez d'utiliser :
PROJECT_ID=$PROJECT_IDDéfinissez le nom d'utilisateur GitHub où vous prévoyez de stocker votre dépôt :
GITHUB_USER=$GITHUB_IDDéfinissez les variables
PROJECT_NUMBERetREGIONà utiliser tout au long du processus :PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGIONDans l'exemple précédent, remplacez $REGION par le nom de la région que vous prévoyez d'utiliser, par exemple
us-central1.Pour en savoir plus sur les régions disponibles, consultez la section Emplacements Cloud Workstations.
Créer un dépôt Artifact Registry
Dans ce tutoriel, vous allez utiliser Artifact Registry pour stocker et analyser vos images.
Créez un dépôt à l'aide de la commande suivante :
gcloud artifacts repositories create custom-images \ --repository-format=docker \ --location=$REGION \ --description="Docker repository"Remplacez $REGION par le nom de la région que vous prévoyez d'utiliser.
Configurez Docker pour qu'il utilise vos identifiants
gcloudCLI lorsque vous accédez à Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.devPour désactiver Artifact Analysis, exécutez la commande suivante :
gcloud services disable containerscanning.googleapis.com
Configurer votre dépôt GitHub
En pratique, vous conservez le fichier Dockerfile de vos images personnalisées dans un dépôt Git. Le processus automatisé accède à ce dépôt pendant le processus de compilation pour extraire les configurations et le fichier Dockerfile pertinents.
Dupliquer l'exemple de dépôt
Pour dupliquer un exemple de dépôt qui fournit des définitions de conteneurs, procédez comme suit :
- Cliquez sur ce lien pour
créer une duplication.
du dépôt
software-delivery-workshop. - Si vous y êtes invité, connectez-vous à GitHub.
- Sélectionnez votre nom d'utilisateur GitHub comme propriétaire. Le nom du dépôt s'affiche sous la forme
software-delivery-workshop. - Cliquez sur Create fork (Créer une duplication) et patientez quelques secondes jusqu'à la fin du processus.
Connecter Cloud Build à GitHub
Ensuite, connectez ce dépôt à Cloud Build à l'aide de la fonctionnalité de connexion GitHub intégrée. Cliquez sur le lien vers le dépôt GitHub et suivez les instructions pour terminer le processus. Vous n'avez pas besoin de créer le déclencheur à la dernière étape de l'assistant. Vous pouvez ignorer les dernières étapes, car vous pourrez le faire ultérieurement à partir de la ligne de commande.
Si vous utilisez une autre solution de dépôt Git, vous pouvez également suivre les instructions pour connecter Cloud Build à GitLab ou Bitbucket.
Créer un déclencheur Cloud Build
L'exemple de dépôt contient une définition de conteneur et une configuration Cloud Build utilisées pour créer l'image de conteneur. Dans cette étape, vous allez créer un
déclencheur Cloud Build qui exécute les instructions du
cloudbuild.yaml fichier que vous trouverez dans le
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)")
Cet exemple configure les éléments suivants :
- La commande
gcloudCLI crée un déclencheur manuel dans Cloud Build nommécustom-image-triggercomme indiqué par l'indicateurnamesur la deuxième ligne. - Les trois lignes suivantes contiennent des indicateurs liés au dépôt GitHub source :
- Chemin d'accès au dépôt
- Type de dépôt
- Branche Git à compiler
- L'indicateur
build-configindique le chemin d'accès au fichier Cloud Build dans le dépôt Git. Pour rendre la tâche dynamique, utilisez l'indicateur
substitutions. Pour cette tâche, la commande transmet les variables suivantes :- Région,
$_REGION - Nom du dépôt Artifact Registry,
$_AR_REPO_NAME - Nom de l'image de conteneur,
$_AR_IMAGE_NAME - Emplacement du fichier Dockerfile à compiler,
$_IMAGE_DIR
Affichez le cloudbuild.yaml pour voir comment ces variables sont utilisées dans le processus.
- Région,
Une fois le déclencheur créé, son nom unique est récupéré et stocké dans la variable d'environnement
$TRIGGER_IDpour une utilisation ultérieure.
Configurer Cloud Scheduler
Pour vous assurer que vos images sont à jour avec les dernières mises à jour et les derniers correctifs, utilisez Cloud Scheduler pour exécuter le déclencheur Cloud Build à une fréquence définie. Pour ce tutoriel, la tâche s'exécute tous les jours. En pratique, définissez une fréquence adaptée aux besoins de votre organisation pour vous assurer que les dernières mises à jour sont toujours incluses.
Attribuez un rôle requis au compte de service par défaut pour appeler le déclencheur Cloud Build :
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/cloudbuild.builds.editor"Attribuez un rôle requis au compte de service Cloud Build pour importer des images dans Artifact Registry :
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role="roles/artifactregistry.admin"Créez la tâche Cloud Scheduler à l'aide de la commande suivante :
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-platformLa tâche est configurée pour s'exécuter une fois par jour. Toutefois, pour tester la fonctionnalité immédiatement, exécutez la tâche manuellement à partir de Cloud Scheduler :
- Sur la page Cloud Scheduler, recherchez l'entrée que vous venez de créer et qui s'appelle run-build.
- Dans la colonne Actions, cliquez sur le menu more_vertPlus d'options pour cette ligne.
- Cliquez sur Force a job run (Forcer l'exécution d'une tâche) pour tester le système manuellement.
Une fois la commande exécutée, passez à la page d'historique Cloud Build pour examiner la progression :
Étudier les résultats
Comme vous avez activé l'API Container Scanning dans le cadre du processus de configuration, Artifact Registry analyse automatiquement les images pour détecter les failles de sécurité.
Pour examiner les failles :
Ouvrez la page "Dépôts Artifact Registry" :
Dans la liste des dépôts, cliquez sur un dépôt.
Cliquez sur un nom d'image. Le nombre total de failles pour chaque condensé d'image s'affiche dans la colonne Vulnerabilities (Failles).

Pour afficher la liste des failles d'une image, cliquez sur le lien dans la colonne Vulnerabilities (Failles). Les informations sur la gravité, la disponibilité d'un correctif et le nom du package contenant la faille sont affichées dans la liste des failles.

Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre Google Cloud compte, n'oubliez pas de supprimer les ressources dont vous n'avez plus besoin.
Pour supprimer un Google Cloud projet à partir de la Google Cloud console ou de la
gcloud CLI :
Console
- Dans la Google Cloud console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez Arrêter pour supprimer le projet.
gcloud
Supprimer un Google Cloud projet :
gcloud projects delete PROJECT_ID
Étape suivante
- Consultez la liste des images de base préconfigurées disponibles.
- Personnalisez vos images de conteneurs.
- Consultez les types de machines disponibles.
- Mettez en place des bonnes pratiques de sécurité.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.