Personalizzare l'ambiente di sviluppo

Questa pagina descrive i parametri di configurazione della workstation che consentono di personalizzare l'ambiente Cloud Workstations, inclusi tipo di VM, dimensioni del disco home, immagine del container di base e altro ancora. Nell'API, questi parametri di configurazione della workstation sono denominati collettivamente WorkstationConfig.

Prima di utilizzare questi parametri di configurazione della workstation, acquisisci familiarità con quanto segue:


Risorsa REST: projects.locations.workstationClusters.workstationConfigs

Risorsa: WorkstationConfig

Una risorsa di configurazione workstation nell'API Cloud Workstations.

Le configurazioni delle workstation fungono da modelli per le workstation. La configurazione della workstation definisce dettagli come il tipo di istanza di macchina virtuale (VM) workstation, l'archiviazione permanente, l'ambiente che definisce l'immagine container, l'IDE o l'editor di codice da utilizzare e altro ancora. Gli amministratori e i team della piattaforma possono anche utilizzare le regole di Identity and Access Management (IAM) per concedere l'accesso ai team o a singoli sviluppatori.

Rappresentazione JSON

{
  "name": string,
  "displayName": string,
  "uid": string,
  "reconciling": boolean,
  "annotations": {
    string: string,
    ...
  },
  "labels": {
    string: string,
    ...
  },
  "createTime": string,
  "updateTime": string,
  "deleteTime": string,
  "etag": string,
  "idleTimeout": string,
  "runningTimeout": string,
  "host": {
    object (Host)
  },
  "persistentDirectories": [
    {
      object (PersistentDirectory)
    }
  ],
  "ephemeralDirectories": [
    {
      object (EphemeralDirectory)
    }
  ],
  "container": {
    object (Container)
  },
  "encryptionKey": {
    object (CustomerEncryptionKey)
  },
  "readinessChecks": [
    {
      object (ReadinessCheck)
    }
  ],
  "replicaZones": [
    string
  ],
  "degraded": boolean,
  "conditions": [
    {
      object (Status)
    }
  ],
  "enableAuditAgent": boolean,
  "disableTcpConnections": boolean
}
Campi
name

string

Identificatore. Nome completo di questa configurazione di workstation.

displayName

string

Facoltativo. Nome leggibile per questa configurazione di workstation.

uid

string

Solo output. Un identificatore univoco assegnato dal sistema per questa configurazione della workstation.

reconciling

boolean

Solo output. Indica se la configurazione della workstation è attualmente in fase di aggiornamento in modo che corrisponda allo stato previsto.

annotations

map (key: string, value: string)

Facoltativo. Annotazioni specificate dal client.

Un oggetto contenente un elenco di "key": value coppie. Esempio: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

labels

map (key: string, value: string)

Facoltativo. Etichette che vengono applicate alla configurazione della workstation e propagate anche alle risorse Compute Engine sottostanti.

Un oggetto contenente un elenco di "key": value coppie. Esempio: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

createTime

string (Timestamp format)

Solo output. Data/ora di creazione di questa configurazione della workstation.

Un timestamp in formato "Zulu" RFC3339 UTC, con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Solo output. L'ora dell'ultimo aggiornamento di questa workstation.

Un timestamp in formato "Zulu" RFC3339 UTC, con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

deleteTime

string (Timestamp format)

Solo output. Ora in cui questa configurazione della workstation è stata eliminata temporaneamente.

Un timestamp in formato "Zulu" RFC3339 UTC, con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

etag

string

Facoltativo. Checksum calcolato dal server. Possono essere inviate in caso di richieste di aggiornamento ed eliminazione per assicurarsi che il client abbia un valore aggiornato prima di procedere.

idleTimeout

string (Duration format)

Facoltativo. Numero di secondi di attesa prima di arrestare automaticamente una workstation dopo l'ultima ricezione del traffico degli utenti.

Il valore "0s" indica che le VM Cloud Workstations create con questa configurazione non dovrebbero mai scadere a causa di inattività. Indica il valore duration terminato da s per secondi, ad esempio "7200s" (2 ore). Il valore predefinito è "1200s" (20 minuti).

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

