Agones upgraden

Auf dieser Seite wird erläutert, wie Sie Agones für Game Servers-Cluster sicher aktualisieren können.

Hinweis

Bevor Sie beginnen, sollten Sie sich mit den wichtigsten Konzepten in der Übersicht über Game Servers vertraut machen. Führen Sie außerdem die folgenden Aufgaben aus:

  • Prüfen Sie, ob die Game Services API aktiviert ist.
  • Spieledienst-API aktivieren
  • Wählen Sie eine Shell mit installierter gcloud CLI aus oder verwenden Sie einen API-Client:
  • Cloud Shell

    So starten Sie Cloud Shell:

    1. Rufen Sie die Google Cloud Console auf.

      Google Cloud Console

    2. Klicken Sie in der oberen rechten Ecke der Console auf die Schaltfläche Cloud Shell aktivieren:

    In einem Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet. Mit dieser Shell führen Sie gcloud-Befehle aus.

    Lokale Shell

    Installieren Sie die gcloud CLI.

    Prüfen Sie, ob Sie das gewünschte Standardprojekt für die Google Cloud CLI festgelegt haben. Andernfalls müssen Sie das Flag --project später für jeden Befehl explizit angeben:

    gcloud config list project
    

    Wenn Sie den folgenden Befehl nicht ausführen können, um ein Standardprojekt festzulegen, ersetzen Sie PROJECT_ID durch Ihre gewünschte Projekt-ID:

    gcloud config set project PROJECT_ID
    

    Führen Sie den folgenden Befehl aus, um Ihre Version der Google Cloud CLI zu verifizieren. Für Game Servers ist Version 306.0.0 oder höher der gcloud CLI erforderlich.

    gcloud version
    

    Aktualisieren Sie Ihre Installation mit dem folgenden Befehl:

    gcloud components update
    

    curl / PowerShell

    So verwenden Sie die REST API mit curl oder Windows PowerShell:

    1. Erstellen Sie ein Dienstkonto:
    2. Laden Sie einen privaten Schlüssel als JSON-Datei herunter.
    3. Legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS auf den Pfad der JSON-Datei fest, die Ihre Anmeldedaten enthält. Diese Variable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable neu festlegen.

    Clientbibliothek

    Google Cloud Game Servers können mithilfe einer Clientbibliothek programmatisch gesteuert werden. Wie Sie die Bibliothek und die Authentifizierung verwenden, erfahren Sie in der Übersicht zu Clientbibliotheken.

Upgrade planen

Wir empfehlen, Agones-Upgrades auszuführen, indem Sie einem Bereich neue Game Servers-Cluster hinzufügen und dann die alten entfernen. Dieser Ansatz bietet folgende Vorteile:

  1. Er entspricht den für das Agones-Projekt empfohlenen Best Practices zur Erstellung eines neuen Clusters, wenn Sie Upgrades ohne Wartungsfenster ausführen. Dieser Ansatz vermeidet mögliche Probleme im Zusammenhang mit dem Upgrade von Agones, während Spiele auf dem Cluster ausgeführt werden.
  2. Sie müssen bestehende Kubernetes- oder Google Kubernetes Engine-Knoten nicht aktualisieren und vermeiden so Probleme, die beispielsweise durch das Entfernen eines Knotens aus dem Dienst entstehen.
  3. Sie können im Rahmen des Upgrades eine größere Anzahl von Komponenten in einem Vorgang testen, einschließlich neuer Versionen von Kubernetes und Agones, und diese dann gemeinsam in der Produktion einführen.

Canary-Upgrades planen

Testen Sie die neue Agones-Version in einer Nicht-Produktionsumgebung, bevor Sie diese auf die Produktion anwenden. Nachdem Sie die neue Agones-Version geprüft haben, aktualisieren Sie einen Canary-Bereich in der Produktion. Ein Canary-Upgrade ist ein Upgrade, das anfänglich auf einen einzelnen Bereich oder eine kleine Anzahl von Bereichen angewendet wird. Mit Canary-Upgrades können Sie neue Funktionen nur für einen kleinen Prozentsatz Ihrer Infrastruktur testen, anstatt ein möglicherweise störendes Upgrade für alle Bereiche auszuführen. Wenn ein Upgrade nicht so gut läuft, können Sie die Störung Ihrer Nutzer so minimieren und ein Rollback für den betroffenen Bereich durchführen. Wenn es keinen bestimmten Canary-Bereich gibt, wählen Sie den Bereich mit dem geringsten Traffic aus.

Upgrade durchführen

In diesem Abschnitt wird ein Upgradeverfahren beschrieben, mit dem eine GameServer-Zuweisung von einem Cluster mit der alten Version von Agones auf einen Cluster mit der aktualisierten Version von Agones übertragen wird. Für das Upgrade wird davon ausgegangen, dass Sie die Multicluster-Zuweisung im neuen Cluster konfiguriert haben.

Mit den folgenden Schritten können Sie mit minimalen Auswirkungen auf das Spielerlebnis ganz einfach ein Rollback auf die vorherige Infrastruktur ausführen, von der Sie wissen, dass sie in der Produktion funktioniert:

  1. Erstellen Sie einen neuen Cluster mit der gleichen Größe wie der des aktuellen Clusters.

  2. Installieren Sie die neue Version von Agones auf dem neuen Cluster mit einer kompatiblen Version von Kubernetes. Eine Liste der unterstützten Versionen finden Sie unter Versionen und Upgrades.

  3. Registrieren Sie den neuen Cluster in dem Bereich. Dadurch werden Flotten- und Autoscaling-Ressourcen erstellt, die den bestehenden, im Bereich registrierten Clustern ähnlich sind. Nachdem die Flotten fertig sind, werden einige passende Spielesitzungen zum neuen Cluster gesendet.

  4. Nachdem Sie die Stabilität des neuen Clusters, auf dem die neue Version von Agones ausgeführt wird, geprüft haben, heben Sie die Registrierung des alten Clusters auf und löschen Sie ihn. Wenn Sie die Registrierung eines Game Servers-Clusters aufheben und ihn löschen, bleiben die zugewiesenen Server, Flotten und Flotten-Autoscaling-Konfigurationen unverändert. Die einzig sichtbare Änderung beim tatsächlichen Kubernetes-Cluster ist, dass er nicht mehr von Game Servers verwaltet wird und nicht mehr mit der Multicluster-Zuweisung verbunden ist. Game Servers sendet keine neuen Zuweisungsanfragen an nicht registrierte Cluster.

  5. Um zusätzliche Zuweisungen für den alten Cluster zu verhindern, wenn auf den zugehörigen Endpunkt direkt zugegriffen wird, entfernen Sie alle Pods im Zuweisungsdienst des alten Servers:

    kubectl scale --replicas=0 -n agones-system deployment/agones-allocator
    
  6. Wenn sich keine zugewiesenen Server mehr im Cluster befinden, fahren Sie den alten Cluster herunter. Um die Anzahl der zugewiesenen Server zu ermitteln, führen Sie den folgenden Befehl aus, wobei namespace der Namespace ist, den Sie bei der Registrierung des Kubernetes-Clusters als Game Servers-Cluster verwendet haben:

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

Wiederholen Sie die Schritte in diesem Upgradeverfahren für jeden Cluster, der aktualisiert werden muss.