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 die sprachbasierte Abhängigkeitsverwaltung 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. Er ist ein String, der von Google APIs nicht verwendet wird. Sie können ihn jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann also nicht mehr geändert werden, nachdem sie festgelegt wurde. Die Cloud Console generiert automatisch einen eindeutigen String. 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 eine eigene ID eingeben und prüfen, ob sie verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Es gibt noch einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
- 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 nicht viel kosten, wenn überhaupt. Wenn Sie Ressourcen herunterfahren möchten, damit Ihnen nach dieser Anleitung keine Kosten in Rechnung gestellt werden, können Sie die erstellten Ressourcen oder das gesamte Projekt löschen. Neue Google Cloud-Nutzer können das kostenlose Testprogramm im Wert von 300$ nutzen.
gcloud einrichten
Legen Sie in der 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 ihn 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 Git-Repository, das Sie in einem früheren Schritt geklont haben, 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 Sie 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 Sie es im nächsten Schritt in Ihr Repository übertragen können:
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 in der Google Cloud Console „Artifact Registry“ > „Repositories“ auf.. Klicken Sie auf container-dev-repo, um zu prüfen, ob das Image java-hello-world vorhanden ist. Klicken Sie auf das Image 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 „Website funktioniert nicht?“ und dann auf „Cookies zulassen“ klicken.
Nachdem der Browser neu geladen wurde, öffnen Sie die Cloud Shell und führen Sie den obigen Befehl noch einmal aus, um den Anwendungsordner zu laden.


Öffnen Sie die Datei „pom.xml“ im Cloud Shell-Editor. Klicken Sie dazu auf „Editor öffnen“.

Ö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:

Aktualisieren Sie den Abschnitt 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>
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>
Aktualisieren Sie die extensions.
<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

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