runningTimeout

string (Duration format)

Facoltativo. Numero di secondi in cui una workstation può essere eseguita fino all'arresto automatico. Ti consigliamo di arrestare le workstation ogni giorno per ridurre i costi e in modo che gli aggiornamenti della sicurezza possano essere applicati al riavvio. I campi idleTimeout e runningTimeout sono indipendenti tra loro. Tieni presente che il campo runningTimeout arresta le VM dopo il tempo specificato, indipendentemente dal fatto che siano inattive o meno.

Indica una durata terminata da s per secondi, ad esempio "54000s" (15 ore). Il valore predefinito è "43200s" (12 ore). Il valore "0s" indica che le workstation che utilizzano questa configurazione non dovrebbero mai scadere. Se il criterio encryptionKey è impostato, deve essere maggiore di "0s" e minore di "86400s" (24 ore).

Avviso: il valore "0s" indica che le VM Cloud Workstations create con questa configurazione non hanno un tempo di esecuzione massimo. Questa operazione è vivamente sconsigliata perché comporta dei costi e non accetta aggiornamenti della sicurezza.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

host

object (Host)

Facoltativo. Host di runtime per la workstation.

persistentDirectories[]

object (PersistentDirectory)

Facoltativo. Directory per rimanere persistenti tra le sessioni della workstation.

ephemeralDirectories[]

object (EphemeralDirectory)

Facoltativo. Directory temporanee che non verranno mantenute tra le sessioni della workstation.

container

object (Container)

Facoltativo. Container che viene eseguito all'avvio per ogni workstation che utilizza questa configurazione di workstation.

encryptionKey

object (CustomerEncryptionKey)

Immutabile. Cripta le risorse di questa configurazione di workstation utilizzando una chiave di crittografia gestita dal cliente (CMEK).

Se specificato, il disco di avvio dell'istanza Compute Engine e il disco permanente vengono criptati utilizzando questa chiave di crittografia. Se questo campo non viene impostato, i dischi vengono criptati utilizzando una chiave generata. Le chiavi di crittografia gestite dal cliente non proteggono i metadati del disco.

Se la chiave di crittografia gestita dal cliente viene ruotata, quando l'istanza della workstation viene arrestata, il sistema tenta di ricreare il disco permanente con la nuova versione della chiave. Assicurati di conservare le versioni precedenti della chiave fino alla nuova creazione del disco permanente. In caso contrario, i dati sul disco permanente potrebbero andare persi.

Se la chiave di crittografia viene revocata, la sessione della workstation si interrompe automaticamente entro 7 ore.

Immutabile dopo la creazione della configurazione della workstation.

readinessChecks[]

object (ReadinessCheck)

Facoltativo. Controlli di idoneità da eseguire all'avvio di una workstation utilizzando questa configurazione della workstation. Contrassegna una workstation come in esecuzione solo dopo che tutti i controlli di idoneità specificati hanno restituito codici di stato 200.

replicaZones[]

string

Facoltativo. Immutabile. Specifica le zone utilizzate per replicare le risorse VM e disco all'interno della regione. Se viene impostato, devono essere specificate esattamente due zone all'interno della regione del cluster di workstation, ad esempio ['us-central1-a', 'us-central1-f']. Se questo campo è vuoto, vengono utilizzate due zone predefinite all'interno della regione.

Immutabile dopo la creazione della configurazione della workstation.

degraded

boolean

Solo output. Indica se le prestazioni di questa risorsa sono ridotte, nel qual caso potrebbe essere necessaria un'azione dell'utente per ripristinare la funzionalità completa. Vedi anche il campo conditions.

conditions[]

object (Status)

Solo output. Condizioni di stato che descrivono lo stato attuale della risorsa.

enableAuditAgent

boolean

Facoltativo. Se abilitare il logging di auditd di Linux sulla workstation. Se abilitato, è necessario specificare anche un account di servizio con autorizzazione logging.buckets.write per il progetto. L'audit logging del sistema operativo è diverso da Cloud Audit Logs.

disableTcpConnections

boolean

