In questa pagina vengono descritte due diverse opzioni per l'implementazione di una nuova configurazione di Game Servers in fase canary. Nella fase canary, esegui il deployment della nuova configurazione a un piccolo insieme di clienti. Ciò consente di identificare potenziali problemi senza incidere su tutti gli utenti.
Il primo modo è utilizzare una regione canary. La configurazione di questa opzione è più semplice, ma un'implementazione non corretta interessa l'intera area geografica. L'altra opzione consiste nel creare un deployment canary. Questa opzione è più flessibile, ma è anche una procedura più complessa da gestire.
Prima di iniziare
Prima di iniziare, ti consigliamo di acquisire familiarità con i concetti principali nella panoramica dei server di gioco. Assicurati di aver eseguito anche le seguenti attività:
- Assicurati di aver attivato l'API Game Services. Abilita l'API Game Services
- Scegli una shell con gcloud CLI installata o utilizza un client API:
Vai alla console Google Cloud.
Nell'angolo in alto a destra della console, fai clic sul pulsante Attiva Cloud Shell:
- Crea un account di servizio.
- Scarica una chiave privata come file JSON.
-
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALS
to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.
Cloud Shell
Per avviare Cloud Shell, esegui questi passaggi:
Una sessione di Cloud Shell si apre all'interno di un frame più in basso nella console.
Utilizza questa shell per eseguire i comandi gcloud
.
Shell locale
Installare l'interfaccia a riga di comando gcloud.
Verifica di aver impostato il progetto predefinito desiderato per Google Cloud CLI (in caso contrario dovrai specificare il flag --project
in modo esplicito per ogni comando in un secondo momento):
gcloud config list project
In caso contrario, puoi eseguire il seguente comando per impostare un progetto predefinito, sostituendo PROJECT_ID
con l'ID progetto desiderato :
gcloud config set project PROJECT_ID
Esegui il comando seguente per verificare la tua versione di Google Cloud CLI.
Game Servers richiede la versione 306.0.0
o successiva dellgcloud CLI.
gcloud version
Per aggiornare l'installazione, esegui il comando seguente:
gcloud components update
curl / PowerShell
Per utilizzare l'API REST con curl
o Windows PowerShell, segui questi passaggi:
Libreria client
I server di gioco Google Cloud possono essere controllati in modo programmatico utilizzando una libreria client. Per istruzioni sull'utilizzo della libreria e l'autenticazione, consulta la panoramica sulle librerie client.
Verifica dell'integrità di un'implementazione
Assicurati di controllare l'integrità dei tuoi server in vari punti durante l'implementazione. Puoi utilizzare i dati raccolti per decidere se è sicuro continuare l'implementazione. Se i controlli di integrità rivelano un problema, è meglio mettere in pausa o annullare l'implementazione.
Puoi usare i seguenti consigli per verificare lo stato di un'implementazione:
Assicurati che lo stato delle singole istanze del server di gioco sia
Ready
.Verifica che Agones possa allocare e gestire l'intero ciclo di vita di un
GameServer
. Assicurati che il deployment principale e canaryGameServers
abbiano le stesse etichette corrispondenti al selettoreGameServerAllocation
previstorequired
, in modo che il tuo matchmaker non richieda una modifica per l'allocazione dal deployment canary. Facoltativamente, potresti assegnare in modo preferito dal parco risorse canary utilizzando l'attributo "preferred" in una specificaGameServerAllocation
.Monitora e assicurati che le metriche di gioco e di sistema pertinenti nel deployment non indichino alcun peggioramento delle prestazioni.
Implementazione in un'area geografica canary
Game Servers consente di sostituire una configurazione in uno o più aree di autenticazione. Assicurati che i cluster nella regione canary si trovino in un'area di autenticazione separata.
In questo esempio, il regno "australia" è quello canary.
Per impostare v2
come configurazione attiva nell'area di autenticazione australia
:
Copia il seguente codice in un file:
- realmsSelector: realms: - projects/games/locations/australia-southeast1/realms/australia configVersion: v2
Per applicare le modifiche, esegui il comando seguente:
gcloud game servers deployments update-rollout stk --config-overrides-file configOverrideFile --no-dry-run
dove configOverrideFile è il percorso del file con configurazione di override.
Dopo aver verificato che lo stato della regione canary è healthy, esegui il comando seguente per eseguire il deployment della nuova versione ovunque:
gcloud game servers deployments update-rollout stk --default-config "v2" --no-dry-run
Al termine dell'operazione, la configurazione v2
viene implementata ovunque.
Ora elimina l'override eseguendo il comando seguente:
gcloud game servers deployments update-rollout stk --no-dry-run --clear-config-overrides
Implementazione in un deployment canary
Puoi utilizzare un deployment separato per testare la configurazione. Inizialmente, non esiste un deployment canary riservato.
Per iniziare, crea il deployment canary:
gcloud game servers deployments create canary
Assicurati che il selettore utilizzato in GameServerAllocation sia in grado di selezionare GameServers sia dal tuo parco risorse principale sia dal parco risorse canary, in modo da non dover apportare modifiche alle strategie di allocazione attuali.
Quindi, esegui il comando seguente per creare una configurazione
v1
identica alla configurazione attiva nel deployment non canary:gcloud game servers configs create v1 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
dove fleetSpecFile è il percorso del file che contiene la specifica del parco risorse. scalingConfigFile è il percorso del file che contiene tutte le configurazioni di scalabilità.
Ti consigliamo di impostare le configurazioni di scalabilità in modo che i parchi risorse canary siano molto più piccoli dei normali parchi risorse.
Esegui questo comando per aggiornare l'implementazione canary in modo che la configurazione
v1
venga implementata ovunque:gcloud game servers deployments update-rollout canary --default-config v1 --no-dry-run
Verifica che i parchi canary siano in stato integro.
Esegui questo comando per creare la configurazione
v2
nel deployment canary:gcloud game servers configs create v2 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
dove fleetSpecFile è il percorso del file che contiene la specifica del parco risorse. scalingConfigFile è il percorso del file che contiene tutte le configurazioni di scalabilità. Ti consigliamo di configurare i parchi risorse canary in dimensioni ridotte.
Esegui questo comando per implementare la configurazione
v2
nel deployment canary:gcloud game servers deployments update-rollout canary --default-config v2 --no-dry-run
Verifica che i parchi canary siano in stato integro.
Esegui questo comando per implementare la configurazione
v2
nel deployment principale:gcloud game servers deployments update-rollout stk --default-config v2 --no-dry-run
Verifica che i parchi risorse siano integri. In questa fase,
v2
viene implementato ovunque.Esegui la pulizia del deployment canary.
Cancella l'implementazione per il deployment canary eseguendo:
gcloud game servers deployments update-rollout canary --clear-default-config --no-dry-run
Esegui questo comando per eliminare la configurazione "v1":
gcloud game servers configs delete v1 --deployment=canary
Elimina la configurazione 'v2' eseguendo questo comando:
gcloud game servers configs delete v2 --deployment=canary
Rimuovi il deployment canary eseguendo:
gcloud game servers deployments delete canary
Per un controllo più granulare su un deployment, puoi implementare una configurazione in aree selezionate utilizzando gli override, prima di impostare la configurazione come predefinita. Segui la stessa procedura per implementare la versione canary in modo più graduale.
Puoi saltare i primi tre passaggi e l'ultimo passaggio mantenendo un deployment canary permanente. Consigliamo questo approccio per le implementazioni frequenti e regolari.