멀티 클러스터 할당 구성

이 페이지에서는 Game Servers에 대해 멀티 클러스터 할당을 구성하는 방법을 설명합니다. 멀티 클러스터 할당을 사용하면 한 렐름 내의 한 클러스터에서 Ready 상태의 GameServer를 요청하고, 해당 렐름 내의 모든 클러스터에서 Ready 상태의 GameServer를 다시 가져올 수 있습니다. 멀티 클러스터 할당을 위해서는 클러스터가 서로 연결되도록 설정하고 멀티 클러스터 할당 엔드포인트에도 연결되도록 설정하는 수동 구성 및 설정이 필요합니다.

GameServer 할당에 관한 상세 내용은 Agones Game Servers 플릿 만들기 빠른 시작에서 전체 개요를 확인하세요.

시작하기 전에

시작하기 전에 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
    

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

    gcloud version
    

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

    gcloud components update
    

    클라이언트 라이브러리

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

Agones 할당자 서비스 구성

Agones 할당자 서비스를 구성하고 각 클러스터에 유효한 서버 TLS 인증서를 설정하려면 Agones 할당자 서비스 가이드를 참조하세요.

동일한 가이드에 따라 각 클러스터에 대해 멀티 클러스터 할당 엔드포인트로의 연결을 허용하는 클라이언트 인증서를 구성합니다.

멀티 클러스터 할당 엔드포인트를 사용하는 외부 시스템의 인증을 위해 필요하므로, 인증서를 안전한 위치에 보관하세요.

Citadel 설치

Game Servers는 Citadel 프로젝트를 사용하여 클러스터 간 보안 연결을 지원합니다. 따라서 Game Servers에 등록된 각 Google Kubernetes Engine 클러스터에 설치해야 합니다.

Google Kubernetes Engine 클러스터에 Istio를 이미 설치한 경우 이 단계를 건너뛸 수 있습니다.

Terraform 사용자의 경우에는 Terraform을 사용하여 Citadel을 설치할 수 있습니다. GitHub에 Terraform을 사용하여 Citadel 설치에 대한 자세한 내용은 예시 구성 파일을 참조하세요.

Citadel을 설치하려면 다음 안내를 따르세요.

  1. Istio GitHub 저장소를 클론합니다.

    git clone -b release-1.5 https://github.com/istio/istio.git
    
    cd istio
    
  2. Istio의 새 네임스페이스를 만듭니다.

    kubectl create ns istio-system
    

  3. 다음 각 명령어를 복사하고 실행하여 Istio Helm 템플릿에서 Citadel YAML 설치 파일을 생성합니다.

    helm template install/kubernetes/helm/istio --name istio --namespace istio-system -x charts/security/templates/serviceaccount.yaml > citadel-sa.yaml
    
    helm template install/kubernetes/helm/istio --name istio --namespace istio-system -x charts/security/templates/clusterrole.yaml > citadel-cr.yaml
    
    helm template install/kubernetes/helm/istio --name istio --namespace istio-system -x charts/security/templates/clusterrolebinding.yaml > citadel-crb.yaml
    
    helm template install/kubernetes/helm/istio --name istio --namespace istio-system -x charts/security/templates/deployment.yaml > citadel.yaml
    

  4. 그런 후 다음 순서에 따라 명령어를 실행하여 이전 단계에서 생성한 YAML 파일을 Google Kubernetes Engine 클러스터에 적용합니다.

    kubectl apply -f citadel-sa.yaml
    
    kubectl apply -f citadel-cr.yaml
    
    kubectl apply -f citadel-crb.yaml
    
    kubectl apply -f citadel.yaml
    
  5. Citadel이 올바르게 작동하는지 확인합니다.

    kubectl get pods --namespace=istio-system
    

    Citadel 배포가 단일 Pod로 실행되는지 확인합니다.

멀티 클러스터 할당 검사

Game Servers 배포 출시 후 렐름 내의 클러스터에서 게임 서버가 준비 상태인지 확인합니다.

멀티 클러스터 할당이 올바르게 작동하는지 확인하려면 Agones 멀티 클러스터 할당 예시를 참조하세요.

이제 렐름 내 모든 클러스터의 모든 엔드포인트를 사용하여 렐름의 GameServer를 할당할 수 있습니다. GameServer 할당은 라운드 로빈 스키마를 사용하여 렐름 내의 모든 클러스터에 부하가 분산됩니다.

다음 단계