In diesem Dokument wird beschrieben, wie Sie Ihre Anwendungen bereitstellen, einschließlich Cloud Run-Diensten und Cloud Run-Jobs.
Mit Cloud Deploy können Sie Ihre containerbasierten Arbeitslasten in jedem Cloud Run-Dienst oder Job bereitstellen. Alle Cloud Deploy-Funktionen werden unterstützt, wenn Sie für Cloud Run-Dienste auf Cloud Run-Ziele bereitstellen. Canary-Bereitstellungen werden jedoch nicht für Cloud Run-Jobs unterstützt.
In diesem Dokument werden die drei wichtigsten Konfigurationen beschrieben, die Sie vornehmen müssen, um eine Bereitstellung in Cloud Run vorzunehmen:
- Zielkonfiguration erstellen
- Skaffold-Konfiguration erstellen
- Cloud Run-Dienstdefinitionen oder Jobdefinitionen erstellen
Beschränkungen
Sie können nur einen Cloud Run-Dienst oder -Job pro Ziel bereitstellen.
Sie können keine Kanarien-Bereitstellung für einen Cloud Run-Job ausführen.
Für Cloud Run-Dienste kann jedoch eine Canary-Bereitstellung verwendet werden.
Hinweise
Sie benötigen die gcloud CLI-Version
401.0.0
oder höher.
Zielkonfiguration erstellen
Das Ziel kann in der YAML-Datei der Bereitstellungspipeline oder in einer separaten Datei konfiguriert werden. Außerdem können Sie in derselben Datei mehrere Ziele konfigurieren.
Ziele müssen im selben Projekt und in derselben Region wie die Bereitstellungspipeline definiert werden. Die Dienste oder Jobs, in denen die Ziele bereitgestellt werden, können sich jedoch in verschiedenen Projekten und Regionen befinden, solange das Dienstkonto Zugriff auf diese Projekte hat.
Erstellen Sie in der Zieldefinition einen run
-Abschnitt, um den Speicherort anzugeben, an dem der Cloud Run-Dienst erstellt werden soll.
So geben Sie den Cloud Run-Dienst oder -Job in Ihrer Zieldefinition an:
run:
location: projects/[project_name]/locations/[region_name]
Diese Ressourcenkennzeichnung verwendet die folgenden Elemente:
[
project_name
] ist der Name des Google Cloud-Projekts, in dem Ihr Cloud Run-Dienst oder ‑Job erstellt wird.Wiederholen Sie diesen Vorgang für jedes Ziel. Wir empfehlen für jeden Cloud Run-Dienst oder -Job ein eigenes Projekt. Wenn Sie mehr als einen Dienst oder Job im selben Projekt benötigen, müssen Sie in Ihrer
skaffold.yaml
-Konfigurationsdatei Skaffold-Profile verwenden.[
region_name
] ist die Region, in der der Dienst oder Job erstellt wird. Ihr Dienst oder Job kann sich in einer beliebigen von Cloud Run unterstützten Region befinden.
Im Folgenden finden Sie ein Beispiel für 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-Definition für die Bereitstellungspipeline oder separat definieren. In beiden Fällen müssen Sie das Ziel registrieren, bevor Sie den Release zum Bereitstellen Ihres Cloud Run-Dienstes oder ‑Jobs erstellen.
Skaffold-Konfiguration erstellen
Im Folgenden finden Sie eine Beispielskaffold.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
enthält 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, aber nach Konvention ist esservice.yaml
für einen Dienst undjob.yaml
für einen Job.In der
deploy
-Strophe wird angegeben, wie das Manifest bereitgestellt werden soll, insbesondere das Projekt und der Speicherort.deploy
ist erforderlich.Wir empfehlen,
{}
leer zu lassen. Cloud Deploy füllt diesen Wert beim Rendern basierend auf dem Projekt und dem Speicherort aus der Zieldefinition aus.Für die lokale Entwicklung können Sie hier jedoch Werte angeben. Cloud Deploy verwendet jedoch immer das Projekt und den Speicherort aus der Zieldefinition, unabhängig davon, ob hier Werte angegeben sind.
Cloud Run-Dienstdefinitionen erstellen
Sie können eine Cloud Run-Dienstdefinition entweder manuell erstellen oder aus einem vorhandenen Dienst kopieren. Beide werden in diesem Abschnitt beschrieben.
Option 1: Neue Cloud Run-service.yaml
erstellen
In service.yaml wird Ihr Cloud Run-Dienst definiert. Wenn Sie eine Version 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 oder die Container-Images, die Sie mit diesem Dienst bereitstellen.
Option 2: service.yaml
über die Google Cloud Console aus einem vorhandenen Dienst kopieren
Sie können einen Dienst über die Google Cloud Console erstellen oder einen vorhandenen Dienst verwenden und 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
über die 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 Gruppe erstellen und sie dann auswählen. Wenn Sie den Dienst auswählen, wird die Seite „Dienstdetails“ angezeigt:
Wählen Sie den Tab YAML aus.
Klicken Sie auf Bearbeiten und kopieren Sie den Inhalt der YAML-Datei in eine neue Datei namens
service.yaml
in Ihrem Dateisystem, damit Skaffold sie 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 werden in diesem Abschnitt beschrieben.
Jobs werden nicht unbedingt ausgeführt, wenn sie von Cloud Deploy bereitgestellt werden. Dies unterscheidet sich von Diensten, die Anwendungen nach der Bereitstellung ausführen. Wie ein Job aufgerufen wird, hängt vom Job selbst ab.
Option 1: Neue Cloud Run-job.yaml
erstellen
In der Datei job.yaml wird Ihr Cloud Run-Job definiert. Wenn Sie ein 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 über die Google Cloud Console erstellen oder einen vorhandenen verwenden und 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
über die Google Cloud Console ab:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run-Jobs“ auf.
Wählen Sie den vorhandenen Job aus, dessen Definition Sie verwenden möchten.
Sie können auch eine neue Gruppe erstellen und sie dann auswählen. Wenn Sie den Job auswählen, wird die Seite „Jobdetails“ angezeigt:
Wählen Sie den Tab YAML aus.
Klicken Sie auf Bearbeiten und kopieren Sie den Inhalt der YAML-Datei in eine neue Datei namens
job.yaml
in Ihrem Dateisystem, damit Skaffold sie beim Erstellen eines Release verwenden kann.
Zusammenfassung
Sie haben die Definition Ihres Cloud Run-Dienstes oder -Jobs, die skaffold.yaml
-Konfiguration und die Cloud Deploy-Zieldefinition erstellt und Ihr Ziel als Cloud Deploy-Ressource registriert. Jetzt können Sie die Bereitstellungspipeline aufrufen, um eine Version zu erstellen und sie durch die in der Pipeline definierten Ziele zu leiten.
In der Kurzanleitung Anwendung mit Cloud Deploy in Cloud Run bereitstellen wird dies veranschaulicht.
Verhalten von Diensten bei verschiedenen Überarbeitungen
Wenn Sie einen Dienst noch einmal bereitstellen, basiert die neue Version auf der neu bereitgestellten service.yaml
. Von der vorherigen Version wird nichts beibehalten, es sei denn, sie ist mit der neu bereitgestellten YAML-Datei identisch. Wenn die vorherige Version beispielsweise Konfigurationseinstellungen oder Labels enthält, die in der neuen YAML-Datei nicht vorhanden sind, werden diese Einstellungen oder Labels in der neuen Version nicht übernommen.
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öchten, die sich in verschiedenen Projekten befinden, benötigt Ihr Ausführungsdienstkonto die Berechtigung zum Zugriff auf die Projekte, in denen diese Dienste oder Jobs definiert sind.
Weitere Informationen finden Sie unter Ausführungsdienstkonto für Cloud Deploy und Rollen und Berechtigungen für die Identitäts- und Zugriffsverwaltung.
Nächste Schritte
Kurzanleitung: Anwendung in Cloud Run bereitstellen ausprobieren
Weitere Informationen zum Konfigurieren von Cloud Deploy-Zielen
Weitere Informationen zu Ausführungsumgebungen für Cloud Deploy
Weitere Informationen zur Unterstützung von Skaffold für Cloud Run