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. Es ist vollständig in die Tools und Laufzeiten von Google Cloud eingebunden und unterstützt die sprachbasierte Abhängigkeitsverwaltung zur 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 werden Sie durch einige Funktionen von Artifact Registry geführt.
Lerninhalte
Was sind die Lernziele dieses Labs?
- Repositories für Container und Sprachpakete erstellen
- Container-Images mit Artifact Registry verwalten
- Maven für die Verwendung von Artifact Registry für Java-Abhängigkeiten konfigurieren
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 Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.
- Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die üblicherweise als
PROJECT_ID
gekennzeichnet ist. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID erstellen. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte möglichst wenig kosten. Wenn Sie Ressourcen herunterfahren möchten, um über diese Anleitung hinaus keine Kosten zu verursachen, können Sie die von Ihnen erstellten Ressourcen oder das gesamte Projekt löschen. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.
gcloud einrichten
Legen Sie in Cloud Shell eine Projekt-ID und Projektnummer fest. Speichern Sie sie als Variablen des Typs PROJECT_ID
und PROJECT_NUMBER
.
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 Google Cloud Platform-Organisation auf GitHub. Klonen Sie es 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
Docker-Repository in Artifact Registry erstellen
Artifact Registry unterstützt die Verwaltung von Container-Images und Sprachpaketen. Verschiedene Artefakttypen erfordern unterschiedliche Spezifikationen. Beispielsweise unterscheiden sich die Anfragen für Maven-Abhängigkeiten von Anfragen für Knotenabhängigkeiten.
Zur Unterstützung der unterschiedlichen API-Spezifikationen muss Artifact Registry wissen, welches Format die API-Antworten haben sollen. Dazu erstellen Sie ein Repository und übergeben das Flag --repository-format
, 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"
Klicken Sie auf „Autorisieren“, wenn die Eingabeaufforderung für die Cloud Shell-Autorisierung angezeigt wird.
Rufen Sie die Google Cloud Console unter Artifact Registry – Repositories auf. Dort sehen Sie Ihr neu erstelltes Docker-Repository mit dem Namen container-dev-repo
. Wenn Sie darauf klicken, ist es leer.
Docker-Authentifizierung für Artifact Registry konfigurieren
Beim Herstellen einer Verbindung zu Artifact Registry sind Anmeldedaten erforderlich, um Zugriff zu gewähren. Anstatt separate Anmeldedaten einzurichten, kann Docker für die nahtlose Verwendung Ihrer gcloud-Anmeldedaten konfiguriert werden.
Führen Sie in Cloud Shell den folgenden Befehl aus, um Docker für die Verwendung der Google Cloud CLI zum Authentifizieren von Anfragen an Artifact Registry in der Region us-central1
zu konfigurieren:
gcloud auth configure-docker us-central1-docker.pkg.dev
Der Befehl fordert Sie zur Bestätigung des Änderns der Cloud Shell-Docker-Konfiguration auf. Drücken Sie die Eingabetaste.
Beispielanwendung ansehen
Im Git-Repository, das Sie in einem vorherigen Schritt geklont haben, wird eine Beispielanwendung bereitgestellt. Wechseln Sie in das Java-Verzeichnis und überprüfen Sie den Anwendungscode.
cd cloud-code-samples/java/java-hello-world
Der Ordner enthält eine Java-Beispielanwendung, die eine einfache Webseite rendert: Neben verschiedenen Dateien, die für dieses Lab nicht relevant sind, enthält er im Ordner src
den Quellcode und ein Dockerfile, mit dem wir lokal ein Container-Image erstellen.
Container-Image erstellen
Bevor Sie Container-Images in Artifact Registry speichern können, müssen Sie eines erstellen.
Führen Sie den folgenden Befehl aus, um das Container-Image zu erstellen und ordnungsgemäß zu taggen, damit es im nächsten Schritt an Ihr Repository übertragen wird:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Container-Image per Push an Artifact Registry übertragen
Führen Sie den folgenden Befehl aus, um das Container-Image in das zuvor erstellte Repository zu übertragen:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Image in Artifact Registry prüfen
Öffnen Sie die Google Cloud Console – Artifact Registry – Repositories..
Klicken Sie auf container-dev-repo
und prüfen Sie, ob das Image java-hello-world
vorhanden ist. Klicken Sie auf das Bild und sehen Sie sich das Bild mit dem Tag tag1
an. Sie können sehen, dass das Scannen auf Sicherheitslücken läuft oder bereits abgeschlossen ist und die Anzahl der erkannten Sicherheitslücken angezeigt wird.
Klicken Sie auf die Anzahl der Sicherheitslücken, um die Liste der im Image gefundenen Sicherheitslücken mit dem Namen des CVE-Bulletins und dem Schweregrad aufzurufen. Sie können für jede aufgeführte Sicherheitslücke auf ANSEHEN klicken, um weitere Details zu erhalten:
4. Mit Sprachpaketen arbeiten
In diesem Abschnitt erfahren Sie, wie Sie ein Java-Repository für Artifact Registry einrichten und Pakete hochladen, um sie in verschiedenen Anwendungen zu nutzen.
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"
Klicken Sie auf „Autorisieren“, wenn die Eingabeaufforderung für die Cloud Shell-Autorisierung angezeigt wird.
Rufen Sie die Google Cloud Console unter Artifact Registry – Repositories auf. Dort sehen Sie Ihr neu erstelltes Maven-Repository mit dem Namen container-dev-java-repo
. Wenn Sie darauf klicken, sehen Sie, dass es im Moment leer ist.
Authentifizierung für das Artifact Repository einrichten
Verwenden Sie den folgenden Befehl, um den bekannten Speicherort für Standardanmeldedaten für Anwendungen (Application Standard Credentials, ADC) mit den Anmeldedaten Ihres Nutzerkontos zu aktualisieren, damit sich Artifact Registry beim Credential Helper beim Herstellen einer Verbindung zu Repositories damit authentifizieren kann:
gcloud auth login --update-adc
Maven für Artifact Registry konfigurieren
Führen Sie den folgenden Befehl im Ordner java-hello-world
aus, um den Cloud Shell-Editor zu öffnen und den Anwendungsordner zu seinem Arbeitsbereich hinzuzufügen:
cloudshell workspace .
Aktivieren Sie Drittanbieter-Cookies, indem Sie auf „Website funktioniert jetzt?“ klicken. und dann auf „Cookies zulassen“.
Nachdem der Browser neu geladen wurde, öffnen Sie 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 und klicken Sie 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 Ihrem Java-Projekt hinzugefügt werden soll:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
und fügen Sie die zurückgegebenen Einstellungen den entsprechenden Abschnitten in der Datei pom.xml
hinzu.
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>
Hier ist ein Beispiel der vollständigen Datei zu deiner Referenz. <PROJECT> muss ersetzt werden 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>
Java-Paket in Artifact Registry hochladen
Wenn Artifact Registry in Maven konfiguriert ist, können Sie jetzt mit Artifact Registry Java Jars zur Verwendung durch andere Projekte in Ihrer Organisation speichern.
Führen Sie den folgenden Befehl aus, um das Java-Paket in Artifact Registry hochzuladen:
mvn deploy
Java-Paket in Artifact Registry prüfen
Rufen Sie Cloud Console – Artifact Registry – Repositories auf. Klicken Sie auf container-dev-java-repo
und prüfen Sie, ob sich das Binärartefakt hello-world
dort befindet:
5. Glückwunsch!
Glückwunsch, du hast das Codelab abgeschlossen.
Behandelte Themen
- Repositories für Container und Sprachpakete erstellt
- Verwaltete Container-Images mit Artifact Registry
- Maven für die Verwendung von Artifact Registry für Java-Abhängigkeiten konfiguriert
Bereinigen
Führen Sie den folgenden Befehl aus, um das Projekt zu löschen
gcloud projects delete $PROJECT_ID