Implementazione di una configurazione canary

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:
  • Cloud Shell

    Per avviare Cloud Shell, esegui questi passaggi:

    1. Vai alla console Google Cloud.

      Console Google Cloud

    2. Nell'angolo in alto a destra della console, fai clic sul pulsante Attiva Cloud Shell:

    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:

    1. Crea un account di servizio.
    2. Scarica una chiave privata come file JSON.
    3. Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS sul percorso del file JSON che contiene le tue credenziali. Questa variabile si applica solo alla sessione di shell attuale. Pertanto, se apri una nuova sessione, imposta di nuovo la variabile.

    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:

  1. Assicurati che lo stato delle singole istanze del server di gioco sia Ready.

  2. Verifica che Agones possa allocare e gestire l'intero ciclo di vita di un GameServer. Assicurati che il deployment principale e canary GameServers abbiano le stesse etichette corrispondenti al selettore GameServerAllocation 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 specifica GameServerAllocation.

  3. 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.

Architettura che utilizza un regno separato per le versioni canary

Per impostare v2 come configurazione attiva nell'area di autenticazione australia:

  1. Copia il seguente codice in un file:

    - realmsSelector:
        realms:
            - projects/games/locations/australia-southeast1/realms/australia
      configVersion: v2
    

  2. 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.

Architettura dopo l'implementazione canary

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. Architettura dopo il lancio completo

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.

Stato iniziale del deployment canary separato

  1. 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.

  2. 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.

  3. 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.

    Architettura dopo il deployment canary iniziale

  4. 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.

  5. 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.

    Architettura dopo il nuovo deployment canary

  6. 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.

    Architettura dopo il deployment

  7. Esegui la pulizia del deployment canary.

    1. Cancella l'implementazione per il deployment canary eseguendo:

      gcloud game servers deployments update-rollout canary --clear-default-config --no-dry-run
      

    2. Esegui questo comando per eliminare la configurazione "v1":

      gcloud game servers configs delete v1 --deployment=canary
      

    3. Elimina la configurazione 'v2' eseguendo questo comando:

      gcloud game servers configs delete v2 --deployment=canary
      

    4. Rimuovi il deployment canary eseguendo:

      gcloud game servers deployments delete canary
      

    Architettura dopo la pulizia

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.