In diesem Dokument wird beschrieben, wie benutzerdefinierte Ziele in Cloud Deploy funktionieren.
Cloud Deploy bietet integrierte Unterstützung für verschiedene Laufzeitumgebungen als Ziele. Die Liste der unterstützten Zieltypen ist jedoch begrenzt. Mit benutzerdefinierten Zielen können Sie die Bereitstellung auf anderen Systemen als den unterstützten Runtimes vornehmen.
Ein benutzerdefiniertes Ziel ist ein Ziel, das eine beliebige Ausgabenumgebung darstellt, die nicht von Cloud Deploy unterstützt wird.
Auf der Seite Benutzerdefiniertes Ziel erstellen wird beschrieben, wie Sie einen benutzerdefinierten Zieltyp definieren und als Ziel in einer Bereitstellungspipeline implementieren.
Was fließt in ein benutzerdefiniertes Zielvorhaben ein?
Jedes benutzerdefinierte Zielvorhaben besteht aus den folgenden Komponenten:
Aufgaben, die definieren, wie für Ihren benutzerdefinierten Zieltyp gerendert und bereitgestellt wird
Ihre Implementierungen des benutzerdefinierten Renderns und der benutzerdefinierten Bereitstellung verwenden Werte, die von Cloud Deploy bereitgestellt werden, und müssen eine Reihe erforderlicher Ausgaben erfüllen.
Das benutzerdefinierte Rendering ist optional. Sie müssen es jedoch erstellen, es sei denn, Ihr benutzerdefiniertes Ziel funktioniert auch, wenn es mit den integrierten Cloud Deploy-Renderern gerendert wird.
Eine Definition des benutzerdefinierten Zieltyps
Die
CustomTargetTypeist eine Cloud Deploy-Ressource, die die Aufgaben identifiziert, die von Zielen dieses Typs für das Rendern von Releases und die Bereitstellung von Roll-outs verwendet werden.Eine Zieldefinition
Die Zieldefinition für ein benutzerdefiniertes Ziel ist dieselbe wie für jeden anderen Zieltyp, mit der Ausnahme, dass sie das Attribut
customTargetenthält, dessen Wert der Name desCustomTargetTypeist.
Wenn diese Komponenten vorhanden sind, können Sie das Ziel wie jedes andere Ziel verwenden, indem Sie in Ihrer Bereitstellungspipeline darauf verweisen und die Cloud Deploy-Funktionen wie Hochstufung und Genehmigungen und Rollbacks vollständig nutzen.
Beispiel
Im Schnellstart Benutzerdefinierten Zieltyp definieren und verwenden wird ein benutzerdefinierter Zieltyp erstellt, der Befehle enthält, die für ein Container-Image ausgeführt werden sollen – ein Befehl für das Rendern und einer für die Bereitstellung. Mit den Befehlen wird in diesem Fall nur Text zu den erforderlichen Ausgabedateien für das Rendern und Bereitstellen hinzugefügt.
Weitere Beispiele finden Sie unter Beispiele für benutzerdefinierte Ziele.
Erforderliche Ein- und Ausgaben
Jeder benutzerdefinierte Zieltyp, der für Cloud Deploy definiert ist, muss die Anforderungen für Ein- und Ausgabe sowohl für das Rendern als auch für die Bereitstellung erfüllen. In diesem Abschnitt wird aufgeführt, welche Ein- und Ausgaben erforderlich sind und wie sie bereitgestellt werden.
Cloud Deploy stellt die erforderlichen Eingaben für das Rendern und die Bereitstellung als Umgebungsvariablen bereit. In den folgenden Abschnitten werden diese Eingaben sowie die Ausgaben aufgeführt, die von Ihrem benutzerdefinierten Rendern und Bereitstellen zurückgegeben werden müssen.
Parameter als Umgebungsvariablen bereitstellen
Zusätzlich zu den in diesem Abschnitt aufgeführten Umgebungsvariablen kann Cloud Deploy alle von Ihnen festgelegten Bereitstellungsparameter an Ihre benutzerdefinierten Container übergeben.
Eingaben für benutzerdefinierte Renderings
Für benutzerdefinierte Renderings stellt Cloud Deploy die folgenden Eingaben als Umgebungsvariablen bereit. Bei mehrphasigen Rollouts (Canary-Bereitstellungen) stellt Cloud Deploy diese Variablen für jede Phase bereit.
CLOUD_DEPLOY_PROJECTDie Google Cloud Projektnummer des Projekts, in dem das benutzerdefinierte Zielvorhaben erstellt wird.
CLOUD_DEPLOY_PROJECT_IDDie Google Cloud Projekt-ID für das Projekt.
CLOUD_DEPLOY_LOCATIONDie Google Cloud -Region für den benutzerdefinierten Zieltyp.
CLOUD_DEPLOY_DELIVERY_PIPELINEDer Name der Cloud Deploy-Bereitstellungspipeline, die auf den benutzerdefinierten Zieltyp verweist.
CLOUD_DEPLOY_RELEASEDer Name des Release, für das der Rendering-Vorgang aufgerufen wird.
CLOUD_DEPLOY_TARGETDer Name des Cloud Deploy-Ziels, das den benutzerdefinierten Zieltyp verwendet.
CLOUD_DEPLOY_PHASEDie Rollout-Phase, der das Rendering entspricht.
CLOUD_DEPLOY_REQUEST_TYPEFür das benutzerdefinierte Rendern ist dies immer
RENDER.CLOUD_DEPLOY_FEATURESEine durch Kommas getrennte Liste der Cloud Deploy-Funktionen, die der benutzerdefinierte Container unterstützen muss. Diese Variable wird basierend auf den in Ihrer Bereitstellungspipeline konfigurierten Funktionen ausgefüllt.
Wenn Ihre Implementierung die Funktionen in dieser Liste nicht unterstützt, empfehlen wir, dass sie beim Rendern fehlschlägt.
Bei Standardbereitstellungen ist dieses Feld leer. Bei Canary-Bereitstellungen ist der Wert
CANARY. Wenn der von Cloud Deploy bereitgestellte WertCANARYist, wird das Rendern für jede Phase im Canary aufgerufen. Der Canary-Prozentsatz für jede Phase wird in der UmgebungsvariableCLOUD_DEPLOY_PERCENTAGE_DEPLOYangegeben.CLOUD_DEPLOY_PERCENTAGE_DEPLOYDer Prozentsatz der Bereitstellung, der mit diesem Rendervorgang verknüpft ist. Wenn die Umgebungsvariable
CLOUD_DEPLOY_FEATURESaufCANARYgesetzt ist, wird Ihr benutzerdefiniertes Rendern für jede Phase aufgerufen und diese Variable wird für jede Phase auf den Canary-Prozentsatz gesetzt. Bei Standard-Deployments und bei Canary-Deployments, die diestable-Phase erreicht haben, ist dies100.CLOUD_DEPLOY_STORAGE_TYPEDer Speicheranbieter. Immer
GCS.CLOUD_DEPLOY_INPUT_GCS_PATHDer Cloud Storage-Pfad für das Archiv der gerenderten Datei, das beim Erstellen des Releases geschrieben wurde.
CLOUD_DEPLOY_OUTPUT_GCS_PATHDer Cloud Storage-Pfad, in den der benutzerdefinierte Rendering-Container Artefakte hochladen soll, die für die Bereitstellung verwendet werden. Für den Render muss eine Datei mit dem Namen
results.jsonhochgeladen werden, die die Ergebnisse dieses Rendervorgangs enthält. Weitere Informationen finden Sie unter Ausgaben aus benutzerdefiniertem Rendern.
Ausgaben aus benutzerdefiniertem Rendern
Ihr benutzerdefiniertes Rendering muss die in diesem Abschnitt beschriebenen Informationen enthalten. Die Informationen müssen in der Ergebnisdatei mit dem Namen results.json enthalten sein, die sich im von Cloud Deploy bereitgestellten Cloud Storage-Bucket (CLOUD_DEPLOY_OUTPUT_GCS_PATH) befindet.
Gerenderte Konfigurationsdatei(en)
Eine
results.json-Datei mit den folgenden Informationen:Eine Angabe des Erfolgs- oder Fehlerstatus des benutzerdefinierten Renderings.
Gültige Werte sind
SUCCEEDEDundFAILED.Optional: Alle Fehlermeldungen, die vom benutzerdefinierten Rendern generiert werden.
Der Cloud Storage-Pfad für die gerenderte Konfigurationsdatei oder die gerenderten Konfigurationsdateien.
Der Pfad für alle gerenderten Konfigurationsdateien ist der vollständige URI. Sie wird teilweise mit dem Wert von
CLOUD_DEPLOY_OUTPUT_GCS_PATHgefüllt, der von Cloud Deploy bereitgestellt wird.Sie müssen die gerenderte Konfigurationsdatei angeben, auch wenn sie leer ist. Der Inhalt der Datei kann beliebig sein, solange er von Ihrer benutzerdefinierten Bereitstellung verarbeitet werden kann. Wir empfehlen, dass diese Datei für Menschen lesbar ist, damit Sie und andere Nutzer in Ihrer Organisation sie in der Versionsprüfung ansehen können.
Optional: eine Zuordnung der Metadaten, die Sie einbeziehen möchten
Diese Metadaten werden durch Ihr benutzerdefiniertes Zielvorhaben erstellt. Diese Metadaten werden in der Veröffentlichung im Feld
custom_metadatagespeichert.
Wenn Sie die Datei results.json untersuchen müssen, z. B. zur Fehlerbehebung, finden Sie den Cloud Storage-URI dafür in den Cloud Build-Logs.
Beispieldatei mit Render-Ergebnissen
Im Folgenden sehen Sie ein Beispiel für die Ausgabe einer results.json-Datei aus einem benutzerdefinierten Rendervorgang:
{
"resultStatus": "SUCCEEDED",
"manifestFile": "gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/manifest.yaml",
"failureMessage": "",
"metadata": {
"key1": "val",
"key2": "val"
}
}
Eingaben für benutzerdefinierte Bereitstellungen
Für benutzerdefinierte Bereitstellungen stellt Cloud Deploy die folgenden Eingaben als Umgebungsvariablen bereit:
CLOUD_DEPLOY_PROJECTDie Google Cloud Projektnummer des Projekts, in dem das benutzerdefinierte Zielvorhaben erstellt wird.
CLOUD_DEPLOY_PROJECT_IDDie Google Cloud Projekt-ID für das Projekt.
CLOUD_DEPLOY_LOCATIONDie Google Cloud -Region für den benutzerdefinierten Zieltyp.
CLOUD_DEPLOY_DELIVERY_PIPELINEDer Name der Cloud Deploy-Bereitstellungspipeline, die auf das Ziel verweist, das den benutzerdefinierten Zieltyp verwendet.
CLOUD_DEPLOY_RELEASEDer Name des Release, für den der Bereitstellungsvorgang aufgerufen wird.
CLOUD_DEPLOY_ROLLOUTDer Name des Cloud Deploy-Roll-outs, für das diese Bereitstellung erfolgt.
CLOUD_DEPLOY_TARGETDer Name des Cloud Deploy-Ziels, das den benutzerdefinierten Zieltyp verwendet.
CLOUD_DEPLOY_PHASEDie Rollout-Phase, der die Bereitstellung entspricht.
CLOUD_DEPLOY_REQUEST_TYPEBei der benutzerdefinierten Bereitstellung ist dies immer
DEPLOY.CLOUD_DEPLOY_FEATURESEine durch Kommas getrennte Liste der Cloud Deploy-Funktionen, die der benutzerdefinierte Container unterstützen muss. Diese Variable wird basierend auf den in Ihrer Bereitstellungspipeline konfigurierten Funktionen ausgefüllt.
Wenn Ihre Implementierung die Funktionen in dieser Liste nicht unterstützt, empfehlen wir, dass sie beim Rendern fehlschlägt.
Bei Standardbereitstellungen ist dieses Feld leer. Bei Canary-Bereitstellungen ist der Wert
CANARY. Wenn der von Cloud Deploy bereitgestellte WertCANARYist, wird Ihr Deploy für jede Phase im Canary aufgerufen. Der Canary-Prozentsatz für jede Phase wird in der UmgebungsvariableCLOUD_DEPLOY_PERCENTAGE_DEPLOYangegeben.CLOUD_DEPLOY_PERCENTAGE_DEPLOYDer Prozentsatz der Bereitstellung, der diesem Bereitstellungsvorgang zugeordnet ist. Wenn die Umgebungsvariable
CLOUD_DEPLOY_FEATURESaufCANARYgesetzt ist, wird Ihr benutzerdefinierter Bereitstellungsvorgang für jede Phase aufgerufen und diese Variable wird für jede Phase auf den Canary-Prozentsatz gesetzt. Ihr Deployment muss für jede Phase ausgeführt werden.CLOUD_DEPLOY_STORAGE_TYPEDer Speicheranbieter. Immer
GCS.CLOUD_DEPLOY_INPUT_GCS_PATHDer Cloud Storage-Pfad, in den der benutzerdefinierte Renderer die gerenderten Konfigurationsdateien geschrieben hat.
CLOUD_DEPLOY_SKAFFOLD_GCS_PATHDer Cloud Storage-Pfad zur gerenderten Skaffold-Konfiguration. Wenn Sie mit Ihrem Release eine Skaffold-Konfiguration bereitgestellt haben.
CLOUD_DEPLOY_MANIFEST_GCS_PATHDer Cloud Storage-Pfad zur gerenderten Manifestdatei.
CLOUD_DEPLOY_OUTPUT_GCS_PATHDer Pfad zum Cloud Storage-Verzeichnis, in das der benutzerdefinierte Bereitstellungscontainer Bereitstellungsartefakte hochladen soll. Weitere Informationen finden Sie unter Ausgaben aus benutzerdefinierten Bereitstellungen.
Ausgaben der benutzerdefinierten Bereitstellung
Bei Ihrem benutzerdefinierten Bereitstellungsprozess muss eine results.json-Ausgabedatei erstellt werden. Diese Datei muss sich im Cloud Storage-Bucket befinden, der von Cloud Deploy bereitgestellt wird (CLOUD_DEPLOY_OUTPUT_GCS_PATH).
Die Datei muss Folgendes enthalten:
Eine Angabe des Erfolgs- oder Fehlerstatus der benutzerdefinierten Bereitstellung.
Die folgenden Status sind gültig:
SUCCEEDEDFAILEDSKIPPED
Dies gilt für Canary-Bereitstellungen, bei denen Canary-Phasen übersprungen werden, um direkt zu
stablezu wechseln.(Optional) Eine Liste von Bereitstellungsartefaktdateien in Form von Cloud Storage-Pfaden.
Der Pfad ist der vollständige URI. Sie wird teilweise mit dem Wert von
CLOUD_DEPLOY_OUTPUT_GCS_PATHprovided (bereitgestellt) durch Cloud Deploy gefüllt.Die hier aufgeführten Dateien werden in Job-Ausführungsressourcen als Bereitstellungsartefakte eingefügt.
Optional: Eine Fehlermeldung, wenn die benutzerdefinierte Bereitstellung fehlschlägt (Status
FAILEDwird zurückgegeben)Mit dieser Nachricht wird
failure_messageim Joblauf für diese Bereitstellung ausgefüllt.Optional: Eine Überspringensnachricht, um zusätzliche Informationen bereitzustellen, wenn beim Bereitstellen der Status
SKIPPEDzurückgegeben wird.Optional: eine Zuordnung der Metadaten, die Sie einbeziehen möchten
Diese Metadaten werden durch Ihr benutzerdefiniertes Zielvorhaben erstellt. Diese Metadaten werden im Joblauf und im Roll-out im Feld
custom_metadatagespeichert.
Wenn Sie die Datei results.json untersuchen müssen, z. B. zum Debuggen, finden Sie den Cloud Storage-URI dafür in den Cloud Build-Logs.
Beispiel für eine Datei mit Bereitstellungsergebnissen
Im Folgenden sehen Sie ein Beispiel für die Ausgabe einer results.json-Datei aus einem benutzerdefinierten Deployment:
{
"resultStatus": "SUCCEEDED",
"artifactFiles": [
"gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/file1.yaml",
"gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/file2.yaml"
],
"failureMessage": "",
"skipMessage": "",
"metadata": {
"key1": "val",
"key2": "val"
}
}
Weitere Informationen zu benutzerdefinierten Zielvorhaben
Hier sind einige Punkte, die Sie beim Einrichten und Verwenden benutzerdefinierter Zielvorhaben beachten sollten.
Aufgaben ausführen
Ihre benutzerdefinierten Rendering- und Bereitstellungsaufgaben werden in der Ausführungsumgebung von Cloud Deploy ausgeführt. Sie können Ihre Aufgaben nicht so konfigurieren, dass sie in einem Google Kubernetes Engine-Cluster ausgeführt werden.
Benutzerdefinierte Ziele und Bereitstellungsstrategien
Benutzerdefinierte Ziele werden für Standardbereitstellungen vollständig unterstützt.
Cloud Deploy unterstützt Canary-Deployments, sofern der benutzerdefinierte Renderer und Deployer die Canary-Funktion unterstützen.
Sie müssen eine benutzerdefinierte Canary-Konfiguration verwenden. Automatisierte und benutzerdefinierte automatisierte Canaries werden bei benutzerdefinierten Zielen nicht unterstützt.
Benutzerdefinierte Ziele und Bereitstellungsparameter
Sie können Bereitstellungsparameter mit benutzerdefinierten Zielen verwenden. Sie können sie in der Phase der Auslieferungspipeline, für das Ziel mit einem benutzerdefinierten Zieltyp oder für die Version festlegen.
Bereitstellungsparameter werden zusätzlich zu den bereits bereitgestellten als Umgebungsvariablen an Ihre benutzerdefinierten Render- und Deployment-Container übergeben.
Beispiele für benutzerdefinierte Ziele
Das cloud-deploy-samples-Repository enthält eine Reihe von Implementierungen für benutzerdefinierte Ziele. Die folgenden Beispiele sind verfügbar:
GitOps
Vertex AI
Terraform
Infrastructure Manager
Helm
Jedes Beispiel enthält einen Schnellstart.
Diese Muster sind kein unterstütztes Google Cloud Produkt und fallen nicht unter einen Google Cloud Supportvertrag. Wenn Sie Fehler melden oder Funktionen in einem Google Cloud -Produkt anfordern möchten, wenden Sie sich an den Google Cloud-Support.
Nächste Schritte
Nachdem Sie nun mit benutzerdefinierten Zielen vertraut sind, erfahren Sie hier, wie Sie sie konfigurieren und verwenden.
Kurzanleitung: Benutzerdefinierten Zieltyp definieren und verwenden
Weitere Informationen zum Konfigurieren von Cloud Deploy-Zielen
Weitere Informationen zu Ausführungsumgebungen für Cloud Deploy