카나리아 구성 출시

이 페이지에서는 새 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를 프로그래매틱 방식으로 제어할 수 있습니다. 라이브러리 사용 및 인증에 대한 안내는 클라이언트 라이브러리 개요를 참조하세요.

출시 상태 확인하기

출시 중 다양한 지점에서 서버 상태를 확인합니다. 수집한 데이터를 사용하여 출시를 계속해도 안전한지 여부를 확인할 수 있습니다. 상태 확인에서 문제가 발견되면 출시 버전을 일시중지하거나 취소하는 것이 좋습니다.

다음 권장사항에 따라 출시 상태를 확인할 수 있습니다.

  1. 개별 게임 서버 인스턴스의 상태가 Ready인지 확인합니다.

  2. Agones가 GameServer의 전체 수명 주기를 할당하고 관리할 수 있는지 확인합니다. 기본 및 카나리아 배포 GameServers의 라벨이 예상 GameServerAllocationrequired 선택기와 동일한지 확인하여 매치메이커가 카나리아 배포에서 할당하기 위해 변경할 필요가 없도록 합니다. 또는 GameServerAllocation 사양의 'preferred' 속성을 사용하여 카나리아 플릿에서 선택적으로 할당할 수 있습니다.

  3. 배포에서 관련 게임 측정항목 및 시스템 측정항목이 성능 저하를 나타내지는 않는지 모니터링하여 확인합니다.

카나리아 리전에 출시

Game Servers를 사용하면 하나 이상의 렐름에서 구성을 재정의할 수 있습니다. 카나리아 리전의 클러스터가 별도의 렐름에 있는지 확인합니다.

이 예시에서 'australia' 렐름은 카나리아 렐름입니다.

카나리아용으로 별도의 렐름을 사용하는 아키텍처

australia 렐름에서 v2를 활성 구성으로 설정하려면 다음 안내를 따르세요.

  1. 다음 코드를 파일에 복사합니다.

    - realmsSelector:
        realms:
            - projects/games/locations/australia-southeast1/realms/australia
      configVersion: v2
    

  2. 변경사항을 적용하려면 다음 명령어를 실행합니다.

    gcloud game servers deployments update-rollout stk --config-overrides-file configOverrideFile  --no-dry-run
    

    여기서 configOverrideFile은 재정의 구성이 있는 파일의 경로입니다.

카나리아 출시 후 아키텍처

카나리아 리전이 정상임을 확인했으면 다음 명령어를 실행하여 새 버전을 모든 위치에 배포합니다.

gcloud game servers deployments update-rollout stk --default-config "v2" --no-dry-run

작업이 완료되면 v2 구성이 모든 위치에서 출시됩니다. 전체 출시 후 아키텍처

이제 다음 명령어를 실행하여 재정의를 정리하세요.

gcloud game servers deployments update-rollout stk --no-dry-run --clear-config-overrides

카나리아 배포 출시

별도의 배포를 사용하여 구성을 테스트할 수 있습니다. 처음에는 전용 카나리아 배포가 없습니다.

별도의 카나리아 배포 초기 상태

  1. 먼저 카나리아 배포를 만듭니다.

    gcloud game servers deployments create canary
    

    GameServerAllocation에 사용된 선택기가 기본 Allocation 및 카나리아 플릿에서 GameServer를 선택할 수 있는지 확인하여 현재 할당 전략에 대한 변경 사항이 적용되지 않게 합니다.

  2. 이제 다음 명령어를 실행하여 카나리아가 아닌 배포에서 활성 구성과 동일한 v1 구성을 만듭니다.

    gcloud game servers configs create v1 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
    

    여기서 fleetSpecFile은 전체 사양을 포함하는 파일의 경로입니다. scalingConfigFile은 모든 확장 구성이 포함된 파일의 경로입니다.

    카나리아 플릿이 일반 플릿보다 훨씬 작은 크기로 확장 구성을 설정하는 것이 좋습니다.

  3. 다음 명령어를 실행하여 카나리아 출시를 업데이트하여 v1 구성이 모든 위치에서 출시되도록 합니다.

    gcloud game servers deployments update-rollout canary --default-config v1 --no-dry-run
    

    카나리아 플릿이 정상인지 확인합니다.

    초기 카나리아 배포 후 아키텍처

  4. 다음 명령어를 실행하여 카나리아 배포에서 v2 구성을 만듭니다.

    gcloud game servers configs create v2 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
    

    여기서 fleetSpecFile은 전체 사양을 포함하는 파일의 경로입니다. scalingConfigFile은 모든 확장 구성이 포함된 파일의 경로입니다. 카나리아 플릿은 작은 크기로 구성하는 것이 좋습니다.

  5. 다음 명령어를 실행하여 v2 구성을 카나리아 배포에 출시합니다.

    gcloud game servers deployments update-rollout canary --default-config v2 --no-dry-run
    

    카나리아 플릿이 정상인지 확인합니다.

    새 카나리아 배포 후 아키텍처

  6. 다음 명령어를 실행하여 v2 구성을 기본 배포에 출시합니다.

    gcloud game servers deployments update-rollout stk --default-config v2 --no-dry-run
    

    플릿이 정상 상태인지 확인합니다. 이 단계에서 v2가 모든 위치에서 출시됩니다.

    배포 후 아키텍처

  7. 카나리아 배포를 정리합니다.

    1. 다음을 실행하여 카나리아 배포의 출시를 삭제하세요.

      gcloud game servers deployments update-rollout canary --clear-default-config --no-dry-run
      

    2. 다음 명령어를 실행하여 'v1' 구성을 삭제합니다.

      gcloud game servers configs delete v1 --deployment=canary
      

    3. 다음을 실행하여 'v2' 구성을 삭제합니다.

      gcloud game servers configs delete v2 --deployment=canary
      

    4. 다음을 실행하여 카나리아 배포를 삭제합니다.

      gcloud game servers deployments delete canary
      

    삭제 후 아키텍처

배포를 보다 세밀하게 제어하려면 구성을 기본값으로 설정하기 전에 재정의를 사용하여 선택한 렐름에 구성을 출시할 수 있습니다. 동일한 절차에 따라 카나리아를 점진적으로 출시하세요.

앞의 카나리아 배포를 유지하여 처음 세 단계와 마지막 단계를 건너뛸 수 있습니다. 빈번하고 정기적인 출시의 경우에는 이 방식을 사용하는 것이 좋습니다.