Creare un target personalizzato

Questo documento descrive come creare un tipo di destinazione Cloud Deploy personalizzato e utilizzare quel tipo di target personalizzato come target in un ambiente Cloud Deploy pipeline di distribuzione.

Di seguito è riportata la procedura generale per creare un tipo di target personalizzato e nella tua pipeline di distribuzione:

  1. Crea un'applicazione containerizzata oppure di applicazioni che includono la funzionalità di deployment nel tuo target personalizzato, e che soddisfano le esigenze requisiti per tipi di target personalizzati.

  2. Definisci un'azione personalizzata in skaffold.yaml che fa riferimento al container e specifica il comando o i comandi da eseguire.

  3. Creare una definizione di CustomTargetType fare riferimento all'azione personalizzata del passaggio precedente e registrarla come della risorsa Cloud Deploy.

  4. Definisci un nuovo target con una proprietà customTarget che identifica il nuovo tipo di target personalizzato.

  5. Fai riferimento al target della pipeline di distribuzione avanzamento.

  6. Crea una release.

Ciascuno di questi passaggi è descritto in dettaglio nel resto del presente documento.

Crea le tue applicazioni containerizzate

La funzionalità di cui eseguire il deployment nel target personalizzato è definita che fornisci a Cloud Deploy fate riferimento dal file skaffold.yaml. Quando la tua pipeline di distribuzione include un target che utilizza un tipo di target personalizzato, Cloud Deploy chiama i container con azioni personalizzate definiti per questo un tipo di target personalizzato, in Skaffold, per eseguire le azioni di rendering e deployment che hai definito.

Sei tu a decidere il comportamento delle tue applicazioni. Tuttavia, deve utilizzare variabili di ambiente di input fornite da Cloud Deploy e deve restituiscono gli output obbligatori.

Nella maggior parte dei casi, creerai un container per l'azione di rendering e uno per l'azione di deployment per ogni tipo di target personalizzato che crei. L'azione di rendering è facoltativo, ma se non ne fornisci uno, Cloud Deploy utilizza la classe il valore predefinito di skaffold render.

Definisci le azioni personalizzate in Skaffold

Dopo aver impostato l'immagine o le immagini container delle azioni personalizzate, puoi fare riferimento a queste da File di configurazione di skaffold.yaml.

Configura ogni azione personalizzata per un target personalizzato in un customActions stanza. Per qualsiasi tipo di target personalizzato, puoi creare un'azione personalizzata, in Skaffold, per per il rendering e una per il deployment. La CustomTargetType definizione identifica quale azione personalizzata viene utilizzata per il rendering e quale viene utilizzata per il deployment.

Di seguito è riportata la configurazione per le azioni di rendering e deployment personalizzati skaffold.yaml:

apiVersion: skaffold/v4beta7
kind: Config
customActions:
# custom render action
- name:
  containers:
  - name:
    image:
    command:
    args:
# custom deploy action
- name:
  containers:
  - name:
    image:
    command:
    args:

In questa configurazione Skaffold:

  • customActions.name

    È un nome arbitrario per l'azione di rendering o deployment personalizzato. La La definizione di CustomTargetType fa riferimento a questo nome, in renderAction o la proprietà deployAction.

  • La stanza containers include il tuo riferimento e i comandi per eseguirla containerizzato.

    La stanza containers consente più di un container, ma Google consiglia ne utilizzi solo uno.

  • customActions.containers.name

    È un nome arbitrario per il container specifico che stai utilizzando per questa azione. Come best practice, il nome del container deve essere sempre qualificato SHA.

  • image

    È il percorso dell'immagine container.

  • command

    Il comando o i comandi da eseguire sul container.

  • args

    È una raccolta di argomenti per command.

Consulta il riferimento YAML Skaffold per una documentazione dettagliata sulle proprietà di configurazione utilizzate in customActions.

Definisci il tipo di target personalizzato

Per definire un target personalizzato, innanzitutto devi creare un tipo di target personalizzato, utilizzando Configurazione CustomTargetType. Puoi creare CustomTargetType nello stesso file della tua pipeline di distribuzione definizione di target, con le definizioni del target o in un file separato.

La definizione di CustomTargetType è la seguente:

# Custom target type config (preview)
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name: [CUSTOM_TARGET_TYPE_NAME]
  annotations:
  labels:
description:
customActions:
  renderAction: [RENDER_ACTION_NAME]
  deployAction: [DEPLOY_ACTION_NAME]
  includeSkaffoldModules:

