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:
Rufen Sie die Google Cloud Console auf.
Klicken Sie in der oberen rechten Ecke der Console auf die Schaltfläche Cloud Shell aktivieren:
- Erstellen Sie ein Dienstkonto:
- Laden Sie einen privaten Schlüssel als JSON-Datei herunter.
-
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.
Cloud Shell
So starten Sie Cloud Shell:
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:
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:
- 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.
- 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.
- 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:
Erstellen Sie einen neuen Cluster mit der gleichen Größe wie der des aktuellen Clusters.
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.
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.
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.
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
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.