In diesem Dokument wird beschrieben, wie Sie Ihre Anwendungen einschließlich Cloud Run-Dienste und Cloud Run-Jobs bereitstellen.
Mit Cloud Deploy können Sie Ihre containerbasierten Arbeitslasten für jeden Cloud Run-Dienst oder Cloud Run-Job bereitstellen. Bei der Bereitstellung in Cloud Run-Zielen für Cloud Run-Dienste werden alle Features von Cloud Deploy unterstützt. Canary-Bereitstellungen hingegen werden für Cloud Run-Jobs nicht unterstützt.
In diesem Dokument werden die drei Hauptkonfigurationen beschrieben, die Sie für die Bereitstellung in Cloud Run ausführen müssen:
- Zielkonfiguration erstellen
- Skaffold-Konfiguration erstellen
- Erstellen Sie Ihre Cloud Run-Dienstdefinitionen oder Jobdefinitionen.
Beschränkungen
Sie können pro Ziel nur einen Cloud Run-Dienst oder -Job bereitstellen.
Sie können kein Canary-Deployment zusammen mit einem Cloud Run-Job ausführen.
Cloud Run-Dienste können jedoch ein Canary-Deployment verwenden.
Hinweise
Achten Sie darauf, dass Sie die gcloud CLI ab Version
401.0.0
verwenden.
Zielkonfiguration erstellen
Das Ziel kann in der YAML-Datei für die Bereitstellungspipeline oder in einer separaten Datei konfiguriert werden. Außerdem können Sie mehrere Ziele in derselben Datei konfigurieren.
Erstellen Sie in der Zieldefinition eine run
-Stanza, um den Standort anzugeben, an dem der Cloud Run-Dienst erstellt wird.
Die Syntax zum Angeben des Cloud Run-Dienstes oder -Jobs in der Zieldefinition lautet so:
run:
location: projects/[project_name]/locations/[region_name]
Diese Ressourcen-ID verwendet die folgenden Elemente:
[
project_name
] ist der Name des Google Cloud-Projekts, in dem Ihr Cloud Run-Dienst oder -Job erstellt wird.Dieser Schritt wird für jedes Ziel ausgeführt. Wir empfehlen für jeden Cloud Run-Dienst oder -Job ein anderes Projekt. Wenn Sie mehr als einen Dienst oder Job im selben Projekt haben möchten, müssen Sie Skaffold-Profile in der Konfigurationsdatei
skaffold.yaml
verwenden.[
region_name
] ist die Region, in der der Dienst oder Job erstellt wird. Der Dienst oder Job kann sich in jeder Region befinden, die von Cloud Run unterstützt wird.
Das folgende Beispiel zeigt eine Zielkonfiguration, in der der zu erstellende Cloud Run-Dienst oder -Job definiert wird:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development service
run:
location: projects/my-app/locations/us-central1
Sie können dieses Ziel in einer Cloud Deploy-Bereitstellungspipeline-Definition oder separat definieren. In beiden Fällen müssen Sie das Ziel registrieren, bevor Sie den Release zum Bereitstellen des Cloud Run-Dienstes oder -Jobs erstellen.
Skaffold-Konfiguration erstellen
Hier sehen Sie ein Beispiel für eine skaffold.yaml
-Datei für eine Cloud Run-Bereitstellung:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: cloud-run-application
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
In dieser skaffold.yaml
-Datei...
manifests.rawYaml
liefert die Namen der Cloud Run-Dienstdefinitionen.In diesem Beispiel ist
service.yaml
die Datei, die einen Cloud Run-Dienst definiert, der von Skaffold bereitgestellt wird. Dieser Dateiname kann beliebig sein, ist jedoch standardmäßigservice.yaml
für einen Dienst undjob.yaml
für einen Job.Die Stanza
deploy
gibt an, wie das Manifest bereitgestellt werden soll, insbesondere das Projekt und den Standort.deploy
ist ein Pflichtfeld.Wir empfehlen, das Feld
{}
leer zu lassen. Cloud Deploy füllt diese beim Rendering anhand des Projekts und des Standorts aus der Zieldefinition aus.Für die lokale Entwicklung können Sie jedoch hier Werte angeben. Cloud Deploy verwendet jedoch immer das Projekt und den Standort aus der Zieldefinition, unabhängig davon, ob hier Werte angegeben sind.
Cloud Run-Dienstdefinitionen erstellen
Zum Erstellen einer Cloud Run-Dienstdefinition können Sie diese entweder manuell erstellen oder eine aus einem vorhandenen Dienst kopieren. Beide Methoden werden in diesem Abschnitt beschrieben.
Option 1: Neuen Cloud Run-service.yaml
erstellen
In der Datei service.yaml wird Ihr Cloud Run-Dienst definiert. Wenn Sie einen Release erstellen, verwendet Skaffold diese Definition, um Ihren Dienst bereitzustellen.
Hier ein vereinfachtes Beispiel:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: [SERVICE_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Wobei:
[SERVICE_NAME]
ist ein Name für diesen Cloud Run-Dienst.[IMAGE_PATH]
verweist auf das Container-Image oder die Images, die Sie mit diesem Dienst bereitstellen.
Option 2: service.yaml
mit der Google Cloud Console aus einem vorhandenen Dienst kopieren
Sie können einen Dienst mit der Google Cloud Console erstellen oder einen vorhandenen Dienst verwenden und Ihre service.yaml
von dort kopieren.
So rufen Sie die service.yaml
mit der Google Cloud CLI ab:
gcloud run services describe [service_name] --format=export
So rufen Sie die service.yaml
aus der Google Cloud Console ab:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run-Dienste“ auf.
Wählen Sie den vorhandenen Dienst aus, dessen Definition Sie verwenden möchten.
Sie können auch eine neue erstellen und dann auswählen. Wenn Sie den Dienst auswählen, wird die Seite „Servicedetails“ angezeigt:
Wählen Sie den Tab YAML aus.
Klicken Sie auf Edit (Bearbeiten) und kopieren Sie dann den Inhalt der YAML in eine neue Datei mit dem Namen
service.yaml
in Ihrem Dateisystem, damit Skaffold ihn beim Erstellen eines Release verwenden kann.
Cloud Run-Jobdefinitionen erstellen
Sie können eine Cloud Run-Jobdefinition entweder manuell erstellen oder aus einem vorhandenen Job kopieren. Beide Methoden werden in diesem Abschnitt beschrieben.
Jobs werden nach der Bereitstellung von Cloud Deploy nicht unbedingt ausgeführt. Dies unterscheidet sich von Diensten, die Anwendungen nach ihrer Bereitstellung ausführen. Wie ein Job aufgerufen wird, hängt vom Job selbst ab.
Option 1: Neuen Cloud Run-job.yaml
erstellen
In der Datei job.yaml wird der Cloud Run-Job definiert. Wenn Sie einen Release erstellen, verwendet Skaffold diese Definition, um den Job bereitzustellen.
Hier ein vereinfachtes Beispiel:
apiVersion: run.googleapis.com/v1
kind: Job
metadata:
name: [JOB_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Wobei:
[JOB_NAME]
ist ein Name für diesen Cloud Run-Job.[IMAGE_PATH]
verweist auf das Container-Image, das Sie für diesen Job bereitstellen.
Option 2: job.yaml
mit der Google Cloud Console aus einem vorhandenen Job kopieren
Sie können einen Job mit der Google Cloud Console erstellen oder einen vorhandenen Job verwenden und Ihren job.yaml
von dort kopieren.
So rufen Sie die job.yaml
mit der Google Cloud CLI ab:
gcloud run jobs describe [job_name] --format=export
So rufen Sie die job.yaml
aus der Google Cloud Console ab:
Rufen Sie in der Google Cloud Console die Cloud Run-Seite „Jobs“ auf.
Wählen Sie den vorhandenen Job aus, dessen Definition Sie verwenden möchten.
Sie können auch eine neue erstellen und dann auswählen. Wenn Sie den Job auswählen, wird die Seite "Job Details" (Jobdetails) angezeigt:
Wählen Sie den Tab YAML aus.
Klicken Sie auf Edit (Bearbeiten) und kopieren Sie dann den Inhalt der YAML in eine neue Datei mit dem Namen
job.yaml
in Ihrem Dateisystem, damit Skaffold ihn beim Erstellen eines Release verwenden kann.
Zusammenfassung
Nachdem Sie nun Ihre Cloud Run-Dienst- oder -Jobdefinition, Ihre skaffold.yaml
-Konfiguration und Ihre Cloud Deploy-Zieldefinition haben und Ihr Ziel als Cloud Deploy-Ressource registriert haben, können Sie jetzt Ihre Bereitstellungspipeline aufrufen, um einen Release zu erstellen und die Abfolge der in der Pipeline definierten Ziele durchlaufen.
In der Kurzanleitung Anwendung mit Cloud Deploy in Cloud Run bereitstellen wird all dies in Aktion gezeigt.
Verhalten von Diensten über mehrere Überarbeitungen hinweg
Wenn Sie einen Dienst noch einmal bereitstellen, basiert die neue Überarbeitung auf dem neu bereitgestellten service.yaml
. An der vorherigen Version wird nichts beibehalten, es sei denn, sie ist in der neu bereitgestellten YAML-Datei identisch. Wenn beispielsweise Konfigurationseinstellungen oder Labels in der vorherigen Version nicht in der neuen YAML-Datei enthalten sind, sind diese Einstellungen oder Labels in der neuen Version nicht vorhanden.
Cloud Run-Jobs auslösen
Nachdem Sie einen Job bereitgestellt haben, können Sie ihn wie in der Cloud Run-Dokumentation beschrieben auslösen.
Cloud Run-Dienste und -Jobs in mehreren Projekten bereitstellen
Wenn Sie Dienste oder Jobs bereitstellen müssen, die sich in verschiedenen Projekten befinden, benötigt Ihr Dienstkonto für die Ausführung die Berechtigung für den Zugriff auf die Projekte, in denen diese Dienste oder Jobs definiert sind.
Weitere Informationen finden Sie unter Dienstkonto für die Cloud Deploy-Ausführung und Rollen und Berechtigungen für die Identitäts- und Zugriffsverwaltung.
Nächste Schritte
Informationen zu Ausführungsumgebungen für Cloud Deploy
Weitere Informationen zur Skaffold-Unterstützung für Cloud Run