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

Pianificare un upgrade

Ti consigliamo di eseguire gli upgrade di Agones aggiungendo nuovi cluster Game Servers a un realm e 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 quando si eseguono upgrade senza finestre di manutenzione. Questo approccio evita qualsiasi potenziale problema relativo al tentativo di eseguire l'upgrade di Agones mentre i giochi sono in esecuzione nel cluster.
  2. Non devi provare a eseguire l'upgrade dei nodi Kubernetes o Google Kubernetes Engine, in modo da 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, comprese le nuove versioni di Kubernetes e Agones come una singola operazione, e poi implementarle insieme in produzione.

Pianificare gli upgrade canary

Assicurati di testare la nuova versione di Agones in un ambiente non di produzione prima di applicarla in produzione. Dopo aver convalidato la nuova versione di Agones, inizia eseguendo l'upgrade di un'area di autenticazione canary in produzione. Un upgrade canary è un upgrade che viene applicato inizialmente a un numero singolo o limitato 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 dannoso per tutti i tuoi realm. Se un upgrade non va a buon fine, puoi ridurre al minimo le interruzioni per i tuoi utenti e ripristinare il realm interessato. Se non c'è un regno canary designato, scegline uno con il minimo traffico.

Eseguire un upgrade

Questa sezione descrive una procedura di upgrade che esegue la transizione di un'allocazione di 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 all'esperienza del player:

  1. Crea un nuovo cluster delle stesse dimensioni del cluster attuale.

  2. Installa la nuova versione di Agones sul nuovo cluster con una versione compatibile di Kubernetes. Per un elenco delle versioni supportate, vedi Versioni e upgrade.

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

  4. Dopo aver verificato la stabilità del nuovo cluster in esecuzione nella nuova versione di Agones, annulla la registrazione ed elimina il vecchio cluster. Quando annulli la registrazione ed elimini un cluster Game Servers, i server assegnati, i gruppi e le configurazioni del gestore della scalabilità automatica del parco risorse vengono lasciati così come sono. L'unico cambiamento significativo nel cluster Kubernetes effettivo è che non è più gestito da Game Servers e non è più connesso a multi-clusterallocation.Game Servers interrompe l'invio di nuove richieste di allocazione ai cluster non registrati.

  5. Per impedire ulteriori allocazioni al vecchio cluster se viene eseguito l'accesso diretto al relativo endpoint, rimuovi tutti i pod nel servizio allocatore del vecchio server:

    kubectl scale --replicas=0 -n agones-system deployment/agones-allocator
    
  6. Se non esistono più server allocati nel cluster, arresta il vecchio cluster. Per determinare il numero di server allocati, esegui il comando seguente, dove namespace è lo spazio dei nomi utilizzato per la registrazione del cluster Kubernetes come cluster 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 descritti in questa procedura di upgrade per ogni cluster di cui è necessario eseguire l'upgrade.