Facoltativo. Disabilita il supporto per le connessioni TCP semplici nella workstation. Per impostazione predefinita, il servizio supporta le connessioni TCP tramite un inoltro WebSocket. Se questa opzione viene impostata su true, l'inoltro viene disattivato, impedendo l'utilizzo di servizi che richiedono connessioni TCP semplici, come SSH. Quando questa opzione è abilitata, tutte le comunicazioni devono avvenire tramite HTTPS o WSS.

Host

Host di runtime per una workstation.

Rappresentazione JSON

{

  // Union field config can be only one of the following:
  "gceInstance": {
    object (GceInstance)
  }
  // End of list of possible types for union field config.
}
Campi
Campo di unione config. Tipo di host da utilizzare per il runtime della workstation. config può essere solo uno dei seguenti:
gceInstance

object (GceInstance)

Specifica un'istanza Compute Engine come host.

GceInstance

Un runtime che utilizza un'istanza Compute Engine.

Rappresentazione JSON

{
  "machineType": string,
  "serviceAccount": string,
  "serviceAccountScopes": [
    string
  ],
  "tags": [
    string
  ],
  "poolSize": integer,
  "pooledInstances": integer,
  "disablePublicIpAddresses": boolean,
  "enableNestedVirtualization": boolean,
  "shieldedInstanceConfig": {
    object (GceShieldedInstanceConfig)
  },
  "confidentialInstanceConfig": {
    object (GceConfidentialInstanceConfig)
  },
  "bootDiskSizeGb": integer,
  "accelerators": [
    {
      object (Accelerator)
    }
  ],
  "disableSsh": boolean
}
Campi
machineType

string

Facoltativo. Il tipo di macchina da utilizzare per le istanze VM, ad esempio "e2-standard-4". Per saperne di più sui tipi di macchina supportati da Cloud Workstations, consulta l'elenco dei tipi di macchina disponibili.

serviceAccount

string

Facoltativo. L'indirizzo email dell'account di servizio per le VM Cloud Workstations create con questa configurazione. Se specificato, assicurati che l'account di servizio disponga dell'autorizzazione logginglogEntries.create per il progetto, in modo da poter scrivere i log in Cloud Logging. Se utilizzi un'immagine container personalizzata, l'account di servizio deve avere l'autorizzazione Lettore Artifact Registry per eseguire il pull dell'immagine specificata.

Se in qualità di amministratore vuoi poter eseguire ssh nella VM sottostante, devi impostare questo valore su un account di servizio per il quale disponi dell'autorizzazione iam.serviceAccounts.actAs. Al contrario, se non vuoi che nessuno sia in grado di ssh nella VM sottostante, usa un account di servizio per il quale nessuno dispone di questa autorizzazione.

Se non viene configurato, le VM vengono eseguite con un account di servizio fornito dal servizio Cloud Workstations e l'immagine deve essere accessibile pubblicamente.

serviceAccountScopes[]

string

Facoltativo. Ambiti da concedere a serviceAccount. Vengono aggiunti automaticamente vari ambiti in base all'utilizzo delle funzionalità. Se specificato, gli utenti delle workstation in questa configurazione devono avere iam.serviceAccounts.actAs nell'account di servizio.

tags[]

string

Facoltativo. Tag di rete da aggiungere alle VM di Compute Engine che supportano le workstation. Questa opzione applica i tag di rete alle VM create con questa configurazione. Questi tag di rete consentono la creazione di regole firewall.

poolSize

integer

Facoltativo. Il numero di VM che il sistema deve mantenere inattive per consentire l'avvio rapido di nuove workstation per i nuovi utenti. Il valore predefinito è 0 nell'API.

pooledInstances

integer

Solo output. Numero di istanze attualmente disponibili nel pool per un avvio più rapido della workstation.

disablePublicIpAddresses

boolean

Facoltativo. Se questo criterio viene impostato su true, gli indirizzi IP pubblici delle VM vengono disattivati. Se disabiliti gli indirizzi IP pubblici, devi configurare l'accesso privato Google o Cloud NAT sulla tua rete. Se utilizzi l'accesso privato Google e usi private.googleapis.com o restricted.googleapis.com per Container Registry e Artifact Registry, assicurati di configurare i record DNS per i domini *.gcr.io e *.pkg.dev. Il valore predefinito è false (le VM hanno indirizzi IP pubblici).

