Implementazione di una configurazione canary

In questa pagina vengono descritte due diverse opzioni per l'implementazione di una nuova configurazione di Game Servers con fase canary. Nella fase canary, esegui il deployment della nuova configurazione per un piccolo insieme di clienti. In questo modo puoi identificare potenziali problemi senza avere impatto su tutti i tuoi utenti.

Il primo modo è utilizzare un'area geografica canary. La configurazione di questa opzione è più semplice, ma un'implementazione non valida influisce sull'intera area geografica. L'altra opzione consiste nel creare un deployment canary. Questa opzione è più flessibile, ma è anche un processo più complesso da gestire.

Prima di iniziare

Prima di iniziare, ti consigliamo di familiarizzare 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 installato o utilizza un client API:
  • Cloud Shell

    Per avviare Cloud Shell, esegui questi passaggi:

    1. Vai a Google Cloud Console.

      Google Cloud console

    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 inferiore nella console. Puoi utilizzare questa shell per eseguire comandi gcloud.

    Profilo locale

    Installa l'interfaccia a riga di comando gcloud.

    Verifica di avere impostato il progetto predefinito desiderato per l'interfaccia a riga di comando di Google Cloud, altrimenti dovrai specificare esplicitamente il flag --project per ogni comando in un secondo momento:

    gcloud config list project
    

    In caso contrario, puoi eseguire il comando seguente per impostare un progetto predefinito, sostituendo PROJECT_ID con l'ID progetto desiderato :

    gcloud config set project PROJECT_ID
    

    Esegui questo comando per verificare la tua versione dell'interfaccia a riga di comando di Google Cloud. Game Servers richiede la versione 306.0.0 o successiva dell'interfaccia a riga di comando gcloud.

    gcloud version
    

    Per aggiornare l'installazione, esegui questo comando:

    gcloud components update
    

    curl / PowerShell

    Per utilizzare l'API REST con curl o Windows PowerShell, procedi come segue:

    1. Creare 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 la chiave dell'account di servizio. Questa variabile si applica solo alla sessione shell corrente, quindi se apri una nuova sessione, impostala di nuovo.

    Libreria client

    I server di gioco Google Cloud possono essere controllati a livello di programmazione mediante una libreria client. Consulta la Panoramica sulle librerie client per istruzioni sull'utilizzo della libreria e sull'autenticazione.

Verificare lo stato di un'implementazione

Assicurati di verificare l'integrità dei tuoi server in vari momenti 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 utilizzare i seguenti consigli per verificare lo stato di un'implementazione:

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

  2. Verifica che Agones possa allocare e gestire l'intero ciclo di vita di un GameServer. Assicurati che sia il deployment principale che il deployment canary GameServers abbiano le stesse etichette che corrispondono al selettore GameServerAllocation required previsto, in modo che il tuo autore delle corrispondenze non debba apportare una modifica all'allocazione dal deployment canary. Se vuoi, puoi eseguire l'assegnazione preferenziale dal parco canary utilizzando l'attributo "preferred" in una specifica GameServerAllocation.

  3. Monitora e assicurati che le metriche di sistema e di gioco pertinenti nel deployment non indichino una riduzione delle prestazioni.

Implementazione in una regione canary

Game Servers consente di sostituire una configurazione in uno o più realm. Assicurati che i cluster nell'area geografica canary si trovino in un realm separato.

In questo esempio, il "regno" australiano è il regno canary.

Architettura che utilizza un realm 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 sostituzione.

Architettura dopo l'implementazione canary

Dopo aver verificato che l'area geografica canary è in stato integro, 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 di v2 viene implementata ovunque. Architettura dopo il lancio completo

Ora correggi l'override eseguendo questo comando:

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

Stato iniziale del deployment canary separato

  1. Per prima cosa, 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 canary, in modo che non siano richieste modifiche alle strategie di allocazione correnti.

  2. Infine, esegui il comando seguente per creare una configurazione v1 identica a la 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 gruppi canary siano {0}molto più piccoli dei normali veicoli.

  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 gruppi canary siano integri.

    Architettura dopo il deployment canary iniziale

  4. Esegui il comando seguente 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 gruppi canary di dimensioni ridotte.

  5. Esegui il comando seguente per implementare la configurazione v2 nel deployment canary:

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

    Verifica che i gruppi canary siano integri.

    Architettura dopo il nuovo deployment canary

  6. Esegui il comando seguente per implementare la configurazione v2 nel deployment principale:

    gcloud game servers deployments update-rollout stk --default-config v2 --no-dry-run
    

    Verifica che il parco risorse sia integro. In questa fase, il deploymentv2 viene implementato ovunque.

    Architettura dopo il deployment

  7. Pulisci il 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 il comando seguente per eliminare la configurazione 'v1':

      gcloud game servers configs delete v1 --deployment=canary
      

    3. Elimina la configurazione 'v2' eseguendo:

      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 per le aree di autenticazione 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 mantenendo un deployment canary in piedi. Consigliamo di adottare questo approccio per implementazioni frequenti e regolari.