Cloud Run-Dienst oder -Job bereitstellen

In diesem Dokument wird beschrieben, wie Sie Ihre Anwendungen bereitstellen, einschließlich Cloud Run-Dienste und Cloud Run-Jobs.

Mit Cloud Deploy können Sie Ihre containerbasierten Arbeitslasten in jedem Cloud Run-Dienst oder Job bereitstellen. Alle Cloud Deploy-Features werden unterstützt, wenn Sie Cloud Run-Ziele für Cloud Run-Dienste bereitstellen. Canary-Bereitstellungen werden jedoch 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:

Beschränkungen

  • Sie können nur einen Cloud Run-Dienst oder -Job pro Ziel bereitstellen.

  • Sie können kein Canary-Deployment mit einem Cloud Run-Job ausführen.

    Cloud Run-Dienste können jedoch ein Canary-Deployment verwenden.

Hinweise

Zielkonfiguration erstellen

Das Ziel kann in der YAML-Datei Ihrer Bereitstellungspipeline konfiguriert oder in einer separaten Datei gespeichert 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 Ihrer 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.

    Diese Schritte müssen für jedes Ziel durchgeführt werden. Wir empfehlen, für jeden Cloud Run-Dienst oder -Job ein anderes Projekt zu verwenden. Wenn Sie mehr als einen Dienst oder Job im selben Projekt benötigen, 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.

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 Definition der Cloud Deploy-Bereitstellungspipeline oder separat definieren. In beiden Fällen müssen Sie das Ziel registrieren, bevor Sie den Release erstellen, um Ihren Cloud Run-Dienst oder -Job bereitzustellen.

Skaffold-Konfiguration erstellen

Im Folgenden sehen Sie eine Beispieldatei skaffold.yaml 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 gibt die Namen der Cloud Run-Dienstdefinitionen an.

    In diesem Beispiel ist service.yaml die Datei, die einen Cloud Run-Dienst definiert, den Skaffold bereitstellt. Dieser Dateiname kann beliebig sein, aber Konventionsgemäß lautet der Dateiname service.yaml für einen Dienst und job.yaml für einen Job.

  • Die Stanza deploy gibt an, wie das Manifest bereitgestellt werden soll, insbesondere das Projekt und den Standort. deploy ist erforderlich.

    Wir empfehlen, {} leer zu lassen. Cloud Deploy füllt dies während des Renderings anhand des Projekts und des Standorts 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 Standort 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: Neuen Cloud Run-service.yaml erstellen

In der service.yaml-Datei wird der 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 der Name dieses Cloud Run-Dienstes.

  • [IMAGE_PATH] verweist auf das Container-Image oder die Container-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 verwenden und von dort Ihren service.yaml kopieren.

So rufen Sie den service.yaml über die Google Cloud CLI ab:

gcloud run services describe [service_name] --format=export

So rufen Sie die service.yaml aus der Google Cloud Console ab:

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run-Dienste“ auf.

  2. Wählen Sie den vorhandenen Dienst aus, dessen Definition Sie verwenden möchten.

Du kannst auch ein neues erstellen und es dann auswählen. Wenn Sie den Dienst auswählen, wird die Seite „Dienstdetails“ angezeigt:

Seite mit Dienstdetails in der Google Cloud Console mit dem Tab „YAML“

  1. Wählen Sie den Tab YAML aus.

  2. Klicken Sie auf Bearbeiten und kopieren Sie dann den Inhalt der YAML-Datei in eine neue Datei mit dem Namen service.yaml in Ihrem Dateisystem, damit Skaffold sie beim Erstellen eines Release verwenden kann.

Cloud Run-Jobdefinitionen erstellen

Zum Bereitstellen einer Cloud Run-Jobdefinition können Sie eine Jobdefinition manuell erstellen oder aus einem vorhandenen Job kopieren. Beide werden in diesem Abschnitt beschrieben.

Beachten Sie, dass Jobs nicht unbedingt nach der Bereitstellung durch Cloud Deploy ausgeführt 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: Neuen Cloud Run-job.yaml erstellen

In der Datei job.yaml ist 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 der Name dieses Cloud Run-Jobs.

  • [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 verwenden und von dort die job.yaml kopieren.

So rufen Sie den job.yaml über die Google Cloud CLI ab:

gcloud run jobs describe [job_name] --format=export

So rufen Sie die job.yaml aus der Google Cloud Console ab:

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run-Jobs“ auf.

  2. Wählen Sie den vorhandenen Job aus, dessen Definition Sie verwenden möchten.

Du kannst auch ein neues erstellen und es dann auswählen. Wenn Sie den Job auswählen, wird die Seite „Job Details“ (Jobdetails) angezeigt:

Seite mit Jobdetails in der Google Cloud Console mit dem Tab „YAML“

  1. Wählen Sie den Tab YAML aus.

  2. Klicken Sie auf Bearbeiten und kopieren Sie dann den Inhalt der YAML-Datei in eine neue Datei mit dem Namen job.yaml in Ihrem Dateisystem, damit Skaffold sie beim Erstellen eines Release verwenden kann.

Zusammenfassung

Da Sie nun den Cloud Run-Dienst oder die Jobdefinition, die skaffold.yaml-Konfiguration und die Cloud Deploy-Zieldefinition haben und Ihr Ziel als Cloud Deploy-Ressource registriert haben, können Sie jetzt die Bereitstellungspipeline aufrufen, um einen Release zu erstellen und die Entwicklung der in der Pipeline definierten Ziele voranzutreiben.

Im Schnellstart Anwendung mit Cloud Deploy in Cloud Run bereitstellen wird all dies in Aktion gezeigt.

Verhalten von Diensten über mehrere Versionen hinweg

Wenn Sie einen Dienst noch einmal bereitstellen, basiert die neue Version auf dem neu bereitgestellten service.yaml. Die vorherige Version wird nicht beibehalten, es sei denn, sie ist in der neu bereitgestellten YAML-Datei identisch. Wenn es beispielsweise in der vorherigen Überarbeitung Konfigurationseinstellungen oder Labels gab, die nicht in der neuen YAML-Version enthalten sind, fehlen diese Einstellungen oder Labels in der neuen Version.

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 Ausführungsdienstkonto die Berechtigung für den Zugriff auf die Projekte, in denen diese Dienste oder Jobs definiert sind.

Weitere Informationen finden Sie unter Cloud Deploy-Ausführungsdienstkonto und Rollen und Berechtigungen für Identity and Access Management.

Nächste Schritte