enableNestedVirtualization

boolean

Facoltativo. Indica se abilitare la virtualizzazione nidificata sulle VM Cloud Workstations create utilizzando questa configurazione di workstation.

La virtualizzazione nidificata ti consente di eseguire istanze di macchine virtuali (VM) all'interno della tua workstation. Prima di attivare la virtualizzazione nidificata, considera le seguenti considerazioni importanti. Le istanze Cloud Workstations sono soggette alle stesse restrizioni delle istanze di Compute Engine:

  • Criterio dell'organizzazione: ai progetti, alle cartelle o alle organizzazioni potrebbe essere impedito di creare VM nidificate se nel criterio dell'organizzazione viene applicato il vincolo Disabilita virtualizzazione nidificata delle VM. Per saperne di più, consulta la sezione Verificare se la virtualizzazione nidificata è consentita su Compute Engine.
  • Prestazioni: le VM nidificate potrebbero registrare un calo delle prestazioni pari o superiore al 10% per i carichi di lavoro legati alla CPU e probabilmente superiore al 10% per i carichi di lavoro associati a input/output.
  • Tipo di macchina: la virtualizzazione nidificata può essere abilitata solo su configurazioni di workstation che specificano un machineType nelle serie di macchine N1 o N2.
  • GPU: la virtualizzazione nidificata potrebbe non essere abilitata sulle configurazioni di workstation con acceleratori.
  • Sistema operativo: poiché Container-Optimized OS non supporta la virtualizzazione nidificata, se la virtualizzazione nidificata è abilitata, le istanze VM di Compute Engine sottostanti si avviano da un'immagine Ubuntu LTS.
shieldedInstanceConfig

object (GceShieldedInstanceConfig)

Facoltativo. Un insieme di opzioni per le istanze schermate di Compute Engine.

confidentialInstanceConfig

object (GceConfidentialInstanceConfig)

Facoltativo. Un insieme di opzioni per le istanze Confidential VM di Compute Engine.

bootDiskSizeGb

integer

Facoltativo. Le dimensioni del disco di avvio per la VM in gigabyte (GB). La dimensione minima del disco di avvio è 30 GB. Il valore predefinito è 50 GB.

accelerators[]

object (Accelerator)

Facoltativo. Un elenco del tipo e del numero di schede dell'acceleratore associate all'istanza.

disableSsh

boolean

Facoltativo. Indica se disabilitare l'accesso SSH alla VM.

GceShieldedInstanceConfig

Un insieme di opzioni per le istanze schermate di Compute Engine.

Rappresentazione JSON

{
  "enableSecureBoot": boolean,
  "enableVtpm": boolean,
  "enableIntegrityMonitoring": boolean
}
Campi
enableSecureBoot

boolean

Facoltativo. Indica se l'istanza ha Avvio protetto abilitato.

enableVtpm

boolean

Facoltativo. Indica se nell'istanza è abilitato vTPM.

enableIntegrityMonitoring

boolean

Facoltativo. Indica se nell'istanza è abilitato il monitoraggio dell'integrità.

GceConfidentialInstanceConfig

Un insieme di opzioni per le istanze Confidential VM di Compute Engine.

Rappresentazione JSON

{
  "enableConfidentialCompute": boolean
}
Campi
enableConfidentialCompute

boolean

Facoltativo. Indica se nell'istanza è abilitato il Confidential Computing.

Acceleratore

Una scheda dell'acceleratore collegata all'istanza.

Rappresentazione JSON

{
  "type": string,
  "count": integer
}
Campi
type

string

Facoltativo. Tipo di risorsa dell'acceleratore da collegare all'istanza, ad esempio "nvidia-tesla-p100".

count

integer

Facoltativo. Numero di schede acceleratori esposte all'istanza.

PersistentDirectory

Una directory da mantenere tra le sessioni della workstation.

Rappresentazione JSON