Dove

  • CUSTOM_TARGET_TYPE_NAME

    È un nome arbitrario che assegni a questa definizione del tipo di target personalizzato. Questo nome a cui viene fatto riferimento definizione del target per qualsiasi che utilizza il tipo di targeting personalizzato che stai definendo.

  • RENDER_ACTION_NAME

    Indica il nome dell'azione di rendering personalizzato. Questo valore è il customAction.name definita in skaffold.yaml per render.

  • DEPLOY_ACTION_NAME

    È il nome dell'azione di deployment personalizzato. Questo valore è il customAction.name definita in skaffold.yaml per deployment.

  • includeSkaffoldModules

    È una stanza facoltativa da utilizzare se utilizzi configurazioni Skaffold remote. La le proprietà di questa stanza sono mostrate nella sezione Utilizza configurazioni Skaffold remote.

Usa configurazioni Skaffold remote

Puoi archiviare le configurazioni Skaffold in un repository Git pubblico, nel bucket Cloud Storage o nel repository Cloud Build 2ª generazione) fare riferimento a queste configurazioni dalla definizione del tipo di target personalizzato.

L'utilizzo di configurazioni Skaffold remote significa che il skaffold.yaml che fornisci non è necessario definire azioni personalizzate per ora del rilascio. Ciò consente condividendo azioni personalizzate all'interno dell'organizzazione.

