Automatizza la ricreazione delle immagini container per sincronizzare gli aggiornamenti delle immagini di base


Cloud Workstations ti consente di creare e utilizzare soluzioni immagini per le tue workstation. Quando un'immagine personalizzata è in uso, è utile automatizzare la rigenerazione per recuperare le correzioni e gli aggiornamenti disponibili nelle immagini di base.

In questo tutorial imparerai a creare una pipeline automatizzata per garantire di includere aggiornamenti e patch di sicurezza nelle immagini delle workstation personalizzate.

Obiettivi

Seguendo questo tutorial, creerai una pipeline automatizzata per l'immagine di base seguendo questi passaggi:

  1. Crea un repository Artifact Registry per archiviare e scansionare la tua immagine personalizzata.
  2. Configura GitHub con Google Cloud per archiviare le configurazioni delle tue immagini.
  3. Crea un trigger di Cloud Build per automatizzare la creazione e il deployment di immagini personalizzate in Artifact Registry.
  4. Configura Cloud Scheduler per avviare le build regolarmente.
  5. Esamina i risultati dei processi automatizzati.

Costi

In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Prepara l'ambiente

Prima di procedere, assicurati di impostare le seguenti variabili di ambiente.

  1. Imposta l'ID progetto per il progetto cloud che intendi utilizzare:

    PROJECT_ID=$PROJECT_ID
    
  2. Imposta il nome utente GitHub in cui prevedi di archiviare il repository:

    GITHUB_USER=$GITHUB_ID
    
  3. Imposta le variabili PROJECT_NUMBER e REGION da utilizzare durante la procedura:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
        --format='value(projectNumber)')
    
    REGION=$REGION
    

    Nell'esempio precedente, sostituisci $REGION con il nome della regione che intendi utilizzare, ad esempio us-central1.

    Per ulteriori informazioni sulle regioni disponibili, consulta Località di Cloud Workstations.

Crea un repository Artifact Registry

In questo tutorial utilizzerai Artifact Registry per archiviare ed eseguire la scansione delle tue immagini.

  1. Crea un repository con il comando seguente:

    gcloud artifacts repositories create custom-images \
          --repository-format=docker \
          --location=$REGION \
          --description="Docker repository"
    

    Sostituisci $REGION con il nome della regione che prevedi per l'utilizzo.

  2. Configura Docker in modo che utilizzi le tue credenziali dell'interfaccia a riga di comando di gcloud quando quando accede ad Artifact Registry.

    gcloud auth configure-docker $REGION-docker.pkg.dev
    

    Per disattivare Artifact Analysis, esegui questo comando:

    gcloud services disable containerscanning.googleapis.com
    

Configura il repository GitHub

In pratica, mantieni il Dockerfile per le tue immagini personalizzate in un repository Git. La Il processo automatizzato accede al repository durante il processo di compilazione per eseguire il pull configurazioni pertinenti e Dockerfile.

Crea un fork del repository di esempio

Per creare un fork di un repository di esempio che fornisce definizioni di container, segui questi passaggi passaggi:

  1. Fai clic su questo link per creare un nuovo fork del repository software-delivery-workshop.
  2. Se richiesto, accedi a GitHub.
  3. Seleziona il tuo nome utente GitHub come proprietario. Il nome del repository viene visualizzato software-delivery-workshop.
  4. Fai clic su Crea fork e attendi qualche secondo per il completamento del processo.

connetti Cloud Build a GitHub

Successivamente, connetti il repository a Cloud Build utilizzando la funzionalità di connessione GitHub integrata. Fai clic sul link al repository GitHub e segui le istruzioni che descrivono come completare il processo. Non è necessario creare il trigger nell'ultimo passaggio della procedura guidata e puoi saltare passaggi perché puoi farlo in un secondo momento dalla riga di comando.

Se utilizzi una soluzione di repository Git diversa, puoi anche seguire la istruzioni per connettere Cloud Build a GitLab o Bitbucket.

crea un trigger di Cloud Build

Il repository di esempio contiene una definizione di container e un Cloud Build utilizzata per creare l'immagine container. In questo passaggio creerai Trigger di Cloud Build che esegue le istruzioni nel cloudbuild.yaml che puoi trovare nel labs/cloudbuild-scheduled-jobs/code-oss-java .

gcloud builds triggers create manual \
    --name=custom-image-trigger \
    --repo=$GITHUB_USER/software-delivery-workshop \
    --repo-type=GITHUB \
    --branch=main \
    --build-config=labs/cloudbuild-scheduled-jobs/code-oss-java/cloudbuild.yaml \
    --substitutions=_REGION=$REGION,_AR_REPO_NAME=custom-images,_AR_IMAGE_NAME=code-oss-java,_IMAGE_DIR=labs/cloudbuild-scheduled-jobs/code-oss-java

