클러스터 등록

이 페이지에서는 렐름에서 Game Servers 클러스터의 세부정보를 등록, 나열, 확인하는 방법을 설명합니다.

시작하기 전에

시작하기 전에 Game Servers 개요의 주요 개념을 숙지하는 것이 좋습니다. 또한 다음 태스크를 수행했는지 확인합니다.

  • Game Services API가 사용 설정되어 있는지 확인합니다.
  • Game Services API 사용 설정
  • gcloud CLI가 설치된 셸을 선택하거나 API 클라이언트를 사용합니다.
  • Cloud Shell

    Cloud Shell을 시작하려면 다음 단계를 수행하세요.

    1. Google Cloud Console로 이동.

      Google Cloud console

    2. Console의 오른쪽 상단에서 Cloud Shell 활성화 버튼을 클릭합니다.

    Console 하단의 프레임에서 Cloud Shell 세션이 열립니다. 이 셸을 사용하여 gcloud 명령어를 실행합니다.

    로컬 셸

    gcloud CLI 설치

    Google Cloud CLI에 원하는 기본 프로젝트를 설정했는지 확인합니다. 그렇지 않으면 나중에 명령어마다 --project 플래그를 명시적으로 지정해야 합니다.

    gcloud config list project
    

    사용할 수 없는 경우 다음 명령어를 실행하여 기본 프로젝트를 설정하고 PROJECT_ID를 원하는 프로젝트 ID로 바꾸세요.

    gcloud config set project PROJECT_ID
    

    다음 명령어를 실행하여 Google Cloud CLI 버전을 확인합니다. Game Servers에는 gcloud CLI 버전 306.0.0 이상이 필요합니다.

    gcloud version
    

    설치를 업데이트하려면 다음 명령어를 실행합니다.

    gcloud components update
    

    curl / PowerShell

    curl 또는 Windows PowerShell에서 REST API를 사용하려면 다음을 수행합니다.

    1. 서비스 계정 만들기.
    2. 비공개 키를 JSON 파일로 다운로드합니다.
    3. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용자 인증 정보가 포함된 JSON 파일의 경로로 설정합니다. 이 변수는 현재 셸 세션에만 적용되므로 새 세션을 열면 변수를 다시 설정합니다.

    클라이언트 라이브러리

    클라이언트 라이브러리를 사용하여 Google Cloud Game Servers를 프로그래매틱 방식으로 제어할 수 있습니다. 라이브러리 사용 및 인증에 대한 안내는 클라이언트 라이브러리 개요를 참조하세요.

클러스터 등록

Game Servers 렐름을 생성했는지 확인합니다.

Agones가 설치된 Google Kubernetes Engine (GKE) 클러스터가 없으면 다음을 수행합니다.

  1. Agones용 공개 Google Kubernetes Engine 클러스터 및 방화벽 규칙을 만듭니다. Kubernetes Engine API를 사용 설정해야 합니다.

    Game Servers는 비공개 클러스터를 지원하지 않습니다.

  2. Agones용 방화벽 규칙이 사용 설정되었는지 확인합니다.

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

    다음과 같은 출력이 표시됩니다.

    NAME                               NETWORK  DIRECTION  PRIORITY  ALLOW    DENY  DISABLED
    game-server-firewall-test-cluster  default  INGRESS    1000      udp:7000-8000  False
    
  3. Agones를 설치합니다.

  4. Agones 및 Kubernetes 클러스터 버전이 호환되는지 그리고 Agones가 agones-system 네임스페이스에 설치되어 있는지 확인합니다(자세한 내용은 Agones 설치 확인 참조).

게임 서버 클러스터 등록

Console

  1. Google Cloud Console에서 렐름 및 클러스터 페이지로 이동합니다.

    Game Servers로 이동

  2. Game Servers 클러스터 추가를 클릭합니다.

  3. 목록에서 선택할 렐름에서 게임 서버 클러스터가 속할 렐름을 선택합니다. 필요한 경우 렐름 만들기 버튼을 클릭하여 렐름을 만들 수 있습니다.

  4. 계속을 클릭합니다.

  5. 게임 서버 클러스터 ID 상자에 이 게임 서버 클러스터의 고유 식별자를 입력합니다.

  6. Kubernetes 클러스터 목록에서 Agones가 설치된 Kubernetes 클러스터를 선택합니다.

  7. 만들기를 클릭합니다.