{
  "mountPath": string,

  // Union field directory_type can be only one of the following:
  "gcePd": {
    object (GceRegionalPersistentDisk)
  }
  // End of list of possible types for union field directory_type.
}
Campi
mountPath

string

Facoltativo. Percorso di questa directory nella workstation in esecuzione.

Campo di unione directory_type. Come implementare una directory permanente. directory_type può essere solo uno dei seguenti:
gcePd

object (GceRegionalPersistentDisk)

Una PersistentDirectory supportata da un disco permanente di Compute Engine.

GceRegionalPersistentDisk

Una directory permanente supportata da un disco permanente a livello di regione di Compute Engine. Il campo persistentDirectories è ripetuto, ma può contenere una sola voce. Crea un disco permanente che si monta sulla VM della workstation alle ore /home all'avvio della sessione e si scollega alla fine. Se questo campo è vuoto, le workstation create con questa configurazione non hanno una home directory permanente.

Rappresentazione JSON

{
  "sizeGb": integer,
  "fsType": string,
  "diskType": string,
  "sourceSnapshot": string,
  "reclaimPolicy": enum (ReclaimPolicy)
}
Campi
sizeGb

integer

Facoltativo. La capacità in GB di una home directory permanente per ogni workstation creata con questa configurazione. Deve essere vuoto se è impostato sourceSnapshot.

I valori validi sono 10, 50, 100, 200, 500 o 1000. Il valore predefinito è 200. Se è inferiore a 200 GB, diskType deve essere "pd-balanced" o "pd-ssd".

fsType

string

Facoltativo. Tipo di file system con cui deve essere formattato il disco. L'immagine della workstation deve supportare questo tipo di file system. Deve essere vuoto se è impostato sourceSnapshot. Il valore predefinito è "ext4".

diskType

string

Facoltativo. Il tipo di disco permanente per la home directory. Il valore predefinito è "pd-standard".

sourceSnapshot

string

Facoltativo. Nome dello snapshot da utilizzare come origine per il disco. Se impostati, i campi sizeGb e fsType devono essere vuoti.

reclaimPolicy

enum (ReclaimPolicy)

Facoltativo. Indica se il disco permanente deve essere eliminato quando viene eliminata la workstation. I valori validi sono DELETE e RETAIN. Il valore predefinito è DELETE.

ReclaimPolicy

Valore che rappresenta cosa dovrebbe succedere al disco dopo l'eliminazione della workstation.

Enum
RECLAIM_POLICY_UNSPECIFIED Non utilizzare.
DELETE Elimina il disco permanente durante l'eliminazione della workstation.
RETAIN Conserva il disco permanente quando elimini la workstation. Un amministratore deve eliminare manualmente il disco.

EphemeralDirectory

Una directory temporanea che non verrà persistente tra le sessioni della workstation. Viene creato di recente a ogni operazione di avvio della workstation.

Rappresentazione JSON

{
  "mountPath": string,

  // Union field directory_type can be only one of the following:
  "gcePd": {
    object (GcePersistentDisk)
  }
  // End of list of possible types for union field directory_type.
}
Campi
mountPath

string

obbligatorio. Percorso di questa directory nella workstation in esecuzione.

Campo di unione directory_type. Come implementare una directory temporanea. directory_type può essere solo uno dei seguenti:
gcePd

object (GcePersistentDisk)

Una directory EphemeralDirectory supportata da un disco permanente di Compute Engine.

GcePersistentDisk

Una directory EphemeralDirectory è supportata da un disco permanente di Compute Engine.

Rappresentazione JSON

{
  "diskType": string,
  "sourceSnapshot": string,
  "sourceImage": string,
  "readOnly": boolean
}
Campi
diskType

string

Facoltativo. Tipo di disco da utilizzare. Il valore predefinito è "pd-standard".

sourceSnapshot

string

Facoltativo. Nome dello snapshot da utilizzare come origine per il disco. Deve essere vuoto se è impostato sourceImage. Deve essere vuoto se readOnly è falso. L'aggiornamento di sourceSnapshot comporterà l'aggiornamento del contenuto nella directory temporanea dopo il riavvio della workstation. Questo campo è modificabile.

