빠른 시작: 오픈소스 게임을 위한 서버 배포

오픈소스 게임을 위한 서버 배포

이 빠른 시작에서는 Google Cloud CLI를 사용하여 Game Servers에서 게임 서버 렐름, 클러스터, 배포, 구성, 출시로 작업하는 방법을 알아봅니다.


Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. Game Services API가 사용 설정되어 있는지 확인합니다.
  7. Game Services API 사용 설정

셸 선택

이 빠른 시작을 완료하려면 Cloud Shell 또는 로컬 셸을 사용하면 됩니다.

Cloud Shell은 Google Cloud에서 호스팅되는 리소스를 관리하는 데 사용되는 셸 환경입니다. Cloud Shell은 gcloud 명령줄 도구가 사전 설치된 상태로 제공됩니다. gcloud CLI는 Game Servers의 기본 명령줄 인터페이스를 제공합니다.

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

로컬 셸을 선택하는 경우 Kubernetes 명령줄 도구 kubectl을 설치해야 할 수 있습니다.

gcloud components install kubectl

Google Kubernetes Engine 클러스터 만들기

Google Kubernetes Engine 클러스터를 만들려면 다음 안내를 따르세요.

  1. Cloud Console에서 Kubernetes Engine API를 사용 설정합니다.

    API 사용 설정

  2. 다음 명령어를 실행하여 us-central1-a 영역에 한 노드가 포함된 비용에 최적화된 클러스터를 만듭니다.

    gcloud container clusters create gcgs-quickstart \
    --cluster-version=1.23 \
    --tags=game-server \
    --scopes=gke-default \
    --num-nodes=1 \
    --no-enable-autoupgrade \
    --machine-type=e2-standard-2 \
    --zone=us-central1-a
    
  3. 다음 명령어를 실행하여 이전 단계에서 만든 GKE 클러스터에 대해 사용자 인증 정보를 검색합니다.

    gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
    

    kubectl은 이러한 사용자 인증 정보를 사용하여 Kubernetes 클러스터에서 명령어를 실행합니다. 자세한 내용은 kubectl용 클러스터 액세스 구성을 참조하세요.

Agones on GKE 설치

이 섹션에서는 오픈소스 Agones 게이밍 인프라 플랫폼을 설치합니다. Agones를 설치하려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행하여 agones-system 네임스페이스를 만듭니다.

    kubectl create namespace agones-system
    
  2. 다음 명령어를 실행하여 Agones를 설치합니다.

    kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
    
  3. Kubernetes Pod의 상태를 확인하여 Agones 시스템이 실행 중인지 확인할 수 있습니다.

    kubectl get --namespace agones-system pods
    

    모든 pod는 Running 상태여야 합니다.

    NAME                                 READY   STATUS    RESTARTS   AGE
    agones-allocator-6694dcc89-7r75d     1/1     Running   0          28s
    agones-allocator-6694dcc89-m7ghq     1/1     Running   0          28s
    agones-allocator-6694dcc89-qp6cm     1/1     Running   0          28s
    agones-controller-56c98db844-llzzc   1/1     Running   0          22s
    agones-ping-d9d74c5c6-8kmt6          1/1     Running   0          24s
    agones-ping-d9d74c5c6-xwn4h          1/1     Running   0          24s
    

Game Servers 리소스 만들기

Game Servers 리소스를 만들려면 다음 안내를 따르세요.

  1. GKE 클러스터와 동일한 위치에 렐름을 만듭니다.

    gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
    
  2. Agones GKE 클러스터를 Game Servers에 등록하고 이전 단계에서 만든 렐름에 연결합니다.

    gcloud game servers clusters create cluster-quickstart \
    --realm=realm-quickstart \
    --gke-cluster locations/us-central1-a/clusters/gcgs-quickstart \
    --namespace=default \
    --location us-central1 \
    --no-dry-run
    
  3. 게임 서버 구성을 모두 저장하는 데 사용할 게임 서버 배포를 만든 후에 게임 서버 클러스터에 배포합니다.

    gcloud game servers deployments create deployment-quickstart
    

    게임 서버 배포가 완료되었으므로 이제 gcloud CLI를 사용하여 게임 서버 구성을 추가할 수 있습니다.

  4. 다음의 예시 Agones 플릿 사양 매니페스트를 현재 디렉터리의 fleet_configs.yaml이라는 새 파일에 복사합니다.

    - name: fleet-spec-1
      fleetSpec:
        replicas: 2
        template:
          metadata:
            labels:
              foo: bar
          spec:
            ports:
            - name: default
              portPolicy: Dynamic
              containerPort: 7654
            template:
              spec:
                containers:
                - name: simple-game-server
                  image: gcr.io/agones-images/simple-game-server:0.3
    
  5. 게임 서버 구성을 만들려면 다음 명령어를 실행합니다.

    gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    
  6. 출시를 업데이트하려면 다음 명령어를 실행합니다.

    gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
    
  7. 기본 네임스페이스에서 한 플릿의 출시를 검증하려면 다음 명령어를 실행합니다.

    kubectl get fleet
    

    다음 그림은 예상 출력을 보여줍니다.

    NAME                                     SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-deployment-quickstart-config-1   Packed       2         2         0           2       4s
    

    연결을 수락할 준비가 된 간단한 UDP 서버 복제본 두 개가 포함된 플릿이 클러스터에 배포되었는지 출력에서 확인할 수 있습니다.

