1. Présentation
Fruit de l'évolution de Container Registry, Artifact Registry est un outil centralisé qui permet à votre organisation de gérer les images de conteneurs et les packages de langages tels que Maven et npm. Il est entièrement intégré aux outils et aux environnements d'exécution de Google Cloud, et compatible avec la gestion des dépendances basée sur le langage, à utiliser avec des outils tels que npm et Maven. Il est donc facile de l'intégrer à vos outils de CI/CD pour créer des pipelines automatisés.
Dans cet atelier, vous allez découvrir certaines fonctionnalités disponibles dans Artifact Registry.
Objectifs de l'atelier
Quels sont les objectifs de cet atelier ?
- Créer des dépôts pour les conteneurs et les packages de langage
- Gérer des images de conteneurs avec Artifact Registry
- Configurer Maven afin d'utiliser Artifact Registry pour les dépendances Java
2. Préparation
Configuration de l'environnement d'auto-formation
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pouvez le modifier à tout moment.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique. généralement, vous ne vous souciez
pas de ce que c’est. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (il est généralement identifié comme
PROJECT_ID
). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre au hasard. Vous pouvez également essayer la vôtre pour voir si elle est disponible. Il ne peut pas être modifié après cette étape et restera actif pendant toute la durée du projet. - Pour votre information, il existe une troisième valeur, le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter que des frais ne vous soient facturés au-delà de ce tutoriel, vous pouvez supprimer les ressources que vous avez créées ou l'ensemble du projet. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.
Configurer gcloud
Dans Cloud Shell, définissez l'ID et le numéro de votre projet. Enregistrez-les en tant que variables PROJECT_ID
et PROJECT_NUMBER
.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Activer les services Google
gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
artifactregistry.googleapis.com \
containerregistry.googleapis.com \
containerscanning.googleapis.com
Obtenir le code source
Le code source de cet atelier se trouve dans l'organisation GoogleCloudPlatform sur GitHub. Clonez-le à l'aide de la commande ci-dessous, puis accédez au répertoire.
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/
3. Utiliser des images de conteneurs
Créer un dépôt Docker sur Artifact Registry
Artifact Registry permet de gérer les images de conteneurs et les packages de langages. Les différents types d'artefacts nécessitent des spécifications différentes. Par exemple, les requêtes pour les dépendances Maven sont différentes des requêtes pour les dépendances de nœuds.
Pour être compatible avec les différentes spécifications d'API, Artifact Registry doit savoir quel format vous souhaitez que les réponses de l'API suivent. Pour ce faire, vous allez créer un dépôt et transmettre l'option --repository-format
indiquant le type de dépôt souhaité.
Dans Cloud Shell, exécutez la commande suivante afin de créer un dépôt pour les images Docker:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location=us-central1 --description="Docker repository for Container Dev Workshop"
Cliquez sur "Autoriser" si l'invite d'autorisation Cloud Shell s'affiche.
Accédez à la console Google Cloud Artifact Registry – Dépôts et notez le dépôt Docker que vous venez de créer, nommé container-dev-repo
. Si vous cliquez dessus, vous pouvez constater qu'il est vide pour le moment.
Configurer l'authentification Docker sur Artifact Registry
Lorsque vous vous connectez à Artifact Registry, vous devez fournir des identifiants pour accorder l'accès. Plutôt que de définir des identifiants distincts, vous pouvez configurer Docker pour qu'il utilise vos identifiants gcloud de manière fluide.
Dans Cloud Shell, exécutez la commande suivante pour configurer Docker afin qu'il se serve de la Google Cloud CLI pour authentifier les requêtes envoyées à Artifact Registry dans la région us-central1
:
gcloud auth configure-docker us-central1-docker.pkg.dev
La commande vous demande de confirmer la modification de la configuration Docker de Cloud Shell. Appuyez sur Entrée.
Explorer l'exemple d'application
Un exemple d'application est fourni dans le dépôt Git que vous avez cloné précédemment. Accédez au répertoire Java et examinez le code de l'application.
cd cloud-code-samples/java/java-hello-world
Le dossier contient un exemple d'application Java qui affiche une page Web simple: en plus de différents fichiers qui ne sont pas pertinents pour cet atelier spécifique, il contient le code source, dans le dossier src
, ainsi qu'un Dockerfile que nous utiliserons pour créer une image de conteneur en local.
Créer l'image du conteneur
Avant de pouvoir stocker des images de conteneurs dans Artifact Registry, vous devez en créer une.
Exécutez la commande suivante pour créer l'image de conteneur et lui ajouter les tags appropriés pour la transférer vers votre dépôt à l'étape suivante:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Transférer l'image du conteneur vers Artifact Registry
Exécutez la commande suivante pour transférer l'image de conteneur vers le dépôt créé précédemment:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Examiner l'image dans Artifact Registry
Accédez à la console Google Cloud – Artifact Registry – Dépôts.
Cliquez sur container-dev-repo
et vérifiez que l'image java-hello-world
s'y trouve. Cliquez sur l'image et notez l'image avec le tag tag1
. Vous pouvez voir que l'analyse des failles est en cours ou déjà terminée et que le nombre de failles détectées est visible.
Cliquez sur le nombre de failles pour afficher la liste des failles détectées dans l'image, avec le nom du bulletin CVE et sa gravité. Vous pouvez cliquer sur "AFFICHER" pour chaque faille répertoriée pour obtenir plus de détails:
4. Utiliser des packages de langages
Dans cette section, vous allez apprendre à configurer un dépôt Java Artifact Registry et à y importer des packages, afin de les exploiter dans différentes applications.
Créer un dépôt de packages Java
Dans Cloud Shell, exécutez la commande suivante pour créer un dépôt pour les artefacts Java:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Cliquez sur "Autoriser" si l'invite d'autorisation Cloud Shell s'affiche.
Accédez à la console Google Cloud Artifact Registry – Dépôts et notez le dépôt Maven que vous venez de créer, nommé container-dev-java-repo
. Si vous cliquez dessus, vous constatez qu'il est vide pour le moment.
Configurer l'authentification auprès d'Artifact Repository
Utilisez la commande suivante pour mettre à jour l'emplacement bien connu des identifiants par défaut de l'application (ADC) avec les identifiants de votre compte utilisateur afin que l'assistant d'identification Artifact Registry puisse s'authentifier à l'aide de ces identifiants lors de la connexion aux dépôts:
gcloud auth login --update-adc
Configurer Maven pour Artifact Registry
Exécutez la commande suivante à partir du dossier java-hello-world
pour ouvrir l'éditeur Cloud Shell et ajouter le dossier de l'application à son espace de travail:
cloudshell workspace .
Activez les cookies tiers en cliquant sur "Le site fonctionne-t-il désormais ?" puis sur "Autoriser les cookies".
Une fois le navigateur actualisé, ouvrez Cloud Shell et exécutez la commande ci-dessus une fois de plus pour charger le dossier de l'application.
Ouvrez le fichier pom.xml dans l'éditeur Cloud Shell, puis cliquez sur "Ouvrir l'éditeur".
Ouvrez le terminal à partir de l'éditeur Cloud Shell et exécutez la commande suivante pour imprimer la configuration du dépôt à ajouter à votre projet Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
et ajouter les paramètres renvoyés aux sections appropriées du fichier pom.xml
.
Vue de l'éditeur Cloud avec terminal intégré:
Mettre à jour la section distributionManagement
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
Mettez à jour la section Dépôts.
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Mettre à jour les extensions
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
Pour référence, voici un exemple du fichier complet. Assurez-vous de remplacer <PROJECT> par l'ID de votre projet.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>hello-world</artifactId>
<packaging>jar</packaging>
<name>Cloud Code Hello World</name>
<description>Getting started with Cloud Code</description>
<version>1.0.0</version>
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
</parent>
<properties>
<java.version>1.8</java.version>
<checkstyle.config.location>./checkstyle.xml</checkstyle.config.location>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
</build>
<!-- The Spring Cloud GCP BOM will manage spring-cloud-gcp version numbers for you. -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.2.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>
</dependencies>
</project>
Importer votre package Java dans Artifact Registry
Maintenant qu'Artifact Registry est configuré dans Maven, vous pouvez utiliser Artifact Registry pour stocker des fichiers Jars Java qui seront utilisés par d'autres projets de votre organisation.
Exécutez la commande suivante pour importer votre package Java dans Artifact Registry:
mvn deploy
Vérifier le package Java dans Artifact Registry
Accédez à Cloud Console – Artifact Registry – Dépôts. Cliquez sur container-dev-java-repo
et vérifiez que l'artefact binaire hello-world
s'y trouve:
5. Félicitations !
Félicitations, vous avez terminé cet atelier de programmation.
Points abordés
- Création de dépôts pour les conteneurs et les packages de langage
- Images de conteneurs gérées avec Artifact Registry
- Configurer Maven pour utiliser Artifact Registry pour les dépendances Java
Nettoyage
Exécutez la commande suivante pour supprimer le projet
gcloud projects delete $PROJECT_ID