Questo documento descrive come eseguire il deployment delle applicazioni, inclusi i servizi Cloud Run e i job Cloud Run.
Cloud Deploy consente di eseguire il deployment dei carichi di lavoro basati su container in qualsiasi servizio o job Cloud Run. Tutte le funzionalità di Cloud Deploy sono supportate quando esegui il deployment nelle destinazioni di Cloud Run per i servizi Cloud Run, ma i deployment canary non sono supportati per i job Cloud Run.
Questo documento descrive le tre configurazioni principali che devi completare per eseguire il deployment in Cloud Run:
- Crea la configurazione di destinazione
- Creare la configurazione Skaffold
- Crea le tue definizioni di servizio o definizioni dei job Cloud Run.
Limitazioni
Puoi eseguire il deployment di un solo servizio o job Cloud Run per destinazione.
Non puoi eseguire un deployment canary su un job Cloud Run.
I servizi Cloud Run, tuttavia, possono utilizzare un deployment canary.
Prima di iniziare
Assicurati di utilizzare gcloud CLI versione
401.0.0
o successive.
Crea la tua configurazione di destinazione
Il target può essere configurato nel file YAML della pipeline di distribuzione oppure in un file separato. Inoltre, puoi configurare più di una destinazione nello stesso file.
Nella definizione di destinazione, crea una stanza run
per identificare la località in cui verrà creato il servizio Cloud Run.
La sintassi per specificare il servizio o il job Cloud Run nella definizione del target è la seguente:
run:
location: projects/[project_name]/locations/[region_name]
Questo identificatore di risorse utilizza i seguenti elementi:
[
project_name
] è il nome del progetto Google Cloud in cui verrà creato il servizio o il job Cloud Run.Dovrai farlo per ogni target. Consigliamo un progetto diverso per ogni servizio o job Cloud Run. Se vuoi più di un servizio o job nello stesso progetto, devi utilizzare i profili Skaffold nel file di configurazione
skaffold.yaml
.[
region_name
] è la regione in cui verrà creato il servizio o il job. Il servizio o il job può trovarsi in qualsiasi regione supportata da Cloud Run.
Di seguito è riportato un esempio di configurazione di destinazione, che definisce il servizio o il job Cloud Run da creare:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development service
run:
location: projects/my-app/locations/us-central1
Puoi definire questo target all'interno di una definizione della pipeline di distribuzione di Cloud Deploy o separatamente. In ogni caso, devi registrare la destinazione prima di creare la release per il deployment del servizio o del job Cloud Run.
Creare la configurazione Skaffold
Di seguito è riportato un esempio di file skaffold.yaml
per un
deployment di Cloud Run:
apiVersion: skaffold/v3alpha1
kind: Config
metadata:
name: cloud-run-application
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
In questo file skaffold.yaml
...
manifests.rawYaml
fornisce i nomi delle definizioni del servizio Cloud Run.In questo esempio,
service.yaml
è il file che definisce un servizio Cloud Run di cui Skaffold eseguirà il deployment. Il nome file può essere qualsiasi cosa, ma per convenzione èservice.yaml
per un servizio ejob.yaml
per un job.La stanza
deploy
specifica la modalità di deployment del manifest, in particolare, il progetto e la località. Il campodeploy
è obbligatorio.Ti consigliamo di lasciare vuoto il campo
{}
. Cloud Deploy completa questi dati durante il rendering, in base al progetto e alla località dalla definizione della destinazione.Per lo sviluppo locale, tuttavia, puoi fornire valori qui. Tuttavia, Cloud Deploy utilizza sempre il progetto e la località dalla definizione di destinazione, indipendentemente dal fatto che i valori siano forniti qui.
Crea le definizioni del servizio Cloud Run
Per creare una definizione del servizio Cloud Run, puoi crearne una manualmente o copiarne una da un servizio esistente. Entrambe sono descritte in questa sezione.
Opzione 1: crea un nuovo service.yaml
di Cloud Run
Il file service.yaml definisce il servizio Cloud Run. Quando crei una release, Skaffold utilizza questa definizione per eseguire il deployment del servizio.
Ecco un esempio semplificato:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: [SERVICE_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Dove:
[SERVICE_NAME]
è un nome per questo servizio Cloud Run.[IMAGE_PATH]
rimanda all'immagine o alle immagini container di cui stai eseguendo il deployment con questo servizio.
Opzione 2: copia un service.yaml
da un servizio esistente utilizzando la console Google Cloud
Puoi creare un servizio utilizzando la console Google Cloud o utilizzarne una esistente e copiare service.yaml
da lì.
Per ottenere service.yaml
utilizzando Google Cloud CLI:
gcloud run services describe [service_name] --format=export
Per scaricare service.yaml
dalla console Google Cloud:
Nella console Google Cloud, vai alla pagina Servizi Cloud Run.
Seleziona il servizio esistente di cui vuoi utilizzare la definizione.
In alternativa, puoi crearne uno nuovo e selezionarlo. Quando selezioni il servizio, viene visualizzata la pagina Dettagli servizio:
Seleziona la scheda YAML.
Fai clic su Modifica, quindi copia i contenuti del YAML in un nuovo file denominato
service.yaml
, nel tuo file system, in modo che Skaffold possa utilizzarlo quando crei una release.
Crea le definizioni dei job Cloud Run
Per eseguire il deployment di una definizione di job Cloud Run, puoi crearne uno manualmente o copiarne uno da un job esistente. Entrambe sono descritte in questa sezione.
Tieni presente che i job non vengono necessariamente eseguiti al momento del deployment da parte di Cloud Deploy. È diverso dai servizi, che eseguono le applicazioni dopo il deployment. Il modo in cui viene richiamato un job dipende dal job stesso.
Opzione 1: crea un nuovo job.yaml
di Cloud Run
Il file job.yaml definisce il job Cloud Run. Quando crei una release, Skaffold utilizza questa definizione per eseguire il deployment del job.
Ecco un esempio semplificato:
apiVersion: run.googleapis.com/v1
kind: Job
metadata:
name: [JOB_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Dove:
[JOB_NAME]
è un nome per questo job Cloud Run.[IMAGE_PATH]
rimanda all'immagine container di cui stai eseguendo il deployment per questo job.
Opzione 2: copia un job.yaml
da un job esistente utilizzando la console Google Cloud
Puoi creare un job utilizzando la console Google Cloud o utilizzarne uno esistente e copiare job.yaml
da lì.
Per ottenere job.yaml
utilizzando Google Cloud CLI:
gcloud run jobs describe [job_name] --format=export
Per scaricare job.yaml
dalla console Google Cloud:
Nella console Google Cloud, vai alla pagina Job Cloud Run.
Seleziona il job esistente di cui vuoi utilizzare la definizione.
In alternativa, puoi crearne uno nuovo e selezionarlo. Quando selezioni il job, viene visualizzata la pagina Dettagli job:
Seleziona la scheda YAML.
Fai clic su Modifica, quindi copia i contenuti del YAML in un nuovo file denominato
job.yaml
, nel tuo file system, in modo che Skaffold possa utilizzarlo quando crei una release.
Riepilogo
Ora che hai il servizio o la definizione del job Cloud Run, la configurazione skaffold.yaml
e la definizione della destinazione di Cloud Deploy e hai registrato il target come risorsa di Cloud Deploy, puoi chiamare la tua pipeline di distribuzione per creare una release e avanzare lungo l'avanzamento dei target definiti nella pipeline.
La guida rapida Deployment di un'app in Cloud Run utilizzando Cloud Deploy mostra tutto questo in azione.
Comportamento dei servizi nelle revisioni
Quando esegui nuovamente il deployment di un servizio, la nuova revisione si basa sull'elemento service.yaml
di cui è stato appena eseguito il deployment. Non viene mantenuto nulla nella revisione precedente, a meno che non sia la stessa nel codice YAML di cui è stato appena eseguito il deployment. Ad esempio, se nella revisione precedente sono presenti impostazioni di configurazione o etichette che non sono presenti nel nuovo YAML, queste impostazioni o etichette non sono presenti nella nuova revisione.
Deployment di servizi e job Cloud Run in più progetti
Se devi eseguire il deployment di servizi o job che si trovano in progetti diversi, il tuo account di servizio di esecuzione deve avere l'autorizzazione per accedere ai progetti in cui tali servizi o job sono definiti.
Per ulteriori informazioni, consulta Account di servizio di esecuzione di Cloud Deploy e Autorizzazioni e ruoli di Identity and Access Management.
Passaggi successivi
Prova la guida rapida: eseguire il deployment di un'applicazione in Cloud Run
Scopri di più sulla configurazione delle destinazioni di Cloud Deploy
Scopri di più sugli ambienti di esecuzione di Cloud Deploy.
Scopri di più sul supporto di Skaffold per Cloud Run
Scopri di più su Cloud Run