1. Übersicht
Als Weiterentwicklung von Container Registry bildet Artifact Registry die zentrale Schnittstelle, über die Ihr Unternehmen Container-Images und Sprachpakete (wie Maven und npm) verwalten kann. Das Produkt ist vollständig in die Tools und Laufzeiten von Google Cloud eingebunden und unterstützt das sprachbasierte Abhängigkeitsmanagement für die Verwendung mit Tools wie npm und Maven. So lässt er sich einfacher in Ihre CI/CD-Tools zur Einrichtung automatisierter Pipelines einbinden.
In diesem Lab lernen Sie einige der Funktionen von Artifact Registry kennen.
Lerninhalte
Was sind die Lernziele dieses Labs?
- Repositories für Container und Sprachpakete erstellen
- Container-Images mit Artifact Registry verwalten
- Maven konfigurieren, um Artifact Registry für Java-Abhängigkeiten zu verwenden
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können ihn jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (sie wird in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen versuchen und sehen, ob es verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit Ihnen nach Abschluss dieser Anleitung keine Kosten mehr in Rechnung gestellt werden, können Sie die von Ihnen erstellten Ressourcen oder das gesamte Projekt löschen. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.
gcloud einrichten
Legen Sie in Cloud Shell eine Projekt-ID und Projektnummer fest. Speichern Sie diese als die Variablen PROJECT_ID und PROJECT_NUMBER ab.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Google-Dienste aktivieren
gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
artifactregistry.googleapis.com \
containerregistry.googleapis.com \
containerscanning.googleapis.com
Quellcode abrufen
Der Quellcode für dieses Lab befindet sich in der GoogleCloudPlatform-Org auf GitHub. Klonen Sie das Repository mit dem folgenden Befehl und wechseln Sie dann in das Verzeichnis.
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/
3. Mit Container-Images arbeiten
Ein Docker-Repository in Artifact Registry erstellen.
Artifact Registry unterstützt die Verwaltung von Container-Images und Sprachpaketen. Die verschiedenen Artefakttypen erfordern unterschiedliche Spezifikationen. Es unterscheiden sich beispielsweise die Anfragen nach Maven-Abhängigkeiten von Anfragen nach Node-Abhängigkeiten.
Um die verschiedenen API-Spezifikationen zu unterstützen, muss Artifact Registry wissen, welches Format für die API-Antworten angewendet werden soll. Dazu erstellen Sie ein Repository und fügen das Flag --repository-format ein, das den gewünschten Repository-Typ angibt.
Führen Sie in Cloud Shell den folgenden Befehl aus, um ein Repository für Docker-Images zu erstellen:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location=us-central1 --description="Docker repository for Container Dev Workshop"
Wenn die Aufforderung zur Cloud Shell-Autorisierung angezeigt wird, klicken Sie auf „Autorisieren“.
Rufen Sie in der Google Cloud Console Artifact Registry – Repositories auf. Dort sehen Sie das neu erstellte Docker-Repository mit dem Namen container-dev-repo. Wenn Sie darauf klicken, sehen Sie, dass es noch leer ist.
Docker-Authentifizierung für Artifact Registry konfigurieren
Die Verbindung zu Artifact Registry erfordert Anmeldedaten, die den Zugriff ermöglichen. Anstatt separate Anmeldedaten einzurichten, können Sie Docker so konfigurieren, dass Ihre gcloud-Anmeldedaten nahtlos verwendet werden.
Führen Sie in Cloud Shell den folgenden Befehl aus. Dadurch wird Docker so konfiguriert, dass die Google Cloud CLI zum Authentifizieren von Anfragen an Artifact Registry in der Region us-central1 verwendet wird:
gcloud auth configure-docker us-central1-docker.pkg.dev
Sie werden aufgefordert, die Änderung der Docker-Konfiguration für Cloud Shell zu bestätigen. Drücken Sie die Eingabetaste.
Beispielanwendung ansehen
Im geklonten Git-Repository finden Sie eine Beispielanwendung. Wechseln Sie in das Java-Verzeichnis und sehen Sie sich den Anwendungscode an.
cd cloud-code-samples/java/java-hello-world
Der Ordner enthält als Beispiel eine Java-Anwendung, die eine einfache Webseite rendert. Neben verschiedenen Dateien, die für dieses Lab nicht relevant sind, ist im Ordner src der Quellcode enthalten, außerdem ein Dockerfile, mit dem wir ein Container-Image lokal erstellen.
Das Container-Image erstellen
Damit Sie Container-Images in Artifact Registry speichern können, müssen Sie zuerst ein Repository erstellen.
Führen Sie den folgenden Befehl aus, um das Container-Image zu erstellen und es richtig zu taggen, damit es im nächsten Schritt per Push in Ihr Repository übertragen werden kann:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Das Container-Image per Push an Artifact Registry übertragen
Führen Sie den folgenden Befehl aus, um das Container-Image per Push an das zuvor erstellte Repository zu übertragen:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Das Image in Artifact Registry prüfen
Rufen Sie die Google Cloud Console – Artifact Registry – Repositories auf.. Klicken Sie auf container-dev-repo und prüfen Sie, ob das java-hello-world-Image vorhanden ist. Klicken Sie auf das Bild und sehen Sie nach, ob es mit tag1 gekennzeichnet ist. Sie sehen, dass der Scan auf Sicherheitslücken ausgeführt wird oder bereits abgeschlossen ist, und die Anzahl der erkannten Sicherheitslücken.

Klicken Sie auf die Anzahl der Sicherheitslücken, um die Liste der im Image erkannten Sicherheitslücken zusammen mit dem Namen des CVE-Bulletins und dem Schweregrad aufzurufen. Klicken Sie bei jeder aufgeführten Sicherheitslücke auf ANSEHEN, um weitere Details zu erhalten:

4. Mit Sprachpaketen arbeiten
In diesem Abschnitt erfahren Sie, wie Sie ein Artifact Registry-Java-Repository einrichten und Pakete hochladen, die Sie in verschiedenen Anwendungen verwenden.
Package Repository für Java erstellen
Führen Sie in Cloud Shell den folgenden Befehl aus, um ein Repository für Java-Artefakte zu erstellen:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Wenn die Aufforderung zur Cloud Shell-Autorisierung angezeigt wird, klicken Sie auf „Autorisieren“.
Rufen Sie in der Google Cloud Console Artifact Registry > Repositories auf. Dort sehen Sie das neu erstellte Maven-Repository mit dem Namen container-dev-java-repo. Wenn Sie darauf klicken, sehen Sie, dass es noch leer ist.
Authentifizierung für Artifact Repository einrichten
Verwenden Sie den folgenden Befehl, um den bekannten Speicherort für Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) mit den Anmeldedaten Ihres Nutzerkontos zu aktualisieren. Auf diese Weise kann sich der Credential Helper für Artifact Registry damit authentifizieren, wenn er eine Verbindung zu Repositories herstellt:
gcloud auth login --update-adc
Maven für Artifact Registry konfigurieren
Führen Sie im Ordner java-hello-world den folgenden Befehl aus, um den Cloud Shell-Editor zu öffnen und den Anwendungsordner diesem Arbeitsbereich hinzuzufügen:
cloudshell workspace .
Aktivieren Sie Drittanbieter-Cookies, indem Sie auf „Funktioniert die Website jetzt?“ und dann auf „Cookies zulassen“ klicken.
Nachdem der Browser neu geladen wurde, öffnen Sie Cloud Shell und führen Sie den oben genannten Befehl noch einmal aus, um den Anwendungsordner zu laden.