게임 서버 연결 테스트

게임 서버 연결을 테스트하려면 다음 안내를 따르세요.

  1. 클러스터에 연결하는 데 필요한 UDP 포트를 열기 위해 방화벽 규칙을 만듭니다.

    gcloud compute firewall-rules create gcgs-quickstart-firewall \
    --allow udp:7000-8000 \
    --target-tags game-server \
    --description "Firewall to allow game server udp traffic"
    
  2. 다음으로 개별 게임 서버의 IP 주소 및 포트 번호를 받습니다.

    kubectl get gameserver
    

    이 명령어는 다음과 유사한 출력을 반환합니다.

    NAME                                                 STATE   ADDRESS          PORT   NODE                                             AGE
    fleet-deployment-quickstart-config-1-nndvr-5gvch   Ready   IP_ADDRESS   PORT_NUMBER   gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7   11s
    fleet-deployment-quickstart-config-1-nndvr-vqwpl   Ready   IP_ADDRESS   PORT_NUMBER   gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7   11s
    
  3. Netcat 명령어를 실행하여 연결을 테스트하세요. Linux에 Netcat을 설치하려면 다음 명령어를 실행합니다.

    sudo apt install netcat
    
  4. 테스트를 시작하려면 다음 명령어를 실행합니다.

    nc -u IP_ADDRESS PORT_NUMBER
    
  5. 이제 Hello를 입력하면 명령어가 다음과 유사한 출력을 반환합니다.

    Hello
    > ACK: Hello
    
  6. Ctrl+C를 사용하여 테스트를 중지합니다.

(선택사항) 오픈소스 게임 타이틀을 위한 서버 배포

출시를 업데이트하여 클러스터에 2개의 오픈소스 게임 서버 복제본이 있는 제품군을 배포할 수 있습니다. 이러한 게임 서버는 SuperTuxKart 경주 게임의 멀티플레이어 버전을 지원합니다.

  1. 기존 fleet_configs.yaml 파일을 다음 Agones 플릿 사양으로 덮어씁니다.

    - name: supertuxkart
      fleetSpec:
        replicas: 2
        template:
          metadata:
            labels:
              version: "1.0"
          spec:
            ports:
            - name: default
              containerPort: 8080
            health:
              initialDelaySeconds: 30
              periodSeconds: 60
            template:
              spec:
                containers:
                - name: supertuxkart
                  image: gcr.io/agones-images/supertuxkart-example:0.3
    
  2. 기존 게임 서버 구성은 변경할 수 없으므로 업데이트할 수 없습니다. 업데이트된 플릿 사양 매니페스트를 참조하는 새 구성을 만듭니다.

    gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    

  3. 새 구성으로 출시를 업데이트합니다.

    gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
    

  4. 개별 게임 서버의 IP 주소 및 포트 번호를 가져옵니다.

    kubectl get gameserver
    

  5. SuperTuxKart 클라이언트를 다운로드합니다.

  6. SuperTuxKart 클라이언트를 시작합니다.

  7. 기본 메뉴에서 Online(온라인) 버튼을 클릭한 후 Enter server address(서버 주소 입력) 버튼을 클릭합니다.

  8. 이전 단계의 개별 게임 서버에 대한 IP 주소와 포트 번호를 입력합니다.

  9. Start race(레이스 시작)를 클릭하여 게임을 시작합니다.

SuperTuxKart 클라이언트를 다른 플랫폼에서 다운로드하여 동일한 서버에 연결하고 경주에 참여할 수 있습니다.

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.

이 빠른 시작에서 만든 리소스를 보존하지 않으려면 프로젝트를 삭제할 수 있습니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

또는 프로젝트를 유지하려면 다음 단계를 완료하여 이 빠른 시작에서 만든 리소스를 수동으로 삭제하세요.

  1. 방화벽 규칙을 삭제하려면 다음 명령어를 실행합니다.

    gcloud compute firewall-rules delete gcgs-quickstart-firewall
    
  2. 기본 출시를 지우려면 다음 명령어를 실행합니다.

    gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
    
  3. 게임 서버 구성을 삭제하려면 다음 명령어를 실행합니다.

    gcloud game servers configs delete config-1 --deployment deployment-quickstart
    

    선택적 섹션을 완료했으면 추가 게임 서버 구성을 삭제합니다.

    gcloud game servers configs delete stk-1 --deployment deployment-quickstart
    
  4. 게임 서버 배포를 삭제하려면 다음 명령어를 실행합니다.

    gcloud game servers deployments delete deployment-quickstart
    
  5. 게임 서버 클러스터를 삭제하려면 다음 명령어를 실행하세요.

    gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
    
  6. 렐름을 삭제하려면 다음 명령어를 실행합니다.

    gcloud game servers realms delete realm-quickstart --location=us-central1
    
  7. Game Services API를 중지하려면 다음 명령어를 실행합니다.

    gcloud services disable gameservices.googleapis.com
    
  8. GKE 클러스터를 삭제하려면 다음 명령어를 실행합니다.

    gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
    

다음 단계

Game Servers 개요에서 Game Servers 개념의 기술적 개요 이해하기

안내 가이드에서 특정 Game Servers 작업을 알아보기

Terraform 배포 샘플 프로젝트를 검토합니다.