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 ein komplexerer Prozess.

Vorbereitung

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.
  • Game Services API aktivieren
  • Wählen Sie entweder eine Shell mit installiertem Cloud SDK aus oder verwenden Sie einen API-Client:
  • Cloud Shell

    So starten Sie Cloud Shell:

    1. Öffnen Sie die Google Cloud Console.

      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 zur Installation von gcloud das Cloud SDK. Darin ist das gcloud-Befehlszeilentool enthalten.

    Prüfen Sie, ob Sie das gewünschte Standardprojekt für das gcloud-Befehlszeilentool festgelegt haben. Andernfalls müssen Sie das Flag --project für jeden Befehl später 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 des Google Cloud SDK zu prüfen. Für Game Servers ist Version 306.0.0 oder höher des SDK erforderlich.

    gcloud version
    

    Aktualisieren Sie Ihre Installation mit dem folgenden Befehl:

    gcloud components update
    

    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 Informationen können Sie entscheiden, ob es sicher ist, mit dem Rollout fortzufahren. 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 einer oder mehreren Bereichen ü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-Fleets 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. So löschen Sie das Rollout für das Canary-Deployment:

      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 "v2"-Konfiguration mit folgendem Befehl:

      gcloud game servers configs delete v2 --deployment=canary
      

    4. Entfernen Sie das Canary-Deployment mit folgendem Befehl:

      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.