Mit Cloud Workstations können Sie benutzerdefinierte Images für Ihre Workstations erstellen und verwenden. Nachdem ein benutzerdefiniertes Image verwendet wurde, empfiehlt es sich, die Neuerstellung des benutzerdefinierten Images zu automatisieren, um Korrekturen und Updates abzurufen, die in den Basis-Images verfügbar sind.
In dieser Anleitung erfahren Sie, wie Sie eine automatisierte Pipeline erstellen, damit Sie Sicherheitsupdates und Patches in die Images Ihrer benutzerdefinierten Workstation aufnehmen können.
Lernziele
Wenn Sie diese Anleitung befolgen, erstellen Sie mit den folgenden Schritten eine automatisierte Pipeline für Ihr Basis-Image:
- Erstellen Sie ein Artifact Registry-Repository, um Ihr benutzerdefiniertes Image zu speichern und zu scannen.
- GitHub mit Google Cloud zum Speichern Ihrer Image-Konfigurationen konfigurieren.
- Cloud Build-Trigger erstellen, um das Erstellen und Bereitstellen benutzerdefinierter Images in Artifact Registry zu automatisieren
- Konfigurieren Sie Cloud Scheduler, um regelmäßig Builds zu initiieren.
- Überprüfen Sie die Ergebnisse der automatisierten Prozesse.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweise
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Artifact Registry, Container Scanning API, Cloud Build und Cloud Scheduler APIs aktivieren.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Artifact Registry, Container Scanning API, Cloud Build und Cloud Scheduler APIs aktivieren.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
Umgebung vorbereiten
Bevor Sie fortfahren, stellen Sie sicher, dass Sie die folgenden Umgebungsvariablen festgelegt haben.
Legen Sie die Projekt-ID für das Cloud-Projekt fest, das Sie verwenden möchten:
PROJECT_ID=$PROJECT_ID
Legen Sie den GitHub-Nutzernamen fest, in dem Sie Ihr Repository speichern möchten:
GITHUB_USER=$GITHUB_ID
Legen Sie die Variablen
PROJECT_NUMBER
undREGION
fest, die während des Vorgangs verwendet werden sollen:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGION
Ersetzen Sie im vorherigen Beispiel $REGION durch den Namen der Region, die Sie verwenden möchten, z. B.
us-central1
.Weitere Informationen zu verfügbaren Regionen finden Sie unter Cloud Workstations-Standorte.
Artifact Registry-Repository erstellen
In dieser Anleitung verwenden Sie Artifact Registry, um Ihre Images zu speichern und zu scannen.
Erstellen Sie mit dem folgenden Befehl ein Repository:
gcloud artifacts repositories create custom-images \ --repository-format=docker \ --location=$REGION \ --description="Docker repository"
Ersetzen Sie $REGION durch den Namen der Region, die Sie verwenden möchten.
Konfigurieren Sie Docker so, dass beim Zugriff auf Artifact Registry die Anmeldedaten der
gcloud
-Befehlszeile verwendet werden.gcloud auth configure-docker $REGION-docker.pkg.dev
Führen Sie den folgenden Befehl aus, um die Artefaktanalyse zu deaktivieren:
gcloud services disable containerscanning.googleapis.com
GitHub-Repository konfigurieren
In der Praxis speichern Sie das Dockerfile für Ihre benutzerdefinierten Images in einem Git-Repository. Der automatisierte Prozess greift während des Build-Prozesses auf dieses Repository zu, um die relevanten Konfigurationen und das Dockerfile abzurufen.
Beispiel-Repository verzweigen
So erstellen Sie einen Fork eines Beispiel-Repositorys, das Containerdefinitionen enthält:
- Klicken Sie auf diesen Link, um eine neue Verzweigung des Repositorys
software-delivery-workshop
zu erstellen. - Wenn Sie dazu aufgefordert werden, melden Sie sich bei GitHub an.
- Wählen Sie Ihren GitHub-Nutzernamen als Eigentümer aus. Der Repository-Name wird als
software-delivery-workshop
angezeigt. - Klicken Sie auf Create fork (Fork erstellen) und warten Sie ein paar Sekunden, bis der Vorgang abgeschlossen ist.
Cloud Build mit GitHub verbinden
Als Nächstes verbinden Sie dieses Repository über die integrierte GitHub-Verbindungsfunktion mit Cloud Build. Klicken Sie auf den Link zum GitHub-Repository und folgen Sie der Anleitung zum Abschließen des Vorgangs. Sie müssen den Trigger nicht im letzten Schritt des Assistenten erstellen. Sie können die letzten Schritte überspringen, da Sie dies später über die Befehlszeile tun können.
Wenn Sie eine andere Git-Repository-Lösung verwenden, können Sie auch der Anleitung zum Verbinden von Cloud Build mit GitLab oder Bitbucket folgen.
Cloud Build-Trigger erstellen
Das Beispiel-Repository enthält eine Containerdefinition und eine Cloud Build-Konfiguration, die zum Erstellen des Container-Images verwendet werden. In diesem Schritt erstellen Sie einen Cloud Build-Trigger, der die Anleitung in der Datei cloudbuild.yaml
ausführt, die sich im Ordner labs/cloudbuild-scheduled-jobs/code-oss-java befindet.
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)")
In diesem Beispiel wird Folgendes konfiguriert:
- Mit dem Befehl
gcloud
in der Befehlszeile wird in Cloud Build ein manueller Trigger mit dem Namencustom-image-trigger
erstellt, wie durch das Flagname
in der zweiten Zeile angegeben. - Die nächsten drei Zeilen enthalten Flags, die sich auf das Quell-GitHub-Repository beziehen:
- Pfad zum Repository
- Art des Repositorys
- Git-Zweig zum Erstellen
- Das Flag
build-config
gibt den Pfad zur Cloud Build-Datei im Git-Repository an. Verwenden Sie das Flag
substitutions
, um den Job dynamisch zu machen. Für diesen Job übergibt der Befehl die folgenden Variablen:- Region,
$_REGION
- Name des Artifact Registry-Repositorys,
$_AR_REPO_NAME
- Container-Image-Name,
$_AR_IMAGE_NAME
- Speicherort des Dockerfile, das erstellt werden soll:
$_IMAGE_DIR
In der Datei cloudbuild.yaml sehen Sie, wie diese Variablen in dem Prozess verwendet werden.
- Region,
Nachdem der Trigger erstellt wurde, wird sein eindeutiger Name abgerufen und zur späteren Verwendung in der Umgebungsvariablen
$TRIGGER_ID
gespeichert.
Cloud Scheduler konfigurieren
Damit Ihre Images immer die neuesten Updates und Patches haben, führen Sie mit Cloud Scheduler den Cloud Build-Trigger mit einer festgelegten Häufigkeit aus. In dieser Anleitung wird der Job jeden Tag ausgeführt. In der Praxis sollten Sie dafür eine Häufigkeit festlegen, die den Anforderungen Ihrer Organisation entspricht, damit immer die neuesten Updates enthalten sind.
Weisen Sie dem Standarddienstkonto eine erforderliche Rolle zu, um den Cloud Build-Trigger aufzurufen:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/cloudbuild.builds.editor"
Weisen Sie dem Cloud Build-Dienstkonto eine erforderliche Rolle zu, um Images in Artifact Registry hochzuladen:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role="roles/artifactregistry.admin"
Erstellen Sie den Cloud Scheduler-Job mit dem folgenden Befehl:
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-platform
Der Job ist so eingestellt, dass er jeden Tag einmal ausgeführt wird. Wenn Sie die Funktion jedoch sofort testen möchten, führen Sie den Job manuell in Cloud Scheduler aus:
- Suchen Sie auf der Cloud Scheduler-Seite den gerade erstellten Eintrag run-build.
- Klicken Sie in der Spalte „Actions“ (Aktionen) auf das Optionsmenü more_vertMore für diese Zeile.
- Klicken Sie auf Jobausführung erzwingen, um das System manuell zu testen.
Wechseln Sie nach erfolgreicher Ausführung des Befehls zur Seite mit dem Cloud Build-Verlauf, um den Fortschritt zu überprüfen:
Ergebnisse überprüfen
Da Sie die Container Scanning API im Rahmen des Einrichtungsprozesses aktiviert haben, scannt Artifact Registry die Images automatisch auf Sicherheitslücken.
So prüfen Sie die Sicherheitslücken:
Öffnen Sie die Seite „Artifact Registry Repositories“:
Klicken Sie in der Liste der Repositories auf ein Repository.
Klicken Sie auf einen Image-Namen. Die Gesamtzahlen der Sicherheitslücken für jeden Image-Digest werden in der Spalte Vulnerabilities (Sicherheitslücken) angezeigt.
Wenn Sie die Liste der Sicherheitslücken für ein Image aufrufen möchten, klicken Sie auf den Link in der Spalte Vulnerabilities (Sicherheitslücken). Die Liste der Sicherheitslücken enthält den Schweregrad, die Verfügbarkeit einer entsprechenden Lösung und den Namen des Pakets, das die Sicherheitslücke enthält.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Denken Sie daran, nicht mehr benötigte Ressourcen zu löschen, damit Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.
So löschen Sie ein Google Cloud-Projekt über die Google Cloud Console oder die gcloud
-Befehlszeile:
Console
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
gcloud
Google Cloud-Projekt löschen:
gcloud projects delete PROJECT_ID
Nächste Schritte
- Sehen Sie sich die Liste der verfügbaren vorkonfigurierten Basis-Images an.
- Container-Images anpassen
- Verfügbare Maschinentypen ansehen
- Best Practices für die Sicherheit einrichten
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center