Benutzerdefiniertes Ziel erstellen

In diesem Dokument wird beschrieben, wie Sie einen benutzerdefinierten Cloud Deploy-Zieltyp erstellen und verwenden Sie diesen benutzerdefinierten Zieltyp als Ziel. in einem Cloud Deploy Bereitstellungspipeline.

Im Folgenden werden die allgemeinen Schritte zum Erstellen eines benutzerdefinierten Zieltyps und in Ihrer Bereitstellungspipeline verwenden:

  1. Erstellen Sie eine containerisierte Anwendung oder Anwendungen, die die Funktion zum Bereitstellen auf Ihrem benutzerdefinierten Ziel enthalten und die die Anforderungen von Cloud Deploy für benutzerdefinierte Zieltypen erfüllen.

  2. Definieren Sie eine benutzerdefinierte Aktion in skaffold.yaml, die auf diesen Container verweist und den Befehl bzw. die Befehle angibt, die darauf ausgeführt werden sollen.

  3. CustomTargetType-Definition erstellen auf die benutzerdefinierte Aktion aus dem vorherigen Schritt verweist, und registrieren Sie sie als Cloud Deploy-Ressource.

  4. Definiere ein neues Ziel mit einer customTarget-Property, die identifiziert den neuen Typ des benutzerdefinierten Ziels.

  5. Auf das Ziel aus der Bereitstellungspipeline verweisen Fortschritt.

  6. Erstellen Sie einen Release.

Die einzelnen Schritte werden im Rest dieses Dokuments ausführlich beschrieben.

Containeranwendungen erstellen

Die Funktionen, die auf Ihrem benutzerdefinierten Ziel bereitgestellt werden sollen, sind in containerisierten Anwendungen definiert. Sie stellen sie Cloud Deploy zur Verfügung, indem Sie in Ihrer skaffold.yaml-Datei darauf verweisen. Wenn Ihre Bereitstellungspipeline ein Ziel mit einem benutzerdefinierten Zieltyp enthält, ruft Cloud Deploy die für diesen benutzerdefinierten Zieltyp in Skaffold definierten benutzerdefinierten Aktionscontainer auf, um die von Ihnen definierten Rendering- und Bereitstellungsaktionen auszuführen.

Das Verhalten Ihrer Anwendungen bleibt Ihnen überlassen. Sie muss jedoch den von Cloud Deploy bereitgestellten Eingabeumgebungsvariablen die erforderlichen Ausgaben zurückgeben.

In den meisten Fällen erstellen Sie für jeden benutzerdefinierten Zieltyp einen Container für die Render- und einen für die Bereitstellungsaktion. Die Renderingaktion ist optional. Wenn Sie jedoch keine angeben, verwendet Cloud Deploy die Standard-skaffold render.

Benutzerdefinierte Aktionen in Skaffold definieren

Wenn die Container-Images für die benutzerdefinierte Aktion vorhanden sind, verweisen Sie darauf von Ihrem skaffold.yaml-Konfigurationsdatei.

Sie konfigurieren jede benutzerdefinierte Aktion für ein benutzerdefiniertes Ziel in einer customActions stanza. Für jeden benutzerdefinierten Zieltyp erstellen Sie in Skaffold eine benutzerdefinierte Aktion für und eines zum Bereitstellen. Die CustomTargetType Definition, welche benutzerdefinierte Aktion zum Rendern und welche verwendet wird für die Bereitstellung.

Im Folgenden finden Sie die Konfiguration für benutzerdefinierte Rendering- und Bereitstellungsaktionen in skaffold.yaml:

apiVersion: skaffold/v4beta7
kind: Config
customActions:
# custom render action
- name:
  containers:
  - name:
    image:
    command:
    args:
# custom deploy action
- name:
  containers:
  - name:
    image:
    command:
    args:

