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:
Erstellen Sie eine Containeranwendung oder Anwendungen mit Funktionen zur Bereitstellung für Ihr benutzerdefiniertes Ziel, und die die Cloud Deploy- Anforderungen für benutzerdefinierten Zieltypen.
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.CustomTargetType
-Definition erstellen auf die benutzerdefinierte Aktion aus dem vorherigen Schritt verweist, und registrieren Sie sie als Cloud Deploy-Ressource.Definiere ein neues Ziel mit einer
customTarget
-Property, die identifiziert den neuen Typ des benutzerdefinierten Ziels.Auf das Ziel aus der Bereitstellungspipeline verweisen Fortschritt.
Jeder dieser Schritte wird im weiteren Verlauf dieses Dokuments ausführlich beschrieben.
Containeranwendungen erstellen
Die Funktionen zum Bereitstellen für Ihr benutzerdefiniertes Ziel sind in Container definiert
die Sie in Cloud Deploy über
Sie können in der skaffold.yaml
-Datei darauf verweisen. Wann?
enthält Ihre Bereitstellungspipeline ein Ziel
mit einem benutzerdefinierten Zieltyp,
Cloud Deploy ruft die dafür definierten Container mit benutzerdefinierten Aktionen auf
benutzerdefinierten Zieltyp in Skaffold, um Ihre eigenen Rendering- und Bereitstellungsaktionen auszuführen.
definiert.
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 einen Container für die Renderingaktion und einen für die
Ihre Bereitstellungsaktion für jeden benutzerdefinierten Zieltyp, den Sie erstellen. 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 imrenderAction
oderdeployAction
.Die
containers
-Stanza enthält Ihre Referenz sowie Befehle zum Ausführen dieser Container.Die Stanza
containers
lässt mehr als einen Container zu, aber Google empfiehlt verwenden Sie nur eine.customActions.containers.name
Ist ein beliebiger Name für den spezifischen 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 Ihre Bereitstellungspipeline erstellen
oder mit Zieldefinitionen oder in einer separaten Datei.
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 inskaffold.yaml
für die render.DEPLOY_ACTION_NAME
Der Name der benutzerdefinierten Bereitstellungsaktion. Dieser Wert ist der
customAction.name
definiert inskaffold.yaml
für die deploy.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 speichern, Cloud Storage-Bucket oder Cloud Build-Repository der 2. Generation und auf diese Konfigurationen aus der Definition des benutzerdefinierten Zieltyps verweisen.
Wenn Sie Remote-Skaffold-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:
Erstellen Sie eine Skaffold-Konfiguration mit Ihren benutzerdefinierten Aktionen.
Speichern Sie die Konfiguration in einem Git-Repository oder in einem Cloud Storage-Bucket.
Fügen Sie in der Definition des benutzerdefinierten Zieltyps
customActions.includeSkaffoldModules
Stanza.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 demmetadata.name
entsprechen. in jeder Skaffold-Konfiguration fest. Wird kein Wert angegeben, Cloud Deploy verwendet alle Konfigurationen im angegebenen Pfad.Entweder eine
googleCloudStorage
-,git
- odergoogleCloudBuildRepo
-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-Repository der 2. Generation wo die Skaffold-Konfigurationen gespeichert sind. Der Pfad hat das folgende Format:projects/{project}/locations/{location}/connections/{connection}/repositories/{repository}
Skaffold lädt alle Dateien in diesem Verzeichnis herunter und sucht dann nach dem Skaffold. basierend auf dem konfigurierten relativen Pfad an.FILENAME
ist der Name der Datei, die die Skaffold-Konfigurationen enthält. Dieses Das Attributpath:
ist optional. wenn Sie es nicht angeben, Cloud Deploy geht vonskaffold.yaml
aus. Wenn keineskaffold.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. Die gezeigte benutzerdefinierte Aktion ist Verweist auf:
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 dieses Element erstellt werden soll
. Die CustomTargetType
muss sich in derselben Region wie die Target
befinden
die darauf 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 customTarget
lautet so:
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
Dabei ist CUSTOM_TARGET_TYPE_NAME
der Wert der Eigenschaft name
, die in
Ihre Konfiguration für den benutzerdefinierten Zieltyp.
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 nun wie gewohnt einen Release erstellen:
gcloud deploy releases create [RELEASE_NAME] \
--project=[PROJECT_NAME] \
--region=[REGION] \
--delivery-pipeline=[PIPELINE_NAME]
Nach der Release-Erstellung wird Ihre benutzerdefinierte Rendering-Aktion für jedes Ziel in Ihrer Bereitstellungspipeline, einschließlich der Verarbeitung Parameter bereitstellen, die für 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.
Rufen Sie in der Google Cloud Console Cloud Deploy auf. Seite Bereitstellungspipelines, um Ihre Bereitstellungspipeline anzusehen.
Zur Seite der Lieferpipelines
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.
Klicken Sie auf den Release-Namen.
Die Seite Releasedetails wird angezeigt.
Klicken Sie auf den Tab Artefakte.
Klicken Sie unter Zielartefakte 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 anzusehen, indem Sie Release, nach Ziel oder nach Phase, mithilfe der Release Inspector.