Per utilizzare le configurazioni Skaffold remote:

  1. Crea una configurazione Skaffold con azioni personalizzate.

  2. Archiviare la configurazione in un repository Git o in un nel bucket Cloud Storage.

  3. Nella definizione del tipo di target personalizzato, aggiungi una customActions.includeSkaffoldModules stanza.

  4. In includeSkaffoldModules, specifica quanto segue:

    • (Facoltativo) Uno o più elementi configs:

      - configs: ["name1", "name2"]

      Il valore di configs è un elenco di stringhe che corrispondono a metadata.name in ogni configurazione Skaffold da includere. Se questo viene omesso, Cloud Deploy accetta tutte le configurazioni nel percorso specificato.

    • Può essere una stanza googleCloudStorage, git o googleCloudBuildRepo.

      Per Cloud Storage:

      googleCloudStorage:
        source: PATH_TO_GCS_BUCKET
        path: FILENAME
      

      Per Git:

      git:
        repo: REPO_URL
        path: PATH_TO_FILE
        ref: BRANCH_NAME
      

      Per Cloud Build Repositories (2ª generazione):

       googleCloudBuildRepo:
        repository: PATH_TO_GCB_REPO
        path: PATH_TO_FILE
        ref: BRANCH_NAME
      

      Dove:

      PATH_TO_GCS_BUCKET è il percorso di una directory Cloud Storage, che termina con /*, dove sono archiviate le configurazioni Skaffold. Download di Skaffold tutti i file in questa directory trova quindi il file Skaffold pertinente le configurazioni, in base al percorso relativo configurato.

      PATH_TO_GCB_REPO è il percorso del repository Cloud Build di 2ª generazione in cui sono archiviate le configurazioni di Skaffold. Il percorso assume il seguente formato: projects/{project}/locations/{location}/connections/{connection}/repositories/{repository}. Skaffold scarica tutti i file in questa directory e poi trova lo Skaffold in base al percorso relativo configurato.

      FILENAME è il nome del file che include le configurazioni Skaffold. Questo La proprietà path: è facoltativa; se non lo specifichi, Cloud Deploy presuppone skaffold.yaml. Se non vengono skaffold.yaml o se il nome file specificato non è presente, l'elemento la creazione della release non riesce.

      REPO_URL è l'URL del repository Git.

      PATH_TO_FILE è il percorso nel repository del file contenente Configurazioni Skaffold.

      BRANCH_NAME è il nome del ramo (ad esempio main) da cui prendiamo le configurazioni di Skaffold.

Esempio

Il seguente YAML di tipo target personalizzato è una stanza customActions con un includeSkaffoldModules stanza, che punta alle configurazioni Skaffold archiviate in Bucket Cloud Storage:

customActions:
  renderAction: my-custom-action
  deployAction: my-custom-action
  includeSkaffoldModules:
    - configs: ["myConfig"]
      googleCloudStorage:
        source: "gs://my-custom-target-bucket/my-custom/*"
        path: "skaffold.yaml

Il seguente YAML è una configurazione Skaffold, di cui è mostrata l'azione personalizzata fare riferimento a:

apiVersion: skaffold/v4beta7
kind: Config
metadata:
  name: myConfig
customActions:
  - name: my-custom-action
    containers:
      - name: my-custom-container
        image: us-east1-docker.pkg.dev/abcdefg/foldername/myimage@sha256:c56fcf6e0a7637ddf0df3d56a0dd23bfce03ceca06a6fc527b0e0e7430e6e9f9

Registrare il tipo di target personalizzato

Dopo aver configurato CustomTargetType, esegui Comando gcloud deploy apply per registrare la risorsa CustomTargetType in un progetto Google Cloud:

gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]

Dove:

FILE è il nome del file in cui hai definito questo tipo di target personalizzato.

PROJECT è il progetto Google Cloud in cui creare questa risorsa. CustomTargetType deve trovarsi nello stesso progetto della risorsa Target che vi fa riferimento. Non è necessario specificare il progetto se lo hai impostato come il tuo progetto predefinito per Google Cloud CLI.

REGION è la regione (ad esempio us-centra1) in cui creare questo risorsa. CustomTargetType deve trovarsi nella stessa regione di Target risorsa che vi fa riferimento. Non è necessario specificare la regione se disponi di impostala come regione predefinita per gcloud CLI.

Ora che CustomTargetType viene creata come risorsa di Cloud Deploy, ora puoi utilizzarlo in una definizione di Target per creare il tuo target personalizzato.

Per ulteriori informazioni sulla definizione di CustomTargetType, consulta le Riferimento allo schema di configurazione di Cloud Deploy.

Definisci il target

L'unica differenza tra una definizione di destinazione per un tipo di target supportato e Una definizione di target personalizzato è che la definizione di un target personalizzato includa un customTarget stanza. La sintassi di un customTarget è la seguente:

customTarget:
  customTargetType: [CUSTOM_TARGET_TYPE_NAME]

Dove CUSTOM_TARGET_TYPE_NAME è il valore della proprietà name definito in la configurazione del tipo di target personalizzato.

Aggiungi il target alla pipeline di distribuzione

Puoi utilizzare un target personalizzato in una pipeline di distribuzione esattamente come useresti una un tipo di target supportato. Cioè, non c'è alcuna differenza nella pipeline di distribuzione avanzamento tra i target di un tipo di target supportato e quelli personalizzati.

Tutti i target in una pipeline di distribuzione devono usare lo stesso tipo di target. Ad esempio: non puoi avere una pipeline di distribuzione con alcuni target Google Kubernetes Engine e alcuni target personalizzati.

Come per i tipi di target supportati, puoi includere parametri di deployment nella fase della pipeline.

Crea una release

Dopo aver definito in modo completo il tipo di target personalizzato e creato un target per utilizzarlo di questo tipo, ora puoi creare una release, nel modo normale:

gcloud deploy releases create [RELEASE_NAME] \
  --project=[PROJECT_NAME] \
  --region=[REGION] \
  --delivery-pipeline=[PIPELINE_NAME]

Al momento della creazione della release, l'azione di rendering personalizzata viene eseguita per ogni target in la tua pipeline di distribuzione, inclusa l'elaborazione parametri di deployment configurati in release, destinazioni o la pipeline di distribuzione. Cloud Deploy fornisce parametri di deployment come input al container di rendering personalizzato.

Visualizzare l'output dei target personalizzati

Se la tua azione personalizzata soddisfa le requisiti per le destinazioni personalizzate, puoi utilizzare la console Google Cloud per visualizzare artefatti.

Per visualizzare l'output dell'azione di rendering personalizzato:

  1. Nella console Google Cloud, vai a Cloud Deploy Pagina Pipeline di distribuzione per visualizzare la pipeline di distribuzione.

    Apri la pagina Pipeline di distribuzione

  2. Fai clic sul nome della pipeline di distribuzione.

    La visualizzazione della pipeline mostra lo stato del deployment dell'app e è elencata nella scheda Release nella sezione Pipeline di distribuzione dettagli.

  3. Fai clic sul nome della release.

    Viene visualizzata la pagina Dettagli sulla release.

  4. Fai clic sulla scheda Artefatti.

  5. In Artefatti di destinazione, fai clic sulla freccia accanto a Visualizza artefatti.

    Vengono elencati gli elementi sottoposti a rendering, tra cui l'oggetto skaffold.yaml sottoposto a rendering e il file manifest sottoposto a rendering generato dal renderer personalizzato. Puoi inoltre fai clic sul link Posizione archiviazione accanto a ciascuno di essi per passare bucket Cloud Storage per visualizzare i file.

    Puoi anche fare clic sul link Visualizza elementi per visualizzare questi file per alla release, per target o per fase, utilizzando release inspector.

Passaggi successivi