Öffnen Sie die Datei „pom.xml“ im Cloud Shell-Editor, indem Sie auf „Editor öffnen“ klicken.

Öffnen Sie das Terminal im Cloud Shell-Editor und führen Sie den folgenden Befehl aus, um die Repository-Konfiguration auszugeben, die dem Java-Projekt hinzugefügt werden soll:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
Fügen Sie die zurückgegebenen Einstellungen in die entsprechenden Abschnitte der Datei pom.xml ein.
Cloud Editor-Ansicht mit integriertem Terminal:

Abschnitt distributionManagement aktualisieren
<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>
Aktualisieren Sie den Abschnitt repositories.
<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>
Erweiterungen aktualisieren
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
Ein Beispiel für die vollständige Datei. Ersetzen Sie <PROJECT> durch Ihre Projekt-ID.
<?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>
Das Java-Paket in Artifact Registry hochladen
Nachdem Sie Artifact Registry in Maven konfiguriert haben, können Sie es verwenden, um von anderen Projekten in Ihrer Organisation verwendete Java-JARs zu speichern.
Führen Sie den folgenden Befehl aus, um Ihr Java-Paket in Artifact Registry hochzuladen:
mvn deploy
Das Java-Paket in Artifact Registry prüfen
Rufen Sie die Cloud Console – Artifact Registry – Repositories auf. Klicken Sie auf container-dev-java-repo und prüfen Sie, ob das binäre Artefakt hello-world vorhanden ist:

5. Glückwunsch!
Herzlichen Glückwunsch! Sie haben das Codelab abgeschlossen.
Behandelte Themen
- Repositories für Container und Sprachpakete erstellt
- Verwaltete Container-Images mit Artifact Registry
- Maven so konfiguriert, dass Artifact Registry für Java-Abhängigkeiten verwendet wird
Bereinigen
Führen Sie den folgenden Befehl aus, um das Projekt zu löschen:
gcloud projects delete $PROJECT_ID