Upgrade di Agones

In questa pagina viene spiegato come eseguire l'upgrade in sicurezza dei cluster Agones for Game Servers.

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

    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.

Pianificare un upgrade

Ti consigliamo di eseguire gli upgrade di Agones aggiungendo nuovi cluster di Game Servers a un regno e poi rimuovendo quelli precedenti. Questo approccio presenta i seguenti vantaggi:

  1. In linea con le best practice consigliate dal progetto Agones, per creare un nuovo cluster durante l'esecuzione di upgrade senza periodi di manutenzione. Questo approccio evita potenziali problemi relativi al tentativo di eseguire l'upgrade di Agones mentre i giochi sono in esecuzione sul cluster.
  2. Non è necessario cercare di eseguire l'upgrade dei nodi Kubernetes o Google Kubernetes Engine, quindi puoi evitare problemi come quelli associati alla rimozione di un nodo dal servizio.
  3. Puoi testare un numero maggiore di componenti nell'ambito del processo di upgrade, incluse nuove versioni di Kubernetes e Agones come una singola operazione, quindi implementarle in produzione insieme.

Pianificare upgrade canary

Assicurati di testare la nuova versione di Agones in un ambiente non di produzione prima di applicarla alla produzione. Dopo aver convalidato la nuova versione di Agones, inizia con l'upgrade di un'area canary in produzione. Un upgrade canary è un upgrade che viene applicato inizialmente a un singolo o piccolo numero di aree di autenticazione. Gli upgrade canary ti consentono di testare le nuove funzionalità su una piccola percentuale della tua infrastruttura, anziché implementare un upgrade potenzialmente invasivo per tutti i tuoi domini. Se un upgrade non va bene, puoi ridurre al minimo le interruzioni per i tuoi utenti ed eseguire il rollback dell'area di autenticazione interessata. Se non esiste un regno canary designato, scegline uno con il minor traffico.

Esecuzione di un upgrade

Questa sezione descrive una procedura di upgrade che esegue la transizione di un'allocazione GameServer da un cluster con la versione precedente di Agones a un cluster con la versione aggiornata di Agones. La procedura di upgrade presuppone che tu abbia configurato l'allocazione multicluster nel nuovo cluster.

I passaggi seguenti consentono anche di eseguire facilmente il rollback all'infrastruttura precedente che sai che è in produzione, con interruzioni minime dell'esperienza del player:

  1. Crea un nuovo cluster della stessa dimensione del cluster attuale.

  2. Installare la nuova versione di Agones nel nuovo cluster con una versione compatibile di Kubernetes. Per un elenco delle versioni supportate, consulta Versioni e upgrade.

  3. Registra il nuovo cluster nel regno. In questo modo vengono create risorse del parco risorse e del gestore della scalabilità automatica simili ai cluster esistenti registrati nel regno. Quando i parchi risorse sono pronti, alcune sessioni di gioco corrispondenti dei giocatori vengono inviate al nuovo cluster.

  4. Dopo aver verificato la stabilità del nuovo cluster che esegue la nuova versione di Agones, annulla la registrazione ed elimina il vecchio cluster. Quando annulli la registrazione e elimini un cluster di Game Servers, i server, i parchi risorse e le configurazioni del gestore della scalabilità automatica del parco risorse lasciati invariati. L'unica modifica notevole sul cluster Kubernetes effettivo è che non è più gestita dai Game Servers e non è più collegata all'allocazione multi-cluster.Game Servers non invia più nuove richieste di allocazione ai cluster non registrati.

  5. Per impedire ulteriori allocazioni al vecchio cluster se si accede direttamente al relativo endpoint associato, rimuovi tutti i pod nel servizio allocatore del vecchio server:

    kubectl scale --replicas=0 -n agones-system deployment/agones-allocator
    
  6. Quando non esistono più server allocati nel cluster, arresta il vecchio cluster. Per determinare il numero di server allocati, esegui il comando seguente, in cui namespace è lo spazio dei nomi utilizzato per la registrazione del cluster Kubernetes come cluster di Game Servers:

    kubectl get fleet --namespace namespace
    
    NAME         SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-1      Packed       10        10        0           10      2d23h
    
    

Ripeti i passaggi di questa procedura di upgrade per ogni cluster che deve essere sottoposto ad upgrade.