Esegui il deployment di un servizio o un job Cloud Run

Questo documento descrive come eseguire il deployment delle applicazioni, inclusi i servizi e i job Cloud Run.

Cloud Deploy ti consente di eseguire il deployment dei tuoi carichi di lavoro basati su container in qualsiasi servizio Cloud Run o job. Tutte le funzionalità di Cloud Deploy sono supportate quando esegui il deployment in destinazioni 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 da completare per eseguire il deployment in Cloud Run:

Limitazioni

Prima di iniziare

Crea la configurazione del target

La destinazione può essere configurata nel file YAML della pipeline di distribuzione o in un file separato. Inoltre, puoi configurare più di un target nello stesso file.

I target devono essere definiti nello stesso progetto e nella stessa regione della pipeline di importazione. Tuttavia, i servizi o i job in cui vengono eseguiti i deployment dei target possono trovarsi in progetti e regioni diversi, purché l'account di servizio abbia accesso a questi progetti.

Nella definizione del target, crea una stanza run per identificare la posizione 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 della risorsa utilizza i seguenti elementi:

  • [project_name] è il nome del progetto Google Cloud in cui verrà creato il servizio o il job Cloud Run.

    Esegui questa operazione 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 del target 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 eseguire il deployment del servizio o del job Cloud Run.

Crea la configurazione di Skaffold

Di seguito è riportato un esempio di file skaffold.yaml per un deployment di Cloud Run:

apiVersion: skaffold/v4beta7
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 dei servizi Cloud Run.

    In questo esempio, service.yaml è il file che definisce un servizio Cloud Run che verrà eseguito da Skaffold. Il nome del file può essere qualsiasi, ma per convenzione è service.yaml per un servizio e job.yaml per un job.

  • La stanza deploy specifica come vuoi che venga eseguito il deployment del manifest, in particolare il progetto e la posizione. Il campo deploy è obbligatorio.

    Ti consigliamo di lasciare vuoto {}. Cloud Deploy compila questo valore durante il rendering, in base al progetto e alla posizione della definizione del target.

    Tuttavia, per lo sviluppo locale puoi fornire i valori qui. Tuttavia, Cloud Deploy utilizza sempre il progetto e la posizione della definizione del target, indipendentemente dal fatto che i valori siano forniti qui.

Crea le definizioni dei servizi Cloud Run

Per creare una definizione di servizio Cloud Run, puoi crearne una manualmente o copiarne una da un servizio esistente. Entrambi sono descritti in questa sezione.

Opzione 1: crea un nuovo servizio Cloud Run service.yaml

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] è il nome di questo servizio Cloud Run.

  • [IMAGE_PATH] fa riferimento all'immagine o alle immagini container di cui esegui 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 uno esistente e copiare da lì il tuo service.yaml.

Per ottenere il token service.yaml utilizzando Google Cloud CLI:

gcloud run services describe [service_name] --format=export

Per ottenere il token service.yaml dalla console Google Cloud:

  1. Nella console Google Cloud, vai alla pagina Servizi Cloud Run.

  2. 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 del servizio:

pagina dei dettagli del servizio della console Google Cloud, che mostra la scheda YAML

  1. Seleziona la scheda YAML.

  2. Fai clic su Modifica, quindi copia i contenuti del file YAML in un nuovo file denominato service.yaml nel 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 una manualmente o copiarne una da un job esistente. Entrambi sono descritti in questa sezione.

Tieni presente che i job non vengono necessariamente eseguiti al momento del deployment da Cloud Deploy. Sono diversi dai servizi, che sono applicazioni in esecuzione dopo il loro dispiegamento. La modalità di chiamata di un job dipende dal job stesso.

Opzione 1: crea un nuovo servizio Cloud Run job.yaml

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] è il nome di questo job Cloud Run.

  • [IMAGE_PATH] fa riferimento all'immagine del contenitore 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 da lì il tuo job.yaml.

Per ottenere il token job.yaml utilizzando Google Cloud CLI:

gcloud run jobs describe [job_name] --format=export

Per ottenere il token job.yaml dalla console Google Cloud:

  1. Nella console Google Cloud, vai alla pagina Cloud Run Jobs.

  2. 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:

Pagina dei dettagli del job nella console Google Cloud, che mostra la scheda YAML

  1. Seleziona la scheda YAML.

  2. Fai clic su Modifica, quindi copia i contenuti del file YAML in un nuovo file denominato job.yaml nel file system in modo che Skaffold possa utilizzarlo quando crei una release.

In sintesi

Ora che hai la definizione del servizio o del job Cloud Run, la configurazione skaffold.yaml e la definizione del target Cloud Deploy e hai registrato il target come risorsa Cloud Deploy, puoi richiamare la pipeline di distribuzione per creare una release e farla avanzare attraverso la progressione dei target definiti nella pipeline.

La guida rapida Esegui il deployment di un'app in Cloud Run utilizzando Cloud Deploy mostra tutto questo in azione.

Comportamento dei servizi nelle varie revisioni

Quando esegui il redeployment di un servizio, la nuova revisione si basa sul service.yaml appena eseguito. Nessun elemento della revisione precedente viene mantenuto, a meno che non sia uguale nel file YAML appena disegnato. Ad esempio, se nella revisione precedente sono presenti impostazioni di configurazione o etichette che non sono presenti nel nuovo file YAML, queste impostazioni o etichette non sono presenti nella nuova revisione.

Attivazione dei job Cloud Run

Dopo aver eseguito il deployment di un job, puoi attivarlo come descritto nella documentazione di Cloud Run.

Eseguire il deployment di servizi e job Cloud Run in più progetti

Se devi eseguire il deployment di servizi o job in progetti diversi, il tuo account di servizio di esecuzione deve avere accesso ai progetti in cui sono definiti questi servizi o job.

Per ulteriori informazioni, consulta Account di servizio di esecuzione di Cloud Deploy e Ruoli e autorizzazioni di Identity and Access Management.

Passaggi successivi