Definire e utilizzare un tipo di target personalizzato

Questa guida rapida mostra come utilizzare Cloud Deploy per creare un tipo di target personalizzato e poi eseguire il deployment in una destinazione personalizzata di quel tipo.

In questa guida rapida, imparerai a:

  1. Crea una configurazione Skaffold.

    Il file di configurazione Skaffold è il luogo in cui configuri il comportamento del target. Questa configurazione fa riferimento alle immagini container e ai comandi shell da eseguire su queste immagini, che sono le azioni per le operazioni di rendering e deployment.

  2. Definisci un tipo di target personalizzato e un target che fa riferimento a quel tipo.

  3. Definisci la pipeline di distribuzione di Cloud Deploy.

    Questa pipeline include una sola fase e utilizza un solo target. In questa fase, farai riferimento al target configurato.

  4. Crea una release, che crea automaticamente un'implementazione, da cui vengono eseguite le operazioni di rendering e deployment personalizzati.

    Nell'ambito di questa release e implementazione, vengono eseguite entrambe le operazioni di rendering e deployment definite nella configurazione di Skaffold.

  5. Visualizza i risultati delle operazioni personalizzate. Sono inclusi un file di configurazione sottoposto a rendering caricato in Cloud Storage e una stringa scritta in quel file, nonché un file dei risultati che include lo stato dell'operazione.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.

    Abilita le API

  5. Installa Google Cloud CLI.
  6. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  7. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  8. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  9. Abilita le API Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.

    Abilita le API

  10. Installa Google Cloud CLI.
  11. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  12. Se hai già installato Google Cloud CLI, assicurati di eseguire la versione più recente:

    gcloud components update
    
  13. Assicurati che l'account di servizio Compute Engine predefinito disponga delle autorizzazioni sufficienti.

    L'account di servizio potrebbe avere già le autorizzazioni necessarie. Questi passaggi sono inclusi per i progetti che disabilitano le concessioni automatiche dei ruoli per gli account di servizio predefiniti.

    1. Innanzitutto, aggiungi il ruolo clouddeploy.jobRunner:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/clouddeploy.jobRunner"
      
    2. Aggiungi il ruolo sviluppatore per il runtime specifico.
    3. Aggiungi il ruolo iam.serviceAccountUser, che include l'autorizzazione actAsper il deployment nel runtime:
      gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser" \
          --project=PROJECT_ID
      

Prepara il manifest dell'applicazione e della configurazione Skaffold

Cloud Deploy utilizza Skaffold per fornire i dettagli su cosa eseguire il deployment e come eseguirne il deployment per il tuo target.

In questa guida rapida, creerai un file skaffold.yaml che definisce le azioni personalizzate che rappresentano le operazioni di rendering e deployment per il tipo di target personalizzato.