In dieser Skaffold-Konfiguration:

  • customActions.name

    Ist ein beliebiger Name für die benutzerdefinierte Rendering- oder Bereitstellungsaktion. Die Die CustomTargetType-Definition verweist auf diesen Namen im renderAction oder deployAction.

  • Die containers-Stanza enthält Ihre Referenz sowie Befehle zum Ausführen dieser Container.

    In der containers-Strophe ist mehr als ein Container zulässig, Google empfiehlt jedoch, nur einen zu verwenden.

  • customActions.containers.name

    Ein beliebiger Name für den Container, den Sie für diese Aktion verwenden. Als Best Practice sollte dieser Containername immer SHA-qualifiziert sein.

  • image

    Der Pfad zum Container-Image.

  • command

    Der oder die Befehle, die im Container ausgeführt werden sollen.

  • args

    Ist eine Sammlung von Argumenten für command.

Siehe Skaffold-YAML-Referenz finden Sie eine detaillierte Dokumentation zu den Konfigurationsattributen, die in customActions

Benutzerdefinierten Zieltyp definieren

Um ein benutzerdefiniertes Ziel zu definieren, erstellen Sie zunächst einen benutzerdefinierten Zieltyp mithilfe der Methode CustomTargetType-Konfiguration. Sie können die CustomTargetType in derselben Datei wie die Definition der Bereitstellungspipeline, mit Zieldefinitionen oder in einer separaten Datei erstellen.

Die CustomTargetType-Definition lautet so:

# Custom target type config (preview)
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name: [CUSTOM_TARGET_TYPE_NAME]
  annotations:
  labels:
description:
customActions:
  renderAction: [RENDER_ACTION_NAME]
  deployAction: [DEPLOY_ACTION_NAME]
  includeSkaffoldModules:

Dabei gilt:

  • CUSTOM_TARGET_TYPE_NAME

    Dies ist ein beliebiger Name, den Sie dieser benutzerdefinierten Zieltypdefinition geben. Dieser Name wird im Zieldefinition für beliebige für das der von Ihnen definierte Typ des benutzerdefinierten Ziels verwendet wird.

  • RENDER_ACTION_NAME

    Der Name der benutzerdefinierten Renderingaktion. Dieser Wert ist der customAction.name definiert in skaffold.yaml für die render.

  • DEPLOY_ACTION_NAME

    Der Name der benutzerdefinierten Bereitstellungsaktion. Dieser Wert ist der in skaffold.yaml für die Aktion deploy definierte customAction.name.

  • includeSkaffoldModules

    Ist eine optionale Stanza, die verwendet wird, wenn Sie Remote-Skffold-Konfigurationen verwenden. Die Eigenschaften in dieser Stanza werden im Abschnitt Remote-Skaffold-Konfigurationen verwenden

Remote-Skaffold-Konfigurationen verwenden

Sie können Skaffold-Konfigurationen in einem öffentlichen Git-Repository, einem Cloud Storage-Bucket oder einem Cloud Build-Repository der 2. Generation speichern und diese Konfigurationen über die Definition Ihres benutzerdefinierten Zieltyps referenzieren.

Wenn Sie Skaffold-Remote-Konfigurationen verwenden, bedeutet dies, dass die skaffold.yaml, die Sie unter für die Veröffentlichungszeit keine benutzerdefinierten Aktionen definiert sein. So können Sie für die Freigabe benutzerdefinierter Aktionen in Ihrer Organisation.