TRIGGER_ID=$(gcloud builds triggers list \
    --filter=name="custom-image-trigger" --format="value(id)")

Questo esempio configura quanto segue:

  • Il comando gcloud CLI crea un attivatore manuale in Cloud Build denominato custom-image-trigger, come indicato dal flag name nella seconda riga.
  • Le tre righe successive contengono flag relativi al repository GitHub di origine:
  • Il flag build-config indica il percorso del file Cloud Build nel repository Git.
  • Per rendere dinamico il job, utilizza il flag substitutions. Per questo job, il comando trasmette le seguenti variabili:

    • Regione, $_REGION
    • Nome repository Artifact Registry, $_AR_REPO_NAME
    • Nome dell'immagine container, $_AR_IMAGE_NAME
    • Percorso del Dockerfile da creare, $_IMAGE_DIR

    Visualizza cloudbuild.yaml per vedere come vengono utilizzate queste variabili nel processo.

  • Dopo la creazione dell'attivatore, il nome univoco dell'attivatore viene recuperato e archiviato nella variabile di ambiente $TRIGGER_ID per un uso futuro.

Configura Cloud Scheduler

Per assicurarti che le immagini siano aggiornate con gli ultimi aggiornamenti e utilizzare Cloud Scheduler per eseguire Cloud Build si attivano a una frequenza preimpostata. Per questo tutorial, il job viene eseguito ogni giorno. In pratica, imposta una frequenza in linea con le esigenze della tua organizzazione per assicurarti che vengano sempre inclusi gli aggiornamenti più recenti.

  1. Concedi un ruolo obbligatorio all'account di servizio predefinito per invocare l'trigger Cloud Build:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/cloudbuild.builds.editor"
    
  2. Concedi all'account di servizio Cloud Build un ruolo obbligatorio da caricare in Artifact Registry:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
        --role="roles/artifactregistry.admin"
    
  3. Crea il job Cloud Scheduler con il comando seguente:

    gcloud scheduler jobs create http run-build \
        --schedule='0 1 * * *' \
        --uri=https://cloudbuild.googleapis.com/v1/projects/$PROJECT_ID/locations/global/triggers/$TRIGGER_ID:run \
        --location=us-central1 \
        --oauth-service-account-email=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --oauth-token-scope=https://www.googleapis.com/auth/cloud-platform
    
  4. Il job è impostato per essere eseguito una volta al giorno. Tuttavia, per testare eseguire il job manualmente Cloud Scheduler:

    Vai a Cloud Scheduler

    1. Nella pagina Cloud Scheduler, individua la voce appena creata chiamato run-build.
    2. Nella colonna Azioni, fai clic sul menu opzioni more_vertAltro corrispondente riga di comando.
    3. Fai clic su Forza l'esecuzione di un job per testare il sistema manualmente.
    4. Una volta eseguito correttamente il comando, passa alla Pagina Cronologia di Cloud Build per esaminare l'avanzamento:

      Vai alla cronologia di Cloud Build

Esaminare i risultati

Perché hai abilitato l'API Container Scanning nell'ambito della configurazione processo, Artifact Registry analizza automaticamente le immagini per verificare le vulnerabilità.

Per esaminare le vulnerabilità:

  1. Apri la pagina Repository Artifact Registry:

    Vai ai repository di Artifact Registry

  2. Nell'elenco dei repository, fai clic su un repository.

  3. Fai clic sul nome di un'immagine. I totali delle vulnerabilità per ogni digest immagine sono visualizzati in nella colonna Vulnerabilità.

    Pagina dei repository Artifact Registry che mostra un nome immagine di esempio

  4. Per visualizzare l'elenco delle vulnerabilità di un'immagine, fai clic sul link nella Colonna Vulnerabilità. L'elenco delle vulnerabilità mostra gravità, la disponibilità di una correzione e il nome del pacchetto vulnerabilità.

    Pagina Vulnerabilità di Artifact Registry che mostra un elenco di esempio di vulnerabilità

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate su questa pagina, ricordati di eliminare le risorse di cui non hai più bisogno.

Per eliminare un progetto Google Cloud dalla console Google Cloud o Interfaccia a riga di comando gcloud:

Console

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

gcloud

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Per saperne di più sull'eliminazione di altre risorse, come cluster di workstation, configurazioni di workstation e workstation, consulta Eliminare le risorse.

Passaggi successivi