Canary-Konfiguration einführen

Auf dieser Seite werden zwei unterschiedliche Optionen für die Einführung einer neuen Game Servers-Konfiguration mit einer Canary-Phase beschrieben. In der Canary-Phase stellen Sie die neue Konfiguration für eine kleine Gruppe von Kunden bereit. So können Sie mögliche Probleme erkennen, ohne dass sich dies auf alle Nutzer auswirkt.

Die erste Möglichkeit ist die Verwendung einer Canary-Region. Die Einrichtung dieser Option ist einfacher, aber eine fehlerhafte Einführung wirkt sich auf die gesamte Region aus. Die andere Möglichkeit besteht darin, ein Canary-Deployment zu erstellen. Diese Option ist flexibler, aber auch ein komplexerer Prozess.

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

    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.

Integrität eines Rollouts prüfen

Achten Sie darauf, den Zustand Ihrer Server an verschiedenen Zeitpunkten während des Rollouts zu prüfen. Mithilfe dieser Daten können Sie entscheiden, ob es sicher ist. Wenn bei den Systemdiagnosen ein Problem auftritt, empfiehlt es sich, den Rollout anzuhalten oder abzubrechen.

Mit den folgenden Empfehlungen können Sie den Status einer Einführung prüfen:

  1. Prüfen Sie, ob der Status einzelner Gameserver-Instanzen Ready lautet.

  2. Prüfen Sie, ob Agones den gesamten Lebenszyklus eines GameServer zuweisen und verwalten kann. Achten Sie darauf, dass sowohl das Haupt- als auch das Canary-Deployment GameServers dieselben Labels haben, die mit dem erwarteten GameServerAllocation-required-Selektor übereinstimmen, damit Ihre Partnerzuordnung nicht in eine Zuweisung vom Canary-Deployment geändert werden muss. Optional können Sie mit dem Attribut "preferred" in einer GameServerAllocation-Spezifikation bevorzugt von der Canary-Fleet zuordnen.

  3. Achten Sie darauf, dass alle relevanten Spiel- und Systemmesswerte in Ihrer Bereitstellung nicht auf eine Beeinträchtigung der Leistung hinweisen.

Einführung in einer Canary-Region

Mit Game Servers können Sie eine Konfiguration in einem oder mehreren Realmen überschreiben. Achten Sie darauf, dass sich die Cluster in Ihrer Canary-Region in einem separaten Bereich befinden.

In diesem Beispiel ist der Bereich "australia" der Canary-Bereich.

Architektur mit einem separaten Bereich für Canary

So legen Sie v2 als aktive Konfiguration im Bereich australia fest:

  1. Kopieren Sie den folgenden Code in eine Datei:

    - realmsSelector:
        realms:
            - projects/games/locations/australia-southeast1/realms/australia
      configVersion: v2
    

  2. Führen Sie den folgenden Befehl aus, um die Änderungen anzuwenden:

    gcloud game servers deployments update-rollout stk --config-overrides-file configOverrideFile  --no-dry-run
    

    Dabei ist configOverrideFile der Pfad zur Datei mit der Überschreibungskonfiguration.

Architektur nach Canary-Einführung

Nachdem Sie bestätigt haben, dass die Canary-Region fehlerfrei ist, führen Sie den folgenden Befehl aus, um die neue Version überall bereitzustellen:

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

Wenn der Vorgang abgeschlossen ist, wird die v2-Konfiguration überall bereitgestellt. Architektur nach vollständiger Einführung

Bereinigen Sie nun die Überschreibung mit dem folgenden Befehl:

gcloud game servers deployments update-rollout stk --no-dry-run --clear-config-overrides

Einführung in einem Canary-Deployment

Sie können ein separates Deployment verwenden, um die Konfiguration zu testen. Anfangs gibt es kein dediziertes Canary-Deployment.

Ausgangsstatus des separaten Canary-Deployments

  1. Erstellen Sie als Erstes das Canary-Deployment:

    gcloud game servers deployments create canary
    

    Achten Sie darauf, dass der Selektor, der in GameServerAllocation verwendet wird, Game Servers sowohl aus Ihrer Hauptflotte als auch aus der Canary-Fleet auswählen kann, damit Ihre aktuellen Zuweisungsstrategien nicht geändert werden müssen.

  2. Führen Sie als Nächstes den folgenden Befehl aus, um eine v1-Konfiguration zu erstellen, die mit der aktiven Konfiguration im Nicht-Canary-Deployment identisch ist:

    gcloud game servers configs create v1 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
    

    Dabei ist fleetSpecFile der Pfad der Datei mit der Fleet-Spezifikation. scalingConfigFile ist der Pfad der Datei, die alle Skalierungskonfigurationen enthält.

    Wir empfehlen, die Skalierungskonfigurationen so festzulegen, dass die Canary-Fleets wesentlich kleiner sind als die regulären.

  3. Führen Sie den folgenden Befehl aus, um das Canary-Rollout zu aktualisieren, sodass die Konfiguration v1 überall verfügbar ist:

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

    Prüfen Sie, ob die Canary-Fleets fehlerfrei sind.

    Architektur nach dem ersten Canary-Deployment

  4. Führen Sie den folgenden Befehl aus, um die Konfiguration v2 im Canary-Deployment zu erstellen:

    gcloud game servers configs create v2 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
    

    Dabei ist fleetSpecFile der Pfad der Datei mit der Fleet-Spezifikation. scalingConfigFile ist der Pfad der Datei, die alle Skalierungskonfigurationen enthält. Wir empfehlen, die Canary-Flotten möglichst klein zu konfigurieren.

  5. Führen Sie den folgenden Befehl aus, um die Konfiguration v2 für das Canary-Deployment einzuführen:

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

    Prüfen Sie, ob die Canary-Fleets fehlerfrei sind.

    Architektur nach neuem Canary-Deployment

  6. Führen Sie den folgenden Befehl aus, um die Konfiguration v2 für die Hauptbereitstellung einzuführen:

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

    Prüfen Sie, ob die Fleets fehlerfrei sind. Zu diesem Zeitpunkt wird v2 überall eingeführt.

    Architektur nach dem Deployment

  7. Bereinigung des Canary-Deployments

    1. Löschen Sie mit folgendem Befehl das Roll-out des Canary-Deployments:

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

    2. Führen Sie den folgenden Befehl aus, um die Konfiguration „v1“ zu löschen:

      gcloud game servers configs delete v1 --deployment=canary
      

    3. Löschen Sie die Konfiguration „v2“. Führen Sie dazu folgenden Befehl aus:

      gcloud game servers configs delete v2 --deployment=canary
      

    4. Führen Sie den folgenden Befehl aus, um die Canary-Bereitstellung zu entfernen:

      gcloud game servers deployments delete canary
      

    Architektur nach der Bereinigung

Für eine genauere Kontrolle einer Bereitstellung können Sie eine Konfiguration mit Überschreibungen für ausgewählte Bereiche einführen, bevor Sie die Konfiguration als Standard festlegen. Gehen Sie auf die gleiche Weise vor, um Canary gradueller einzuführen.

Sie können die ersten drei Schritte und den letzten Schritt überspringen, wenn Sie ein bestehendes Canary-Deployment beibehalten. Wir empfehlen diese Vorgehensweise für häufige und regelmäßige Rollouts.