Questo documento descrive come creare un tipo di target Cloud Deploy personalizzato e utilizzarlo come target in una pipeline di distribuzione Cloud Deploy.
Di seguito è riportata la procedura generale per creare un tipo di target personalizzato e nella tua pipeline di distribuzione:
Crea un'applicazione containerizzata o più applicazioni che includono la funzionalità di deployment nel target personalizzato e che soddisfano i requisiti di Cloud Deploy per i tipi di target personalizzati.
Definisci un'azione personalizzata in
skaffold.yaml
che fa riferimento al contenitore e specifica il comando o i comandi da eseguire al suo interno.Crea una definizione
CustomTargetType
che fa riferimento all'azione personalizzata del passaggio precedente e registrala come risorsa Cloud Deploy.Definisci un nuovo target con una proprietà
customTarget
che identifica il nuovo tipo di target personalizzato.Fai riferimento a questo target dalla progressione della pipeline di pubblicazione.
Ciascuno di questi passaggi è descritto nel resto del documento.
Crea le tue applicazioni containerizzate
La funzionalità di deployment nel target personalizzato è definita nelle applicazioni containerizzate, che fornisci a Cloud Deploy facendovi riferimento dal file skaffold.yaml
. Quando
la tua pipeline di distribuzione include un target che utilizza un tipo di target personalizzato,
Cloud Deploy chiama i container con azioni personalizzate definiti per questo
un tipo di target personalizzato, in Skaffold, per eseguire le azioni di rendering e deployment che hai
definito.
Sei tu a decidere il comportamento delle tue applicazioni. Tuttavia, deve utilizzare le variabili di ambiente di input fornite da Cloud Deploy e deve restituire gli output richiesti.
Nella maggior parte dei casi, creerai un contenitore per l'azione di rendering e uno per l'azione di deployment per ogni tipo di target personalizzato creato. L'azione di rendering è facoltativa, ma se non ne fornisci una, Cloud Deploy utilizza quella predefinita skaffold render
.
Definire le azioni personalizzate in Skaffold
Una volta create le immagini container per le azioni personalizzate, fai riferimento a queste
nel
file di configurazione di skaffold.yaml
.
Ogni azione personalizzata per un target personalizzato viene configurata in una customActions
stanza. Per qualsiasi tipo di target personalizzato, in Skaffold devi creare un'azione personalizzata per il rendering e un'altra per il deployment. La definizione CustomTargetType
identifica l'azione personalizzata utilizzata per il rendering e quella utilizzata per il deployment.
Di seguito è riportata la configurazione per le azioni di rendering e deployment personalizzate 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 questa configurazione Skaffold:
customActions.name
È un nome arbitrario per l'azione di rendering o di deployment personalizzato. La La definizione di
CustomTargetType
fa riferimento a questo nome, inrenderAction
o la proprietàdeployAction
.La stanza
containers
include il tuo riferimento, oltre ai comandi per eseguire il container.La stanza
containers
consente più di un container, ma Google consiglia ne utilizzi solo uno.customActions.containers.name
È un nome arbitrario per il container specifico che stai utilizzando per questa azione. Come best practice, il nome del container deve essere sempre qualificato SHA.
image
È il percorso dell'immagine container.
command
È il comando o i comandi da eseguire nel contenitore.
args
È una raccolta di argomenti per
command
.
Consulta la documentazione di riferimento YAML di Skaffold per una documentazione dettagliata sulle proprietà di configurazione utilizzate in customActions
.
Definisci il tipo di target personalizzato
Per definire un target personalizzato, devi prima creare un tipo di target personalizzato utilizzando la CustomTargetType
configurazione.
Puoi creare CustomTargetType
nello stesso file della tua pipeline di distribuzione
definizione di target, con le definizioni del target o in un file separato.
La definizione di CustomTargetType
è la seguente:
# 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:
Dove
CUSTOM_TARGET_TYPE_NAME
È un nome arbitrario assegnato a questa definizione del tipo di target personalizzato. A questo nome viene fatto riferimento nella definizione del target per qualsiasi target che utilizza il tipo di target personalizzato che stai definendo.
RENDER_ACTION_NAME
Indica il nome dell'azione di rendering personalizzato. Questo valore è il
customAction.name
definita inskaffold.yaml
per render.DEPLOY_ACTION_NAME
È il nome dell'azione di deployment personalizzata. Questo valore è il
customAction.name
definita inskaffold.yaml
per deployment.includeSkaffoldModules
È una stanza facoltativa da utilizzare se utilizzi configurazioni Skaffold remote. Le proprietà in questa stanza sono mostrate nella sezione Utilizzare le configurazioni Skaffold remote.
Utilizzare le configurazioni di Skaffold remote
Puoi archiviare le configurazioni Skaffold in un repository Git pubblico, nel bucket Cloud Storage o nel repository Cloud Build 2ª generazione) fare riferimento a queste configurazioni dalla definizione del tipo di target personalizzato.
L'utilizzo di configurazioni Skaffold remote significa che il skaffold.yaml
che fornisci
non è necessario definire azioni personalizzate per ora del rilascio. Ciò consente
condividendo azioni personalizzate all'interno dell'organizzazione.
Per utilizzare le configurazioni di Skaffold remote:
Crea una configurazione Skaffold con azioni personalizzate.
Archiviare la configurazione in un repository Git o in un nel bucket Cloud Storage.
Nella definizione del tipo di target personalizzato, aggiungi una stanza
customActions.includeSkaffoldModules
.In
includeSkaffoldModules
, specifica quanto segue:(Facoltativo) Uno o più elementi
configs
:- configs: ["name1", "name2"]
Il valore di
configs
è un elenco di stringhe che corrispondono ametadata.name
in ogni configurazione Skaffold da includere. Se questo viene omesso, Cloud Deploy accetta tutte le configurazioni nel percorso specificato.Può essere una stanza
googleCloudStorage
,git
ogoogleCloudBuildRepo
.Per Cloud Storage:
googleCloudStorage: source: PATH_TO_GCS_BUCKET path: FILENAME
Per Git:
git: repo: REPO_URL path: PATH_TO_FILE ref: BRANCH_NAME
Per i repository Cloud Build (2ª gen.):
googleCloudBuildRepo: repository: PATH_TO_GCB_REPO path: PATH_TO_FILE ref: BRANCH_NAME
Dove:
PATH_TO_GCS_BUCKET
è il percorso di una directory Cloud Storage, che termina con/*
, dove sono archiviate le configurazioni Skaffold. Skaffold scarica tutti i file di questa directory e poi trova il file Skaffold pertinente con le configurazioni in base al percorso relativo configurato.PATH_TO_GCB_REPO
è il percorso del repository Cloud Build 2ª gen. in cui sono memorizzate le configurazioni di Skaffold. Il percorso assume il seguente formato:projects/{project}/locations/{location}/connections/{connection}/repositories/{repository}
. Skaffold scarica tutti i file in questa directory e poi trova il file Skaffold, in base al percorso relativo configurato.FILENAME
è il nome del file che include le configurazioni di Skaffold. Questa proprietàpath:
è facoltativa. Se non la specifichi, Cloud Deploy assumeskaffold.yaml
. Se non vengonoskaffold.yaml
o se il nome file specificato non è presente, l'elemento la creazione della release non riesce.REPO_URL
è l'URL del repository Git.PATH_TO_FILE
è il percorso nel repository del file contenente Configurazioni Skaffold.BRANCH_NAME
è il nome del ramo (ad esempiomain
) da cui prendiamo le configurazioni di Skaffold.
Esempio
Il seguente YAML di tipo target personalizzato è una stanza customActions
con un
includeSkaffoldModules
stanza, che punta alle configurazioni Skaffold archiviate in
Bucket Cloud Storage:
customActions:
renderAction: my-custom-action
deployAction: my-custom-action
includeSkaffoldModules:
- configs: ["myConfig"]
googleCloudStorage:
source: "gs://my-custom-target-bucket/my-custom/*"
path: "skaffold.yaml
Il seguente codice YAML è una configurazione Skaffold a cui fa riferimento l'azione personalizzata mostrata:
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
Registra il tipo di target personalizzato
Dopo aver configurato CustomTargetType
, esegui
Comando gcloud deploy apply
per registrare
la risorsa CustomTargetType
in un progetto Google Cloud:
gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]
Dove:
FILE
è il nome del file in cui hai definito questo tipo di target personalizzato.
PROJECT
è il progetto Google Cloud in cui creare questa risorsa.
CustomTargetType
deve trovarsi nello stesso progetto della risorsa Target
che fa riferimento a CustomTargetType
. Non è necessario specificare il progetto se lo hai impostato come
il tuo progetto predefinito per Google Cloud CLI.
REGION
è la regione (ad esempio us-centra1
) in cui creare questa
risorsa. CustomTargetType
deve trovarsi nella stessa regione della risorsa Target
che fa riferimento. Non è necessario specificare la regione se disponi
impostala come regione predefinita per gcloud CLI.
Ora che CustomTargetType
viene creata come risorsa di Cloud Deploy,
ora puoi utilizzarlo in una definizione di Target
per creare il tuo target personalizzato.
Per ulteriori informazioni sulla definizione di CustomTargetType
, consulta le
Riferimento allo schema di configurazione di Cloud Deploy.
Definisci il target
L'unica differenza tra una definizione di destinazione per un tipo di target supportato e
Una definizione di target personalizzato prevede che la definizione di un target personalizzato includa un
customTarget
stanza. La sintassi di un customTarget
è la seguente:
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
dove CUSTOM_TARGET_TYPE_NAME
è il valore della proprietà name
definita nella configurazione del tipo di target personalizzato.
Aggiungi il target alla pipeline di distribuzione
Puoi utilizzare un target personalizzato in una pipeline di distribuzione esattamente come faresti con un tipo di target supportato. Cioè, non c'è alcuna differenza nella pipeline di distribuzione avanzamento tra i target di un tipo di target supportato e quelli personalizzati.
Tutti i target in una pipeline di importazione devono utilizzare lo stesso tipo di target. Ad esempio: non puoi avere una pipeline di distribuzione con alcuni target Google Kubernetes Engine e alcuni target personalizzati.
Come per i tipi di target supportati, puoi includere parametri di deployment nella fase della pipeline.
Crea una release
Una volta definito completamente il tipo di target personalizzato e creato un target per utilizzarlo, puoi creare una release nel modo consueto:
gcloud deploy releases create [RELEASE_NAME] \
--project=[PROJECT_NAME] \
--region=[REGION] \
--delivery-pipeline=[PIPELINE_NAME]
Al momento della creazione della release, l'azione di rendering personalizzata viene eseguita per ogni destinazione nella pipeline di distribuzione, inclusa l'elaborazione dei parametri di deployment configurati sulla release, sui target o sulla pipeline di distribuzione. Cloud Deploy fornisce parametri di deployment come input al container di rendering personalizzato.
Visualizzare l'output dei target personalizzati
Se la tua azione personalizzata soddisfa le requisiti per le destinazioni personalizzate, puoi utilizzare la console Google Cloud per visualizzare artefatti.
Per visualizzare l'output dell'azione di rendering personalizzato:
Nella console Google Cloud, vai a Cloud Deploy Pagina Pipeline di distribuzione per visualizzare la pipeline di distribuzione.
Fai clic sul nome della pipeline di distribuzione.
La visualizzazione della pipeline mostra lo stato del deployment dell'app e è elencata nella scheda Release nella sezione Pipeline di distribuzione dettagli.
Fai clic sul nome della release.
Viene visualizzata la pagina Dettagli sulla release.
Fai clic sulla scheda Elementi.
In Artefatti target, fai clic sulla freccia accanto a Visualizza artefatti.
Vengono elencati gli elementi sottoposti a rendering, tra cui l'oggetto
skaffold.yaml
sottoposto a rendering e il file manifest sottoposto a rendering generato dal renderer personalizzato. Puoi inoltre fai clic sul link Posizione archiviazione accanto a ciascuno di essi per passare bucket Cloud Storage per visualizzare i file.Puoi anche fare clic sul link Visualizza elementi per visualizzare questi file per alla release, per target o per fase, utilizzando release inspector.
Passaggi successivi
Prova la guida rapida: Definire e utilizzare un tipo di target personalizzato
Consulta i tipi di target personalizzati di esempio disponibili.
Scopri di più sulla configurazione delle destinazioni Cloud Deploy