gcloud

Google Cloud CLI를 사용하여 렐름에 Game Servers 클러스터를 등록할 수 있습니다.

전역 게임 서버 클러스터 등록

전역 게임 서버 클러스터를 등록하려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행하고 realmID 같은 자리표시자 값을 적절한 값으로 바꿉니다.

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

    출력에 targetState가 반환되므로 새 클러스터를 등록하기 전에 미리 볼 수 있습니다.

  2. 전역 클러스터를 등록하고 만들려면 다음 명령어를 실행합니다.

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

리전 게임 서버 클러스터 등록

리전 게임 서버 클러스터를 등록하려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행하고 realmID 같은 자리표시자 값을 적절한 값으로 바꿉니다.

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

    출력에 targetState가 반환되므로 새 클러스터를 생성하기 전에 미리 볼 수 있습니다.

  2. 리전 클러스터를 등록하고 만들려면 다음 명령어를 실행합니다.

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

Game Servers에서 연결하려는 클러스터를 검사할 수 없는 경우 다음 오류가 표시될 수 있습니다.

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

그렇다면 gkeCluster 형식이 올바르고 클러스터가 projectlocation에 있는지 확인합니다.

변수 자리표시자는 다음 설명에 해당됩니다.

  • gscID는 이 클러스터에 대해 지정할 수 있는 고유 식별자입니다.
  • realmID는 클러스터를 저장할 렐름의 고유 식별자입니다.
  • gkeCluster는 GKE 클러스터의 정규화된 리소스 경로로서 projects/<projectId>/locations/<location>/clusters/<clusterId> 같은 형식입니다.
  • region은 클러스터의 리전입니다. 상위 렐름과 동일한 리전을 선택합니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: IAM 설정에 나열된 Google Cloud 프로젝트 ID입니다.
  • REALM_LOCATION: 이 클러스터를 저장할 렐름의 리전입니다(또는 global).
  • REALM_ID: 이 클러스터를 저장할 렐름의 식별자입니다.
  • GS_CLUSTER_ID: 클러스터의 사용자 정의 식별자입니다.
  • GKE_CLUSTER_LOCATION: GKE 클러스터의 리전입니다.
  • GKE_CLUSTER_ID: GKE 클러스터의 식별자입니다.

JSON 요청 본문:

{
  "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"
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "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
}

Game Servers 클러스터를 만들면 Game Servers는 필요에 따라 Agones Fleet자동 확장 처리를 만듭니다. Game Servers는 수동으로 생성된 Agones 플릿을 변경하지 않습니다.

클러스터 나열

Console

  1. Google Cloud Console에서 렐름 및 클러스터 페이지로 이동합니다.

    Game Servers로 이동

  2. 렐름을 확장하여 해당 렐름에 속한 Game Server 클러스터를 확인합니다.

  3. 필터 상자를 사용하여 여러 속성을 기준으로 렐름 및 클러스터 목록을 필터링할 수 있습니다.

gcloud

Google Cloud CLI를 사용하여 전역 또는 리전 클러스터를 나열할 수 있습니다.

전역 및 리전 클러스터를 모두 나열하려면 다음 명령어를 실행합니다. 클러스터에 설치된 Agones 및 Kubernetes 버전을 표시하려면 선택적인 --view=FULL 플래그를 추가합니다.

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

한 리전의 클러스터만 나열하려면 다음 명령어를 실행하고 region을 클러스터를 나열할 리전으로 바꿉니다.

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

렐름의 모든 클러스터를 나열하려면 다음 명령어를 실행하고 realmID를 상위 렐름으로 바꾸고 region을 클러스터를 나열하고 싶은 리전으로 바꿉니다.

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

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: IAM 설정에 나열된 Google Cloud 프로젝트 ID입니다.
  • REALM_LOCATION: 렐름의 리전입니다(또는 global).
  • REALM_ID: 렐름의 사용자 정의 식별자입니다.

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "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"
      }
    }
  ]
}

