Registrar un clúster

En esta página, se explica cómo registrar, enumerar y ver detalles de un clúster de Game Servers en un dominio.

Antes de comenzar

Antes de comenzar, te recomendamos que te familiarices con los conceptos clave en la Descripción general de servidores para juegos. Asegúrate de haber realizado las siguientes tareas:

  • Asegúrate de haber habilitado la API de los servicios de juego.
  • Habilitar la API de servicios de juego
  • Elige una shell que tenga gcloud CLI instalada o usa un cliente de API:
  • Cloud Shell

    Para iniciar Cloud Shell, sigue estos pasos:

    1. Ve a la consola de Google Cloud.

      Consola de Google Cloud

    2. Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell: .

    Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola. Usa esta shell para ejecutar los comandos de gcloud.

    Shell local

    Instala la CLI de gcloud

    Verifica que hayas configurado el proyecto predeterminado que deseas para Google Cloud CLI (de lo contrario, debes especificar la marca --project de forma explícita para cada comando más adelante):

    gcloud config list project
    

    Si no puedes ejecutar el siguiente comando para configurar un proyecto predeterminado, reemplaza PROJECT_ID por el ID del proyecto deseado:

    gcloud config set project PROJECT_ID
    

    Ejecuta el siguiente comando para verificar tu versión de Google Cloud CLI. Game Servers requiere la versión 306.0.0 o una posterior de gcloud CLI.

    gcloud version
    

    Para actualizar la instalación, ejecuta el siguiente comando:

    gcloud components update
    

    curl / PowerShell

    Para usar la API de REST con curl o Windows PowerShell, haz lo siguiente:

    1. Crea una cuenta de servicio.
    2. Descarga una clave privada como un archivo JSON.
    3. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene tus credenciales. Esta variable solo se aplica a la sesión actual de Cloud Shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

    Biblioteca cliente

    Google Cloud Game Servers se puede controlar de manera programática mediante una biblioteca cliente. Consulta Descripción general de bibliotecas cliente a fin de obtener instrucciones para usar la biblioteca y la autenticación.

Registrar un clúster

Asegúrate de haber creado un dominio de Game Servers.

Si no tienes un clúster de Google Kubernetes Engine (GKE) con Agones instalado, haz lo siguiente:

  1. Crea un clúster público de Google Kubernetes Engine y una regla de firewall para Agones. Asegúrate de habilitar la API de Kubernetes Engine.

    Ten en cuenta que Game Servers no admite clústeres privados.

  2. Verifica que la regla de firewall para Agones esté habilitada:

    gcloud compute firewall-rules list --filter="name~'game-server.*'"
    

    Debería ver el siguiente resultado:

    NAME                               NETWORK  DIRECTION  PRIORITY  ALLOW    DENY  DISABLED
    game-server-firewall-test-cluster  default  INGRESS    1000      udp:7000-8000  False
    
  3. Instala Agones.

  4. Asegúrate de que tus versiones de clúster de Agones y Kubernetes cumplan con los requisitos y que hayas instalado Agones en el espacio de nombres agones-system (consulta Confirma la instalación de Agones para obtener más información).

Registra un clúster de servidor para videojuegos

Consola

  1. En la consola de Google Cloud, ve a la página Dominios y clústeres.

    Ir a Game Servers

  2. Haz clic en Add Game Server Cluster.

  3. Selecciona el dominio al que pertenecerá el clúster del servidor de juegos de la lista Realms to choose from. Puedes hacer clic en el botón Create a realm para crear un dominio si es necesario.

  4. Haz clic en Continuar.

  5. En el cuadro Game server cluster ID, ingresa un identificador único para este clúster de servidor para videojuegos.

  6. En la lista Kubernetes cluster, selecciona un clúster de Kubernetes con Agones instalado.

  7. Haz clic en Crear.

gcloud

Puedes registrar un clúster de Game Servers en un dominio mediante Google Cloud CLI.

Registra un clúster de servidor para videojuegos global

Si deseas registrar un clúster de servidor para videojuegos global, haz lo siguiente:

  1. Ejecuta el siguiente comando y reemplaza los valores del marcador de posición, como realmID, con los valores apropiados:

    gcloud game servers clusters create gscID --realm=realmID --gke-cluster=gkeCluster --namespace=default --dry-run
    

    El resultado muestra el targetState para que puedas obtener una vista previa del clúster nuevo antes de registrarlo.

  2. Para registrar y crear el clúster global, ejecuta el siguiente comando:

    gcloud game servers clusters create gscID --realm=realmID --gke-cluster gkeCluster --namespace=default --no-dry-run
    

Registra un clúster de servidor de videojuegos regional