Tieni presente che le azioni personalizzate fornite in questa guida rapida non eseguono il deployment di alcuna applicazione in un runtime. Entrambe le azioni di rendering e deployment caricano un file di risultati in Cloud Storage per soddisfare il contratto con il target personalizzato tra Cloud Deploy e il rendering e il deployment definiti dall'utente.

  1. Apri una finestra del terminale.

  2. Crea una nuova directory e aprila.

    mkdir custom-target-quickstart
    cd custom-target-quickstart
    
  3. Crea un file denominato skaffold.yaml con il seguente contenuto:

    apiVersion: skaffold/v4beta7
    kind: Config
    customActions:
    - name: custom-render
      containers:
      - name: render
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo "Sample manifest rendered content" > manifest.txt
            gsutil cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt
            echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json
            gsutil cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    - name: custom-deploy
      containers:
      - name: deploy
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo {\"resultStatus\": \"SUCCEEDED\"} > results.json
            gsutil cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    

    Questo file include la stanza customActions:, che definisce un'azione di rendering personalizzato e un'azione di deployment personalizzato. Ognuna di queste azioni personalizzate fa riferimento a un'immagine container da eseguire e a comandi da eseguire.

    Consulta il riferimento skaffold.yaml per ulteriori informazioni su questo file di configurazione.

Crea la pipeline di distribuzione, il tipo di target personalizzato e il target

Puoi definire la pipeline di distribuzione, il tipo di target personalizzato e il target in un file o in file separati. In questa guida rapida, creerai un unico file con tutti e tre.

  1. Nella directory custom-target-quickstart, crea un nuovo file, clouddeploy.yaml, con i seguenti contenuti:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
      name: custom-targets-pipeline
    serialPipeline:
      stages:
      - targetId: sample-env
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
      name: sample-env
    customTarget:
      customTargetType: basic-custom-target
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: CustomTargetType
    metadata:
      name: basic-custom-target
    customActions:
      renderAction: custom-render
      deployAction: custom-deploy
    
  2. Registra la pipeline e i target con il servizio Cloud Deploy:

    gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
    

    Ora hai una pipeline di distribuzione con un target. Questo è il tuo target che utilizza il tipo di destinazione personalizzato e questa pipeline non esegue il deployment di un'applicazione in un runtime.

  3. Conferma la pipeline e i target:

    Nella console Google Cloud, vai alla pagina pipeline di distribuzione di Cloud Deploy per visualizzare l'elenco delle pipeline di distribuzione disponibili.

    Apri la pagina Pipeline di distribuzione

    Viene visualizzata la pipeline di distribuzione appena creata, con una destinazione elencata nella colonna Destinazioni.

    pagina della pipeline di distribuzione nella console Google Cloud, che mostra la pipeline

Crea una release

Una release è la risorsa centrale di Cloud Deploy che rappresenta le modifiche di cui viene eseguito il deployment. La pipeline di distribuzione definisce il ciclo di vita di quella release. Per i dettagli sul ciclo di vita, consulta Architettura del servizio Cloud Deploy.

Esegui questo comando dalla directory custom-target-quickstart per creare una risorsa release che rappresenti l'azione personalizzata di cui eseguire il deployment:

gcloud deploy releases create test-release-001 \
  --project=PROJECT_ID \
  --region=us-central1 \
  --delivery-pipeline=custom-targets-pipeline

Come per tutte le release (a meno che non includano --disable-initial-rollout), Cloud Deploy crea automaticamente anche una risorsa di implementazione. Vengono eseguite tutte le fasi dell'implementazione, tra cui rendering e deployment.

Visualizza i risultati nella console Google Cloud

Dopo qualche minuto, il deployment è completo. In questo caso, poiché le due azioni personalizzate sono comandi per echo delle stringhe in un file e caricamento del file in Cloud Storage, non viene eseguito il deployment di nulla nel runtime di destinazione.

Tuttavia, puoi visualizzare il file e le stringhe al suo interno:

  1. Nella console Google Cloud, vai alla pagina pipeline di distribuzione di Cloud Deploy per visualizzare la pipeline di distribuzione (custom-targets-pipeline).

    Apri la pagina Pipeline di distribuzione

  2. Fai clic sul nome della pipeline di distribuzione (custom-targets-pipeline).

    La visualizzazione della pipeline mostra lo stato del deployment dell'app. Poiché c'è una sola fase nella pipeline, la visualizzazione mostra solo un nodo.

    Visualizzazione della pipeline di distribuzione che mostra l'esito positivo

    La release è elencata nella scheda Release in Dettagli della pipeline di pubblicazione.

  3. Fai clic sul nome della release.

    Viene visualizzata la pagina Dettagli sulla release.

  4. Fai clic sulla scheda Artefatti.

  5. In Elementi target, fai clic sul link VISUALIZZA ARTIFATI.

    Viene mostrato il file manifest visualizzato. In questo caso, il file è l'output dell'azione di rendering personalizzato che hai definito nel file di configurazione skaffold.yaml, contenente la stringa "Esempio di contenuti visualizzati nel manifest".

    Output dell'azione di rendering personalizzato

  6. Trova i bucket Cloud Storage creati da questa release.

    Apri la pagina del browser di Cloud Storage

    Viene visualizzata la pagina Bucket, che mostra i due bucket creati per questa release. Un bucket contiene il file di configurazione della pipeline di distribuzione e l'elemento skaffold.yaml sottoposto a rendering. L'altro include il file di output creato per la creazione dell'azione personalizzata.

  7. Fai clic sul bucket il cui nome inizia con us-central1.deploy-artifacts...

    Elenco dei bucket Cloud Storage

  8. Fai clic sulla cartella il cui nome inizia con custom-targets-pipeline-, quindi fai clic sulla cartella test-release-001.

  9. Fai clic sulla cartella il cui nome è il nome dell'implementazione, che dovrebbe essere test-release-001-to-sample-env-0001.

  10. Fai clic sulla cartella visualizzata, che è un UUID, e poi sulla cartella custom-output.

  11. Fai clic su results.json, quindi sull'URL con link ipertestuale nel campo URL autenticato.

    Questo file contiene la stringa che hai configurato come output dell'azione custom-deploy, in skaffold.yaml:

    Output da azione personalizzata di deployment

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi:

  1. Elimina la pipeline di distribuzione, il target, il rilascio e l'implementazione:

    gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
    
  2. Elimina entrambi i bucket Cloud Storage creati da Cloud Deploy.

    Apri la pagina del browser di Cloud Storage

È tutto. Hai completato questa guida rapida.

Passaggi successivi