클러스터 세부정보 보기

Console

  1. Google Cloud Console에서 렐름 및 클러스터 페이지로 이동합니다.

    Game Servers로 이동

  2. 렐름을 확장하여 해당 렐름에 속한 Game Server 클러스터를 확인합니다.

  3. 렐름의 마지막 테이블 열에서 줄임표 를 클릭하고 세부정보 보기를 선택합니다.

gcloud

Google Cloud CLI를 사용하여 만든 시간 또는 GKE 클러스터 세부정보와 같은 클러스터에 대한 세부정보를 확인합니다.

클러스터의 세부정보를 보려면 다음 명령어를 실행하고 자리표시자 값(예: realmID)을 적절한 값으로 바꾸세요.

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

출력에 클러스터 세부정보가 표시됩니다. 클러스터에 설치된 Agones 및 Kubernetes의 버전을 표시하려면 선택적인 --view=FULL 플래그를 추가합니다.

변수 자리표시자는 다음 설명에 해당됩니다.

  • gscID는 이 게임 서버 클러스터에 지정한 고유 식별자입니다.
  • realmID는 클러스터가 저장된 렐름의 고유 식별자입니다.
  • region은 클러스터의 리전입니다. 상위 렐름과 동일한 리전을 선택합니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: IAM 설정에 나열된 Google Cloud 프로젝트 ID입니다.
  • REALM_LOCATION: 렐름의 리전입니다(또는 global).
  • REALM_ID: 렐름의 사용자 정의 식별자입니다.
  • GS_CLUSTER_ID: 클러스터의 사용자 정의 식별자입니다.

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "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"
  }
}

클러스터 업데이트

gcloud

클러스터 필드를 업데이트하려면 기존 클러스터의 식별자를 바꾼 후 gcloud game servers clusters update 명령어를 실행합니다. 다음 명령어는 클러스터의 설명 필드를 업데이트합니다.

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

다른 클러스터 필드의 플래그를 찾으려면 gcloud 참조를 확인하세요.

REST

다음 샘플은 description 필드를 업데이트합니다. 다른 필드를 업데이트하려면 필드 이름을 ?updateMask= 쿼리 매개변수에 추가하고 JSON 본문을 요청합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: IAM 설정에 나열된 Google Cloud 프로젝트 ID입니다.
  • REALM_LOCATION: 렐름의 리전입니다(또는 global).
  • REALM_ID: 렐름의 식별자입니다.
  • GS_CLUSTER_ID: 클러스터의 사용자 정의 식별자입니다.

JSON 요청 본문:

{
  "description": "My updated description"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "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
}

문제 해결

IAM 권한 오류

권한이 올바르게 설정되지 않은 경우 다음 오류가 표시됩니다.

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

이 경우 IAM 권한 설정을 위한 이 섹션의 단계를 완료합니다.

Google Cloud 프로젝트에 Game Servers 리소스를 만들면 Game Servers에서 serviceAccount:service-projectNumber@gcp-sa-gameservices.iam.gserviceaccount.com 양식을 사용하는 Game Servers Google 관리 서비스 계정도 생성됩니다. 이 서비스 계정에는 미리 정의된 Game Servers roles/gameservices.serviceAgent 역할이 자동으로 부여됩니다. 이 역할은 등록하려는 GKE 클러스터를 관리하는 데 필요한 권한을 Google 관리 서비스 계정에 부여합니다. 취소하면 위 오류 메시지가 표시됩니다.

다음 명령어는 서비스 계정에 Game Servers roles/gameservices.serviceAgent 역할을 부여하는 구문을 보여줍니다.

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

각 항목의 의미는 다음과 같습니다.

  • projectId는 프로젝트의 ID입니다. projectIdgcloud config get-value project를 실행하여 가져올 수 있습니다.
  • projectNumbergcloud projects describe projectId를 실행하여 검색할 수 있습니다.

다음 단계

클러스터 삭제 방법 알아보기