Si deseas registrar un clúster de servidor para videojuegos regional, haz lo siguiente:

  1. Ejecuta el siguiente comando y reemplaza los valores del marcador de posición, como realmID, con los valores apropiados:

    gcloud game servers clusters create gscID --realm=realmID --gke-cluster gkeCluster --location=region --namespace=default --dry-run
    

    En el resultado, se muestra el targetState para que puedas obtener una vista previa del clúster nuevo antes de su creación.

  2. Para registrar y crear el clúster regional, ejecuta el siguiente comando:

    gcloud game servers clusters create gscID --realm=realmID --gke-cluster gkeCluster --location=region --namespace=default --no-dry-run
    

Si Game Servers no puede validar el clúster que intentas conectar, es posible que veas el siguiente error:

Cannot connect to the provided Kubernetes cluster "projects/project/locations/location/clusters/gkeCluster, check the name and make sure that the cluster exists

Si es así, asegúrate de que gkeCluster tenga el formato correcto y de que el clúster exista en project y en location.

Los marcadores de posición de variables corresponden a las siguientes descripciones:

  • gscID es un identificador único que puedes especificar para este clúster.
  • realmID es el identificador único del dominio en el que deseas almacenar el clúster.
  • gkeCluster es la ruta de acceso a recursos completamente calificados de un clúster de GKE, como projects/<projectId>/locations/<location>/clusters/<clusterId>.
  • region es la región del clúster. Elige la misma región que el dominio superior.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.
  • REALM_LOCATION: Es la región para el dominio, o global, en la que se almacena este clúster.
  • REALM_ID: Es el identificador del dominio en el que se almacena este clúster.
  • GS_CLUSTER_ID: Es un identificador definido por el usuario para el clúster.
  • GKE_CLUSTER_LOCATION: Es la región del clúster de GKE.
  • GKE_CLUSTER_ID: Es el identificador de un clúster de GKE.

Cuerpo JSON de la solicitud:

{
  "name": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/GS_CLUSTER_ID",
  "connectionInfo": {
    "namespace": "default",
    "gkeClusterReference": {
      "cluster": "projects/PROJECT_ID/locations/GKE_CLUSTER_LOCATION/clusters/GKE_CLUSTER_ID"
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_ID/locations/REALM_LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.gaming.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/GS_CLUSTER_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Después de crear un clúster de servidor para videojuegos, Game Servers crea flotas de Agones y escaladores automáticos según sea necesario. Game Servers no altera las flotas de Agones creadas manualmente.

Enumera clústeres

Consola

  1. En la consola de Google Cloud, ve a la página Dominios y clústeres.

    Ir a Game Servers

  2. Expande un dominio para ver los clústeres del servidor para videojuegos que le pertenecen.

  3. Puedes usar el cuadro de filtro para filtrar los dominios y la lista de clústeres según las diferentes propiedades.

gcloud

Puedes enumerar clústeres globales o regionales con Google Cloud CLI.

Para enumerar los clústeres globales y regionales, ejecuta el siguiente comando. Agrega la marca --view=FULL opcional para mostrar las versiones de Agones y Kubernetes instaladas en los clústeres.

gcloud game servers clusters list [--view=FULL; default="BASIC"]

Para enumerar solo los clústeres en una región, ejecuta el siguiente comando y reemplaza region por la región en la que deseas enumerar los clústeres:

gcloud game servers clusters list --location=region [--view=FULL; default="BASIC"]

Para enumerar todos los clústeres en un dominio, ejecuta el siguiente comando y reemplaza realmID por el dominio superior y region por la región en la que deseas enumerar los clústeres:

gcloud game servers clusters list --realm=realmID --location=region [--view=FULL; default="BASIC"]

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.
  • REALM_LOCATION: Es la región para el dominio o global.
  • REALM_ID: Es el identificador definido por el usuario para el dominio.

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "gameServerClusters": [
    {
      "name": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/my-gs-cluster-1",
      "createTime": CREATE_TIME,
      "updateTime": UPDATE_TIME,
      "connectionInfo": {
        "namespace": "default",
        "gkeClusterReference": {
          "cluster": "projects/PROJECT_ID/locations/GKE_CLUSTER_LOCATION/clusters/my-gke-cluster-1"
        }
      },
      "etag": "8mBC7IJJFvY40k-rBabOOaGR6sSRG3dP6pI-frTuu9Y",
      "clusterState": {
        "agonesVersionInstalled": "1.15.0",
        "kubernetesVersionInstalled": "1.18.20-gke.900",
        "installationState": "AGONES_KUBERNETES_VERSION_SUPPORTED",
        "provider": "gke"
      }
    },
    {
      "name": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/my-gs-cluster-2",
      "createTime": CREATE_TIME,
      "updateTime": UPDATE_TIME,
      "connectionInfo": {
        "namespace": "default",
        "gkeClusterReference": {
          "cluster": "projects/PROJECT_ID/locations/GKE_CLUSTER_LOCATION/clusters/my-gke-cluster-2"
        }
      },
      "etag": "8mBC7IJJFvY40k-rBabOOaGR6sSRG3dP6pI-frTuu9Y",
      "clusterState": {
        "agonesVersionInstalled": "1.15.0",
        "kubernetesVersionInstalled": "1.18.20-gke.900",
        "installationState": "AGONES_KUBERNETES_VERSION_SUPPORTED",
        "provider": "gke"
      }
    }
  ]
}

Visualiza detalles sobre un clúster

Consola

  1. En la consola de Google Cloud, ve a la página Dominios y clústeres.

    Ir a Game Servers

  2. Expande un dominio para ver los clústeres del servidor para videojuegos que le pertenecen.

  3. En la última columna de la tabla para el dominio, haz clic en la elipsis y selecciona View details.

gcloud

Encuentra detalles sobre un clúster, como la hora de creación o los detalles del clúster de GKE, con Google Cloud CLI.

Para ver los detalles de un clúster, ejecuta el siguiente comando y reemplaza los valores del marcador de posición, como realmID, por los valores apropiados:

gcloud game servers clusters describe gscID --realm realmID --location=region [--view=FULL; default="BASIC"]

El resultado te brinda los detalles del clúster. Agrega la marca --view=FULL opcional para mostrar las versiones de Agones y Kubernetes instalados en el clúster.

Los marcadores de posición de variables corresponden a las siguientes descripciones:

  • gscID es el identificador único que especificaste para este clúster de servidor de videojuegos.
  • realmID es un identificador único para el dominio en el que se almacena tu clúster.
  • region es la región del clúster. Elige la misma región que el dominio superior.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.
  • REALM_LOCATION: Es la región para el dominio o global.
  • REALM_ID: Es el identificador definido por el usuario para el dominio.
  • GS_CLUSTER_ID: Es el identificador definido por el usuario para el clúster.

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/GS_CLUSTER_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "connectionInfo": {
    "namespace": "default",
    "gkeClusterReference": {
      "cluster": "projects/PROJECT_ID/locations/GKE_CLUSTER_LOCATION/clusters/MY_GKE_CLUSTER"
    }
  },
  "etag": "8mBC7IJJFvY40k-rBabOOaGR6sSRG3dP6pI-frTuu9Y",
  "clusterState": {
    "agonesVersionInstalled": "1.15.0",
    "kubernetesVersionInstalled": "1.18.20-gke.900",
    "installationState": "AGONES_KUBERNETES_VERSION_SUPPORTED",
    "provider": "gke"
  }
}

Actualiza un clúster

gcloud

Para actualizar un campo de un clúster, ejecuta el comando de gcloud game servers clusters update después de reemplazar los identificadores de un clúster existente. El siguiente comando actualiza el campo de descripción de un clúster.

gcloud game servers clusters update gscID \
    --realm=realmID --location=region \
    --description="My updated description" --no-dry-run

Para encontrar las marcas de otros campos del clúster, consulta la referencia de gcloud.

REST

En el siguiente ejemplo, se actualiza el campo description. Para actualizar otros campos, agrega los nombres de campo al parámetro de búsqueda ?updateMask= y solicita el cuerpo JSON.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.
  • REALM_LOCATION: Es la región para el dominio o global.
  • REALM_ID: Es el identificador del dominio.
  • GS_CLUSTER_ID: Es el identificador definido por el usuario para el clúster.

Cuerpo JSON de la solicitud:

{
  "description": "My updated description"
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_ID/locations/REALM_LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.gaming.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_ID/locations/REALM_LOCATION/realms/REALM_ID/gameServerClusters/GS_CLUSTER_ID",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Soluciona problemas

Error de permisos de IAM

Si los permisos no se configuraron de forma correcta, verás el siguiente error:

Cannot connect to the provided Kubernetes cluster "projects/projectId/locations/location/clusters/gkeCluster", make sure that "service-projectNumber@gcp-sa-gameservices.iam.gserviceaccount.com" has been granted the required permissions to access the cluster

Si esto ocurre, completa el paso en esta sección para configurar los permisos de IAM.

Cuando creas recursos de Game Servers en un proyecto de Google Cloud, Game Servers también crea un servidor para videojuegos. Cuenta de servicio administrada por Google que toma el formato serviceAccount:service-projectNumber@gcp-sa-gameservices.iam.gserviceaccount.com. A esta cuenta de servicio se le otorga la función predefinida roles/gameservices.serviceAgent de Game Servers de forma automática. Esta función le otorga a la cuenta de servicio administrada por Google los permisos necesarios para administrar el clúster de GKE que registras. Si lo revocas, verás el mensaje de error anterior.

En el siguiente comando, se muestra la sintaxis para otorgar a la cuenta de servicio la función roles/gameservices.serviceAgent de Game Servers:

gcloud projects add-iam-policy-binding projectId --role roles/gameservices.serviceAgent --member serviceAccount:service-projectNumber@gcp-sa-gameservices.iam.gserviceaccount.com

Donde:

  • projectId es el ID del proyecto. Puedes obtener projectId si ejecutas gcloud config get-value project.
  • Puedes recuperar projectNumber si ejecutas gcloud projects describe projectId.

¿Qué sigue?

Obtén más información para borrar un clúster.