Esegui il deployment di un servizio o un job Cloud Run

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

Cloud Deploy ti consente di eseguire il deployment dei carichi di lavoro basati su container in qualsiasi servizio o job di 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 da completare per eseguire il deployment in 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

Crea la tua configurazione target

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

Nella definizione della 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 risorsa utilizza i seguenti elementi:

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

    Eseguirai questa operazione per ogni target. Consigliamo di usare 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 di skaffold.yaml.

  • [region_name] è la regione in cui verranno creati il servizio o il job. Il tuo servizio o 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 eseguire il deployment del servizio o del job Cloud Run.

Crea la tua configurazione 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 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 e job.yaml per un job.

  • La stanza deploy specifica la modalità di deployment del manifest, nello specifico il progetto e la località. Il campo deploy è obbligatorio.

    Ti consigliamo di lasciare vuoto il campo {}. Cloud Deploy compila questo campo durante il rendering, in base al progetto e alla località della definizione di destinazione.

    Per lo sviluppo locale, tuttavia, è possibile specificare dei valori qui. Tuttavia, Cloud Deploy utilizza sempre il progetto e la località della definizione di destinazione, indipendentemente dal fatto che i valori vengano forniti qui.

Crea le tue definizioni di servizio Cloud Run

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

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

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] punta 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 il tuo 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:

  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 servizio:

pagina dei dettagli del servizio 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 tuo file system, in modo che Skaffold possa utilizzarlo quando crei una release.

Creare le definizioni del job Cloud Run

Per eseguire il deployment della definizione di un job Cloud Run, puoi crearne uno manualmente o copiarne uno da un job esistente. Entrambi sono descritti in questa sezione.

Tieni presente che i job non vengono necessariamente eseguiti dopo il deployment da parte di Cloud Deploy. È un'operazione diversa rispetto ai servizi, che eseguono le applicazioni dopo il deployment. Il modo in cui un job viene richiamato 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] punta 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 il tuo 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:

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

  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, 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 tuo file system, in modo che Skaffold possa utilizzarlo quando crei una release.

Riepilogo

Ora che hai la definizione del tuo servizio o del job Cloud Run, la configurazione di skaffold.yaml, la definizione della destinazione di Cloud Deploy e hai registrato il target come risorsa di Cloud Deploy, puoi richiamare la pipeline di distribuzione per creare una release e farla avanzare attraverso l'avanzamento delle destinazioni definite 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 mantenuta nulla della revisione precedente, a meno che non sia lo stesso nel file YAML appena distribuito. Ad esempio, se nella revisione precedente esistono impostazioni o etichette di configurazione che non si trovano nel nuovo YAML, queste impostazioni o etichette non sono presenti nella nuova revisione.

Attivazione di job Cloud Run

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

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 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