Mit Cloud Workstations können Sie benutzerdefinierte Images für Ihre Workstations erstellen und verwenden. Nachdem ein benutzerdefiniertes Image verwendet wird, ist es sinnvoll, den Neuaufbau des benutzerdefinierten Images zu automatisieren, um Korrekturen und Updates aus den Basis-Images zu übernehmen.
In dieser Anleitung erfahren Sie, wie Sie eine automatisierte Pipeline erstellen, um sicherzustellen, dass Sie Sicherheitsupdates und ‑patches in Ihre benutzerdefinierten Workstation-Images einbeziehen.
Ziele
In dieser Anleitung 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.
- Konfigurieren Sie GitHub mit Google Cloud , um Ihre Image-Konfigurationen zu speichern.
- Erstellen Sie einen Cloud Build-Trigger, um die Erstellung und Bereitstellung benutzerdefinierter Images in Artifact Registry zu automatisieren.
- Konfigurieren Sie Cloud Scheduler, um regelmäßig Builds zu starten.
- Prü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.
Verwenden Sie den Preisrechner.
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.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command:gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command:gcloud init
Umgebung vorbereiten
Bevor Sie fortfahren, müssen Sie die folgenden Umgebungsvariablen festlegen.
Legen Sie die Projekt-ID für das Cloud-Projekt fest, das Sie verwenden möchten:
PROJECT_ID=$PROJECT_IDLegen Sie den GitHub-Nutzernamen fest, unter dem Sie Ihr Repository speichern möchten:
GITHUB_USER=$GITHUB_IDLegen Sie die Variablen
PROJECT_NUMBERundREGIONfest, die während des Prozesses verwendet werden sollen:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGIONErsetzen 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 zum Speichern und Scannen Ihrer Images.
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 Ihre
gcloudCLI-Anmeldedaten für den Zugriff auf Artifact Registry verwendet werden.gcloud auth configure-docker $REGION-docker.pkg.devFühren Sie den folgenden Befehl aus, um 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 verzweigen Sie ein Beispiel-Repository, das Containerdefinitionen enthält:
- Klicken Sie auf diesen Link, um
einen neuen Fork.
des
software-delivery-workshopRepositorys zu erstellen. - Wenn Sie dazu aufgefordert werden, melden Sie sich bei GitHub an.
- Wählen Sie Ihren GitHub-Nutzernamen als Inhaber aus. Der Repository-Name wird als
software-delivery-workshopangezeigt. - Klicken Sie auf Fork erstellen und warten Sie einige Sekunden, bis der Vorgang abgeschlossen ist.
Cloud Build mit GitHub verbinden
Verbinden Sie als Nächstes dieses Repository mit Cloud Build. Verwenden Sie dazu die integrierte GitHub-Verbindungsfunktion. Klicken Sie auf den Link zum GitHub-Repository und folgen Sie der Anleitung, um den Vorgang abzuschließen. 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 folgen, um Cloud Build mit GitLab oder Bitbucket zu verbinden.
Cloud Build-Trigger erstellen
Das Beispiel-Repository enthält eine Containerdefinition und eine Cloud Build-Konfiguration, mit der das Container-Image erstellt wird. In diesem Schritt erstellen Sie einen
Cloud Build-Trigger, der die Anweisungen in der
cloudbuild.yaml Datei ausführt, die Sie im
labs/cloudbuild-scheduled-jobs/code-oss-java
Ordner finden.
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 dieser Beispielkonfiguration wird Folgendes konfiguriert:
- Der
gcloudCLI-Befehl erstellt einen manuellen Trigger in Cloud Build mit dem Namencustom-image-trigger, wie durch dasnameFlag in der zweiten Zeile angegeben. - Die nächsten drei Zeilen enthalten Flags für das GitHub-Quell-Repository:
- Pfad zum Repository
- Typ des Repositorys
- Git-Zweig, der erstellt werden soll
- Das Flag
build-configgibt den Pfad zur Cloud Build-Datei im Git-Repository an. Verwenden Sie das Flag
substitutions, um den Job dynamisch zu gestalten. Für diesen Job übergibt der Befehl die folgenden Variablen:- Region,
$_REGION - Artifact Registry-Repository-Name,
$_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 im Prozess verwendet werden.
- Region,
Nachdem der Trigger erstellt wurde, wird der eindeutige Name des Triggers abgerufen und in der Umgebungsvariablen
$TRIGGER_IDfür die spätere Verwendung gespeichert.
Cloud Scheduler konfigurieren
Damit Ihre Images immer auf dem neuesten Stand sind, verwenden Sie Cloud Scheduler, um den Cloud Build-Trigger in regelmäßigen Abständen auszuführen. In dieser Anleitung wird der Job täglich ausgeführt. In der Praxis sollten Sie dies auf eine Häufigkeit festlegen, die den Anforderungen Ihres Unternehmens 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-platformDer Job wird so festgelegt, dass er einmal täglich ausgeführt wird. Wenn Sie die Funktion jedoch sofort testen möchten, führen Sie den Job manuell über Cloud Scheduler aus:
- Suchen Sie auf der Seite „Cloud Scheduler“ nach dem Eintrag, den Sie gerade erstellt haben, mit dem Namen run-build.
- Klicken Sie in der Spalte „Aktionen“ auf das Menü mit den drei Punkten more_vertWeitere Optionen für diese Zeile.
- Klicken Sie auf Jobausführung erzwingen , um das System manuell zu testen.
Nachdem der Befehl erfolgreich ausgeführt wurde, wechseln Sie zur Verlaufsseite „Cloud Build“, um den Fortschritt zu prü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. In der Spalte Sicherheitslücken werden die Gesamtzahl der Sicherheitslücken für jeden Image-Digest angezeigt.

Wenn Sie die Liste der Sicherheitslücken für ein Image aufrufen möchten, klicken Sie auf den Link in der Spalte Sicherheitslücken. In der Liste der Sicherheitslücken werden der Schweregrad, die Verfügbarkeit einer Korrektur und der Name des Pakets angezeigt, 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.
Damit Ihrem Google Cloud Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden, müssen Sie Ressourcen löschen, die Sie nicht mehr benötigen.
So löschen Sie ein Google Cloud Projekt aus der Google Cloud Console oder über die
gcloud CLI:
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 auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Beenden , um das Projekt zu löschen.
gcloud
So löschen Sie ein Google Cloud Projekt:
gcloud projects delete PROJECT_ID
Nächste Schritte
- Liste der verfügbaren vorkonfigurierten Basis-Images ansehen
- Container-Images anpassen.
- Verfügbare Maschinentypen ansehen.
- Bewährte Sicherheitsmethoden einrichten.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen Weitere Informationen zu Cloud Architecture Center