sourceImage

string

Facoltativo. Nome dell'immagine disco da utilizzare come origine per il disco. Deve essere vuoto se è impostato sourceSnapshot. L'aggiornamento di sourceImage comporterà l'aggiornamento del contenuto nella directory temporanea dopo il riavvio della workstation. Questo campo è modificabile.

readOnly

boolean

Facoltativo. Indica se il disco è di sola lettura. Se il valore è true, il disco potrebbe essere condiviso da più VM e è necessario impostare sourceSnapshot.

Container

Un container Docker.

Rappresentazione JSON

{
  "image": string,
  "command": [
    string
  ],
  "args": [
    string
  ],
  "env": {
    string: string,
    ...
  },
  "workingDir": string,
  "runAsUser": integer
}
Campi
image

string

Facoltativo. Un'immagine container Docker che definisce un ambiente personalizzato.

Cloud Workstations fornisce una serie di immagini preconfigurate, ma puoi creare le tue immagini container personalizzate. Se utilizzi un'immagine privata, il campo host.gceInstance.serviceAccount deve essere specificato nella configurazione della workstation. Se utilizzi un'immagine container personalizzata, l'account di servizio deve avere l'autorizzazione Lettore Artifact Registry per eseguire il pull dell'immagine specificata. In caso contrario, l'immagine deve essere accessibile pubblicamente.

command[]

string

Facoltativo. Se impostato, sostituisce il valore predefinito di ENTRYPOINT specificato dall'immagine.

args[]

string

Facoltativo. Argomenti passati al punto di ingresso.

env

map (key: string, value: string)

Facoltativo. Variabili di ambiente passate al punto di ingresso del container.

Un oggetto contenente un elenco di "key": value coppie. Esempio: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

workingDir

string

Facoltativo. Se impostato, sostituisce il valore predefinito di DIR specificato dall'immagine.

runAsUser

integer

Facoltativo. Se impostato, sostituisce l'utente specificato nell'immagine con l'uid indicato.

CustomerEncryptionKey

Una chiave di crittografia gestita dal cliente (CMEK) per le risorse Compute Engine della configurazione della workstation associata. Specifica il nome della tua chiave di crittografia Cloud KMS e l'account di servizio predefinito. Ti consigliamo di utilizzare un account di servizio separato e di seguire le best practice di Cloud KMS.

Rappresentazione JSON

{
  "kmsKey": string,
  "kmsKeyServiceAccount": string
}
Campi
kmsKey

string

Immutabile. Il nome della chiave di crittografia di Google Cloud KMS. Ad esempio, "projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME". La chiave deve trovarsi nella stessa regione della configurazione della workstation.

kmsKeyServiceAccount

string

Immutabile. L'account di servizio da utilizzare con la chiave KMS specificata. Ti consigliamo di utilizzare un account di servizio separato e di seguire le best practice KMS. Per ulteriori informazioni, consulta gli articoli Separazione dei compiti e gcloud kms keys add-iam-policy-binding --member.

ReadinessCheck

Un controllo di idoneità da eseguire su una workstation.

Rappresentazione JSON

{
  "path": string,
  "port": integer
}
Campi
path

string

Facoltativo. Percorso a cui deve essere inviata la richiesta.

port

integer

Facoltativo. Porta a cui deve essere inviata la richiesta.

Metodi

create

Crea una nuova configurazione di workstation.

delete

Elimina la configurazione della workstation specificata.

get

Restituisce la configurazione della workstation richiesta.

getIamPolicy

Ottieni il criterio di controllo dell'accesso per una risorsa.

list

Restituisce tutte le configurazioni di workstation nel cluster specificato.

listUsable

Restituisce tutte le configurazioni di workstation nel cluster specificato in cui il chiamante dispone dell'autorizzazione "workstations.workstation.create".

patch

Aggiorna la configurazione di una workstation esistente.

setIamPolicy

Imposta il criterio di controllo dell'accesso sulla risorsa specificata.

testIamPermissions

Restituisce le autorizzazioni di cui un chiamante dispone per la risorsa specificata.