이 페이지에서는 렐름에서 Game Servers 클러스터의 세부정보를 등록, 나열, 확인하는 방법을 설명합니다.
시작하기 전에
시작하기 전에 Game Servers 개요의 주요 개념을 숙지하는 것이 좋습니다. 또한 다음 태스크를 수행했는지 확인합니다.
- Game Services API가 사용 설정되어 있는지 확인합니다. Game Services API 사용 설정
- gcloud CLI가 설치된 셸을 선택하거나 API 클라이언트를 사용합니다.
Google Cloud Console로 이동.
Console의 오른쪽 상단에서 Cloud Shell 활성화 버튼을 클릭합니다.
- 서비스 계정 만들기.
- 비공개 키를 JSON 파일로 다운로드합니다.
-
GOOGLE_APPLICATION_CREDENTIALS
환경 변수를 사용자 인증 정보가 포함된 JSON 파일의 경로로 설정합니다. 이 변수는 현재 셸 세션에만 적용되므로 새 세션을 열면 변수를 다시 설정합니다.
Cloud Shell
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를 사용하려면 다음을 수행합니다.
클라이언트 라이브러리
클라이언트 라이브러리를 사용하여 Google Cloud Game Servers를 프로그래매틱 방식으로 제어할 수 있습니다. 라이브러리 사용 및 인증에 대한 안내는 클라이언트 라이브러리 개요를 참조하세요.
클러스터 등록
Game Servers 렐름을 생성했는지 확인합니다.
Agones가 설치된 Google Kubernetes Engine (GKE) 클러스터가 없으면 다음을 수행합니다.
Agones용 공개 Google Kubernetes Engine 클러스터 및 방화벽 규칙을 만듭니다. Kubernetes Engine API를 사용 설정해야 합니다.
Game Servers는 비공개 클러스터를 지원하지 않습니다.
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
Agones 및 Kubernetes 클러스터 버전이 호환되는지 그리고 Agones가
agones-system
네임스페이스에 설치되어 있는지 확인합니다(자세한 내용은 Agones 설치 확인 참조).
게임 서버 클러스터 등록
Console
Google Cloud Console에서 렐름 및 클러스터 페이지로 이동합니다.
Game Servers 클러스터 추가를 클릭합니다.
목록에서 선택할 렐름에서 게임 서버 클러스터가 속할 렐름을 선택합니다. 필요한 경우 렐름 만들기 버튼을 클릭하여 렐름을 만들 수 있습니다.
계속을 클릭합니다.
게임 서버 클러스터 ID 상자에 이 게임 서버 클러스터의 고유 식별자를 입력합니다.
Kubernetes 클러스터 목록에서 Agones가 설치된 Kubernetes 클러스터를 선택합니다.
만들기를 클릭합니다.
gcloud
Google Cloud CLI를 사용하여 렐름에 Game Servers 클러스터를 등록할 수 있습니다.
전역 게임 서버 클러스터 등록
전역 게임 서버 클러스터를 등록하려면 다음 안내를 따르세요.
다음 명령어를 실행하고 realmID 같은 자리표시자 값을 적절한 값으로 바꿉니다.
gcloud game servers clusters create gscID --realm=realmID --gke-cluster=gkeCluster --namespace=default --dry-run
출력에
targetState
가 반환되므로 새 클러스터를 등록하기 전에 미리 볼 수 있습니다.전역 클러스터를 등록하고 만들려면 다음 명령어를 실행합니다.
gcloud game servers clusters create gscID --realm=realmID --gke-cluster gkeCluster --namespace=default --no-dry-run
리전 게임 서버 클러스터 등록
리전 게임 서버 클러스터를 등록하려면 다음 안내를 따르세요.
다음 명령어를 실행하고 realmID 같은 자리표시자 값을 적절한 값으로 바꿉니다.
gcloud game servers clusters create gscID --realm=realmID --gke-cluster gkeCluster --location=region --namespace=default --dry-run
출력에
targetState
가 반환되므로 새 클러스터를 생성하기 전에 미리 볼 수 있습니다.리전 클러스터를 등록하고 만들려면 다음 명령어를 실행합니다.
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 형식이 올바르고 클러스터가 project 및 location에 있는지 확인합니다.
변수 자리표시자는 다음 설명에 해당됩니다.
- 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
Google Cloud Console에서 렐름 및 클러스터 페이지로 이동합니다.
렐름을 확장하여 해당 렐름에 속한 Game Server 클러스터를 확인합니다.
필터 상자를 사용하여 여러 속성을 기준으로 렐름 및 클러스터 목록을 필터링할 수 있습니다.
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
Google Cloud Console에서 렐름 및 클러스터 페이지로 이동합니다.
렐름을 확장하여 해당 렐름에 속한 Game Server 클러스터를 확인합니다.
렐름의 마지막 테이블 열에서 줄임표 more_vert를 클릭하고 세부정보 보기를 선택합니다.
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입니다. projectId는
gcloud config get-value project
를 실행하여 가져올 수 있습니다. - projectNumber는
gcloud projects describe projectId
를 실행하여 검색할 수 있습니다.
다음 단계
클러스터 삭제 방법 알아보기