본문 바로가기
DevOps 잡다구리/Kubernetes Stuff

[Kubernetes] Agones simple server 를 EKS 에 올려보기?

by WhiteGoblin 2024. 3. 20.
반응형

 최근에 업무로 인해서 Agones 를 사용해야하는 이슈가 있었다 그래서 agones 설치 및 fleet server 설치까지 진행한 부분을 공유하고자 합니다. 


1. Agones 설치 

 

 저는 agones 를 우선 argocd 의 app of apps 형태로 deploy 하였습니다, 하지만 공식 문서에서 하는데로 하자면 

helm repo add agones https://agones.dev/chart/stable
helm repo update
helm install my-release --namespace agones-system --create-namespace agones/agones

 

위의 명령어로 간단하게 서버를 올릴 수 있습니다.


특정 버전으로 올리고자 한다면 "--version" 으로 올리시면 될거 같습니다. 

참고로 저는 EKS 위에 올렸습니다. EKS 에 올리시는 경우에는 SG ( Security Group ) 에 대한 확인이 필요하실겁니다. 

Agones 의 경우 노드의 7000-8000 포트를 찾아서 개방하기 때문에 이 부분을 SG 에 추가해주셔야 TCP 혹은 UDP 요청이 들어갑니다. 

 

해당 부분에 대한 링크는 아래에 있습니다. 

https://agones.dev/site/docs/installation/creating-cluster/eks/

2. Agones Fleet 사용해보기 

우선 fleet 에 대한 자세한 설명은 

https://agones.dev/site/docs/reference/fleet/

 

Amazon Elastic Kubernetes Service

Follow these steps to create an [Amazon Elastic Kubernetes Service (EKS)](https://aws.amazon.com/eks/) cluster for your Agones install.

agones.dev

 

Fleet Specification

A `Fleet` is a set of warm GameServers that are available to be allocated from.

agones.dev

 

위에 있으나 간단하게 설명하자면 

"Gameserver 를 관리하는 하나의 set" 이라고 이해하시면 쉬울거 같습니다. 

즉 kubernetes 에서 pod를 하나의 deployment 으로 관리 하듯이 agones 에서는 fleet 을 통해서 여러 게임 서버를 관리 해줄 수 있습니다.

이 fleet 을 통해서 gameserver 를 관리하게 되면 

- kubernetes 에 해당 Gameserver 이미지를 가지고 있는 pod 를 생성 및 container port 를 열어주게 됩니다. 
- gameserver 가 올라가 있는 IP 및 개방한 port 를 알려주게 됩니다. 

- gameserver 가 종료 되면 다음 게임 서버를 사용자가 원하는 replicas 만큼 유지 해줍니다. 

3. 실제 서버 통신 해보기 

https://github.com/googleforgames/agones/blob/release-1.39.0/examples/fleet.yaml

 

에서 제공 해주는 예시는 UDP 서버로 되어 있어서 요청을 보낼떄는 telnet 혹은 nc ( netcat ) 을 사용해서 보내주면 됩니다. 

이러한 simple game server 예시의 코드를 뒤지다 보면 EXIT 을 받았을 때 게임 서버를 종료 해준다는 것을 의미합니다. 

echo "EXIT" | nc -u [IP] [PORT]

 

저의 경우 netcat 을 사용하였고 요청 이후 ACK 오는것을 확인 하고 Gameserver 또한 종료 후 새로 띄워진것을 확인 했습니다. 

위 서버를 tcp 로 변경하고자 하면 tcp flag 옵션을 주면 되는데 해당 예제는 아래에 링크를 남기겠습니다. 

https://github.com/googleforgames/agones/blob/release-1.39.0/examples/simple-game-server/fleet-tcp.yaml

이렇듯 게임 서버를 운영하는데 Kubernetes 를 활용할 수 있는 agones 를 대충 훑어보았습니다. 

생각보다 간단하지만 여러가지 챙겨야 하는 옵션들이 있어서 나름 시간을 먹었던거 같습니다. 

필요하신 경우에 알맞게 사용하면 유용한 툴인거 같습니다.

반응형