Cloud Workstations ti consente di creare e utilizzare immagini personalizzate per le tue stazioni di lavoro. Una volta che un'immagine personalizzata è in uso, è utile automatizzare una ricostruzione dell'immagine personalizzata per incorporare le correzioni e gli aggiornamenti disponibili nelle immagini di base.
In questo tutorial imparerai a creare una pipeline automatica per assicurarti di includere aggiornamenti e patch di sicurezza nelle immagini delle workstation personalizzate.
Obiettivi
Seguendo questo tutorial, puoi creare una pipeline automatica per l'immagine di base con i seguenti passaggi:
- Crea un repository Artifact Registry per archiviare e analizzare l'immagine personalizzata.
- Configura GitHub con Google Cloud per archiviare le configurazioni delle immagini.
- Crea un trigger di Cloud Build per automatizzare la creazione e il deployment delle immagini personalizzate in Artifact Registry.
- Configura Cloud Scheduler per avviare le build regolarmente.
- Esamina i risultati dei processi automatici.
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.
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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.
- Install the Google Cloud CLI.
-
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.
Imposta l'ID progetto per il progetto cloud che prevedi di utilizzare:
PROJECT_ID=$PROJECT_ID
Imposta il nome utente GitHub in cui prevedi di archiviare il repository:
GITHUB_USER=$GITHUB_ID
Imposta le variabili
PROJECT_NUMBER
eREGION
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 prevedi di 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 e scansionare le immagini.
Crea un repository con il seguente comando:
gcloud artifacts repositories create custom-images \ --repository-format=docker \ --location=$REGION \ --description="Docker repository"
Sostituisci $REGION con il nome della regione che prevedi di utilizzare.
Configura Docker in modo che utilizzi le credenziali dell'interfaccia a riga di comando
gcloud
quando acceda ad Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.dev
Per disattivare l'Artifact Analysis, esegui il seguente comando:
gcloud services disable containerscanning.googleapis.com
Configura il tuo repository GitHub
In pratica, mantieni il Dockerfile per le tue immagini personalizzate in un repository Git. Il procedura automatica accede a questo repository durante il processo di compilazione per recuperare le configurazioni e il Dockerfile pertinenti.
Crea un fork del repository di esempio
Per eseguire il fork di un repository di esempio che fornisce definizioni dei contenitori, segui questi passaggi:
- Fai clic su questo link per creare un nuovo fork del repository
software-delivery-workshop
. - Se richiesto, accedi a GitHub.
- Seleziona il tuo nome utente GitHub come proprietario. Il nome del repository viene visualizzato come
software-delivery-workshop
. - 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 la procedura. Non è necessario creare l'attivatore nell'ultimo passaggio della procedura guidata e puoi saltare gli ultimi passaggi perché puoi farlo in un secondo momento dalla riga di comando.
Se utilizzi una soluzione di repository Git diversa, puoi anche seguire le istruzioni per connettere Cloud Build a GitLab o Bitbucket.
Creare un trigger di Cloud Build
Il repository di esempio contiene una definizione del contenitore e una configurazione di Cloud Build utilizzata per creare l'immagine container. In questo passaggio crei un attivatore Cloud Build che esegue le istruzioni nel file cloudbuild.yaml
che puoi trovare nella cartella 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 denominatocustom-image-trigger
, come indicato dal flagname
nella seconda riga. - Le tre righe successive contengono flag relativi al repository GitHub di origine:
- Percorso del repository
- Tipo di repository
- Ramo Git da compilare
- 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 del repository Artifact Registry,
$_AR_REPO_NAME
- Nome dell'immagine container,
$_AR_IMAGE_NAME
- Posizione del Dockerfile da compilare,
$_IMAGE_DIR
Visualizza il file cloudbuild.yaml per vedere come vengono utilizzate queste variabili nel processo.
- Regione,
Dopo aver creato l'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 aggiornamenti e le patch più recenti, utilizza Cloud Scheduler per eseguire l'attivatore Cloud Build con una frequenza impostata. Per questo tutorial, il job viene eseguito ogni giorno. In pratica, imposta una frequenza in linea con le esigenze della tua organizzazione per contribuire a garantire che vengano sempre inclusi gli aggiornamenti più recenti.
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"
Concedi un ruolo necessario all'account di servizio Cloud Build per caricare le immagini in Artifact Registry:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role="roles/artifactregistry.admin"
Crea il job Cloud Scheduler con il seguente comando:
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
Il job è impostato per essere eseguito una volta al giorno. Tuttavia, per testare immediatamente la funzionalità, esegui il job manualmente da Cloud Scheduler:
- Nella pagina Cloud Scheduler, individua la voce appena creata chiamata run-build.
- Nella colonna Azioni, fai clic sul menu opzioni more_vertAltro per la riga in questione.
- Fai clic su Forza l'esecuzione di un job per testare il sistema manualmente.
Dopo l'esecuzione del comando, vai alla pagina della cronologia di Cloud Build per esaminare l'avanzamento:
Esaminare i risultati
Poiché hai attivato l'API Container Scanning durante la procedura di configurazione, Artifact Registry analizza automaticamente le immagini per rilevare eventuali vulnerabilità di sicurezza.
Per esaminare le vulnerabilità:
Apri la pagina Repository di Artifact Registry:
Nell'elenco dei repository, fai clic su un repository.
Fai clic sul nome di un'immagine. I totali delle vulnerabilità per ogni digest dell'immagine vengono visualizzati nella colonna Vulnerabilità.
Per visualizzare l'elenco delle vulnerabilità di un'immagine, fai clic sul link nella colonna Vulnerabilità. L'elenco delle vulnerabilità mostra la gravità, la disponibilità di una correzione e il nome del pacchetto che contiene la 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 dall'gcloud
CLI:
Console
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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
Passaggi successivi
- Esamina l'elenco delle immagini di base predefinite disponibili.
- Personalizzare le immagini container.
- Esamina i tipi di macchine disponibili.
- Configurare le best practice per la sicurezza.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.