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:
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.
Definisci un tipo di target personalizzato e un target che fa riferimento a quel tipo.
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.
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.
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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
- 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.
- 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"
- Aggiungi il ruolo sviluppatore per il runtime specifico.
-
Aggiungi il ruolo
iam.serviceAccountUser
, che include l'autorizzazioneactAs
per 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
Se hai già installato Google Cloud CLI, assicurati di eseguire la versione più recente:
gcloud components update
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.
Apri una finestra del terminale.
Crea una nuova directory e aprila.
mkdir custom-target-quickstart cd custom-target-quickstart
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.
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
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.
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.
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:
Nella console Google Cloud, vai alla pagina pipeline di distribuzione di Cloud Deploy per visualizzare la pipeline di distribuzione (
custom-targets-pipeline
).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.
La release è elencata nella scheda Release in Dettagli della pipeline di pubblicazione.
Fai clic sul nome della release.
Viene visualizzata la pagina Dettagli sulla release.
Fai clic sulla scheda Artefatti.
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".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.Fai clic sul bucket il cui nome inizia con
us-central1.deploy-artifacts
...Fai clic sulla cartella il cui nome inizia con
custom-targets-pipeline-
, quindi fai clic sulla cartellatest-release-001
.Fai clic sulla cartella il cui nome è il nome dell'implementazione, che dovrebbe essere
test-release-001-to-sample-env-0001
.Fai clic sulla cartella visualizzata, che è un UUID, e poi sulla cartella
custom-output
.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
, inskaffold.yaml
:
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi:
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
Elimina entrambi i bucket Cloud Storage creati da Cloud Deploy.
È tutto. Hai completato questa guida rapida.