Agones 업그레이드

이 페이지에서는 Game Servers 클러스터의 Agones를 안전하게 업그레이드하는 방법을 설명합니다.

시작하기 전에

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

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

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

    1. Google Cloud Console로 이동합니다.

      Google Cloud Console

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

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

    로컬 셸

    gcloud를 설치하려면 gcloud 명령줄 도구가 포함된 Cloud SDK를 설치합니다.

    gcloud 명령줄 도구에 대해 원하는 기본 프로젝트를 설정했는지 확인합니다. 그렇지 않으면 나중에 각 명령어에 대해 명시적으로 --project 플래그를 지정해야 합니다.

    gcloud config list project
    

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

    gcloud config set project PROJECT_ID
    

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

    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 업그레이드를 수행하는 것이 좋습니다. 이 방식에는 다음과 같은 이점이 있습니다.

  1. 유지보수 기간 없이 업그레이드를 수행할 때 Agones 프로젝트에서 새 클러스터를 만들 때 권장하는 권장사항에 부합합니다. 클러스터에서 게임을 실행하는 동안 Agones 업그레이드 시도와 관련된 잠재적인 문제를 방지합니다.
  2. 기존 Kubernetes 또는 Google Kubernetes Engine 노드를 시도하고 업그레이드할 필요가 없기 때문에 서비스에서 노드 삭제와 같은 문제를 방지할 수 있습니다.
  3. 단일 작업으로 Kubernetes 및 Agones의 새 버전을 포함하여 업그레이드 프로세스의 일부로 더 많은 구성요소를 테스트한 다음 함께 프로덕션으로 출시할 수 있습니다.

카나리아 업그레이드 계획하기

프로덕션 환경에 적용하기 전에, 프로덕션이 아닌 환경에서 새로운 Agones 버전을 테스트해야 합니다. 새로운 Agones 버전을 검증한 후에는 프로덕션에서 카나리아 렐름을 업그레이드하세요. 카나리아 업그레이드는 처음에 단일 또는 적은 수의 일부 렐름에 적용되는 업그레이드입니다. 카나리아 업그레이드를 사용하면 중단을 유발할 수 있는 업그레이드를 모든 렐름에 출시하는 대신 소규모 인프라에서 새로운 기능을 테스트할 수 있습니다. 업그레이드가 잘 진행되지 않는 경우 사용자의 중단을 최소화하고, 영향을 받는 렐름을 롤백할 수 있습니다. 지정된 카나리아 렐름이 없으면 트래픽이 가장 적은 렐름을 선택합니다.

업그레이드 수행하기

이 섹션에서는 이전 버전의 Agones가 있는 클러스터에서 GameServer 할당을 업그레이드된 버전의 Agones로 전환하는 업그레이드 절차를 설명합니다. 업그레이드 절차에서는 새 클러스터에 멀티 클러스터 할당을 구성했다고 가정합니다.

또한 다음 단계를 따르면 플레이어 환경의 중단을 최소화하면서 프로덕션에서 작동 중인 이전 인프라로 쉽게 롤백할 수 있습니다.

  1. 현재 클러스터와 동일한 크기의 새 클러스터를 만듭니다.

  2. Kubernetes의 호환 가능한 버전으로 새 클러스터에 Agones의 새 버전을 설치합니다. 지원되는 버전 목록은 버전 및 업그레이드를 참조하세요.

  3. 렐름에 새 클러스터를 등록합니다. 그러면 렐름에 등록된 기존 클러스터와 유사한 제품군 및 자동 확장 처리 리소스가 생성됩니다. 제품군이 준비되면 일치하는 일부 플레이어 게임 세션이 새 클러스터로 전송됩니다.

  4. 새 버전의 Agones를 실행하는 새 클러스터의 안정성을 확인한 후 이전 클러스터를 등록 취소하고 삭제합니다. Game Servers 클러스터를 등록 취소하고 삭제하면 할당된 서버, 제품군, 요소 자동 확장 처리 구성은 그대로 유지됩니다. Kubernetes 클러스터에서 사실상의 유일한 변경사항은 더 이상 Game Servers에서 관리되지 않으며, 더 이상 멀티 클러스터 할당에 연결되어 있지 않다는 점입니다. Game Servers는 등록되지 않은 클러스터에 새로운 할당 요청을 전송하는 것을 중지합니다.

  5. 연결된 엔드포인트에 직접 액세스하는 경우 이전 클러스터에 대한 추가 할당을 방지하려면 이전 서버의 할당자 서비스에서 모든 pod를 삭제하세요.

    kubectl scale --replicas=0 -n agones-system deployment/agones-allocator
    
  6. 클러스터에 할당된 서버가 더 이상 없으면 이전 클러스터를 종료합니다. 할당된 서버 수를 확인하려면 다음 명령어를 실행합니다. 여기서 namespace는 Kubernetes 클러스터를 Game Servers 클러스터로 등록할 때 사용한 네임스페이스입니다.

    kubectl get fleet --namespace namespace
    
    NAME         SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-1      Packed       10        10        0           10      2d23h
    
    

업그레이드해야 하는 클러스터마다 이 업그레이드 절차의 단계를 반복하세요.