So verwenden Sie Remote-Skaffold-Konfigurationen:

  1. Erstellen Sie eine Skaffold-Konfiguration mit Ihren benutzerdefinierten Aktionen.

  2. Speichern Sie die Konfiguration in einem Git-Repository oder in einem Cloud Storage-Bucket.

  3. Fügen Sie in der Definition des benutzerdefinierten Zieltyps customActions.includeSkaffoldModules Stanza.

  4. Geben Sie unter includeSkaffoldModules Folgendes an:

    • Optional ein oder mehrere configs-Elemente:

      - configs: ["name1", "name2"]

      Der Wert von configs ist eine Liste von Strings, die dem metadata.name entsprechen. in jeder Skaffold-Konfiguration fest. Wenn Sie diese Option weglassen, werden alle Konfigurationen im angegebenen Pfad von Cloud Deploy übernommen.

    • Entweder eine googleCloudStorage-, git- oder googleCloudBuildRepo-Stanza.

      Für Cloud Storage:

      googleCloudStorage:
        source: PATH_TO_GCS_BUCKET
        path: FILENAME
      

      Für Git:

      git:
        repo: REPO_URL
        path: PATH_TO_FILE
        ref: BRANCH_NAME
      

      Für Cloud Build-Repositories (2. Generation):

       googleCloudBuildRepo:
        repository: PATH_TO_GCB_REPO
        path: PATH_TO_FILE
        ref: BRANCH_NAME
      

      Wobei:

      PATH_TO_GCS_BUCKET ist der Pfad zu einem Cloud Storage-Verzeichnis. mit der Endung /*, wo die Skaffold-Konfigurationen gespeichert sind. Skaffold-Downloads alle Dateien in diesem Verzeichnis und findet dann die entsprechende Skaffold-Datei mit die Konfigurationen basierend auf dem konfigurierten relativen Pfad.

      PATH_TO_GCB_REPO ist der Pfad zum Cloud Build 2nd Gen-Repository, in dem die Skaffold-Konfigurationen gespeichert sind. Der Pfad hat folgendes Format: projects/{project}/locations/{location}/connections/{connection}/repositories/{repository}. Skaffold lädt alle Dateien in diesem Verzeichnis herunter und sucht dann anhand des konfigurierten relativen Pfads nach der Skaffold-Datei.

      FILENAME ist der Name der Datei, die die Skaffold-Konfigurationen enthält. Dieses Das Attribut path: ist optional. wenn Sie es nicht angeben, Cloud Deploy geht von skaffold.yaml aus. Wenn keine skaffold.yaml oder wenn der von Ihnen angegebene Dateiname nicht vorhanden ist, Release-Erstellung fehlschlägt.

      REPO_URL ist die URL zum Git-Repository.

      PATH_TO_FILE ist der Pfad in diesem Repository zu der Datei, die den Skaffold-Konfigurationen.

      BRANCH_NAME ist der Name des Zweigs (z. B. main), von dem aus die die Skaffold-Konfigurationen.

Beispiel

Die folgende benutzerdefinierte YAML-Datei für den Zieltyp ist eine customActions-Stanza mit einem includeSkaffoldModules-Stanza, die auf Skaffold-Konfigurationen verweist, die in einer Cloud Storage-Bucket:

customActions:
  renderAction: my-custom-action
  deployAction: my-custom-action
  includeSkaffoldModules:
    - configs: ["myConfig"]
      googleCloudStorage:
        source: "gs://my-custom-target-bucket/my-custom/*"
        path: "skaffold.yaml

Die folgende YAML-Datei ist eine Skaffold-Konfiguration, auf die die angezeigte benutzerdefinierte Aktion verweist:

apiVersion: skaffold/v4beta7
kind: Config
metadata:
  name: myConfig
customActions:
  - name: my-custom-action
    containers:
      - name: my-custom-container
        image: us-east1-docker.pkg.dev/abcdefg/foldername/myimage@sha256:c56fcf6e0a7637ddf0df3d56a0dd23bfce03ceca06a6fc527b0e0e7430e6e9f9

Benutzerdefinierten Zieltyp registrieren

Nachdem Sie die CustomTargetType konfiguriert haben, führen Sie den Befehl gcloud deploy apply zum Registrieren Die Ressource CustomTargetType in einem Google Cloud-Projekt:

gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]

Wobei:

FILE ist der Name der Datei, in der Sie diesen benutzerdefinierten Zieltyp definiert haben.

PROJECT ist das Google Cloud-Projekt, in dem diese Ressource erstellt werden soll. CustomTargetType muss sich im selben Projekt wie die Ressource Target befinden die darauf verweist. Sie müssen das Projekt nicht angeben, wenn Sie es als Ihr Standardprojekt für die Google Cloud CLI.

REGION ist die Region (z. B. us-centra1), in der diese Ressource erstellt werden soll. Die CustomTargetType muss sich in derselben Region wie die Target-Ressource befinden, auf die sie verweist. Sie müssen die Region nicht angeben, wenn Sie und legen Sie sie als Standardregion für die gcloud CLI fest.

Mit der CustomTargetType, die jetzt als Cloud Deploy-Ressource erstellt wurde, Sie können es jetzt in einer Target-Definition verwenden, um Ihr benutzerdefiniertes Ziel zu erstellen.

Weitere Informationen zur CustomTargetType-Definition finden Sie in der Referenz zum Konfigurationsschema von Cloud Deploy

Ziel festlegen

Der einzige Unterschied zwischen einer Zieldefinition für einen unterstützten Zieltyp und eine benutzerdefinierte Zieldefinition, customTarget Stanza. Die Syntax für eine customTarget lautet:

customTarget:
  customTargetType: [CUSTOM_TARGET_TYPE_NAME]

Dabei ist CUSTOM_TARGET_TYPE_NAME der Wert des Attributs name, das in der Konfiguration des benutzerdefinierten Zieltyps definiert ist.

Ziel zur Bereitstellungspipeline hinzufügen

Sie können ein benutzerdefiniertes Ziel in einer Bereitstellungspipeline genau wie ein unterstützter Zieltyp. Das heißt, es gibt keinen Unterschied in der Bereitstellungspipeline. Verlauf zwischen Zielen eines unterstützten Zieltyps und benutzerdefinierten Zielen.

Alle Ziele in einer Bereitstellungspipeline müssen denselben Zieltyp verwenden. Beispiel: können Sie keine Bereitstellungspipeline mit einigen Zielen haben, Google Kubernetes Engine und einige benutzerdefinierte Ziele.

Wie bei den unterstützten Zieltypen können Sie auch hier in der Pipelinephase Parameter bereitstellen.

Release erstellen

Der benutzerdefinierte Zieltyp ist vollständig definiert und Sie haben ein Ziel dafür erstellt. können Sie jetzt wie gewohnt einen Release erstellen:

gcloud deploy releases create [RELEASE_NAME] \
  --project=[PROJECT_NAME] \
  --region=[REGION] \
  --delivery-pipeline=[PIPELINE_NAME]

Nach dem Erstellen des Release wird Ihre benutzerdefinierte Renderingaktion für jedes Ziel in Ihrer Bereitstellungspipeline, einschließlich der Verarbeitung Parameter bereitstellen, die für den Release, Ziele, oder die Bereitstellungspipeline. Cloud Deploy bietet die Parameter als Eingabe bereitstellen zum benutzerdefinierten Rendering-Container hinzu.

Ausgabe Ihrer benutzerdefinierten Ziele ansehen

Wenn Ihre benutzerdefinierte Aktion die Anforderungen Für benutzerdefinierte Ziele können Sie in der Google Cloud Console das gerenderte Artefakte.

Führen Sie die folgenden Schritte aus, um sich die Ausgabe der benutzerdefinierten Renderingaktion anzusehen.

  1. Rufen Sie in der Google Cloud Console Cloud Deploy auf. Seite Bereitstellungspipelines, um Ihre Bereitstellungspipeline anzusehen.

    Zur Seite der Lieferpipelines

  2. Klicken Sie auf den Namen Ihrer Bereitstellungspipeline.

    Die Pipeline-Visualisierung zeigt den Bereitstellungsstatus der Anwendung und Ihren Release ist auf dem Tab Releases unter Bereitstellungspipeline aufgeführt. Details.

  3. Klicken Sie auf den Release-Namen.

    Die Seite Releasedetails wird angezeigt.

  4. Klicken Sie auf den Tab Artefakte.

  5. Klicken Sie unter Ziel-Artefakte auf den Pfeil neben Artefakte ansehen.

    Die gerenderten Artefakte werden aufgelistet, einschließlich der gerenderten skaffold.yaml und gerenderte Manifest-Datei, die vom benutzerdefinierten Renderer generiert wurde. Und Sie können Klicken Sie neben dem jeweiligen Speicherort auf den Link Speicherort, um den Speicherort aufzurufen. Cloud Storage-Bucket, um diese Dateien anzusehen.

    Sie können auch auf den Link Artefakte ansehen klicken, um diese Dateien nach Release, nach Ziel oder nach Phase, mithilfe der Release Inspector.

Nächste Schritte