The following guide is for developers without Docker or Kubernetes experience, that want to use the simple-udp example as a starting point for a custom game server. Since this guide is for Google Kubernetes Engine, we welcome a Pull Request to expand this to include Minikube as well.
- Downland and install Golang from https://golang.org/dl/.
- Install Docker from https://www.docker.com/get-docker.
- Follow the install instructions (if you haven't already) at Install and configure Agones on Kubernetes. At least, you should have "Setting up a Google Kubernetes Engine (GKE) cluster", "Enabling creation of RBAC resources" and "Installing Agones" done.
Modify the main.go file. For example:
Change main.go line 92:
From:
ack := "ACK: " + txt + "\n"
To:
ack := "ACK: Hi," + txt + "\n"
Since Docker image is using Alpine Linux, the "go build" command has to include few more environment variables.
go get agones.dev/agones/pkg/sdk
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o bin/server -a -v main.go
docker build -t gcr.io/[PROJECT_ID]/agones-udp-server:0.2 .
Note that: you can change the image name "agones-udp-server" to something else.
docker push gcr.io/[PROJECT_ID]/agones-udp-server:0.2
Modify the following line from gameserver.yaml to use the new configuration.
spec:
containers:
- name: agones-simple-udp
image: gcr.io/[PROJECT_ID]/agones-udp-server:0.2
Apply the latest settings to kubernetes container.
>> gcloud config set container/cluster [CLUSTER_NAME]
>> gcloud container clusters get-credentials [CLUSTER_NAME]
>> kubectl apply -f gameserver.yaml
>> kubectl describe gameserver
Follow the instruction from this link: https://github.com/GoogleCloudPlatform/agones/blob/master/docs/create_gameserver.md.
Let's retrieve the IP address and the allocated port of your Game Server :
kubectl get gs simple-udp -o jsonpath='{.status.address}:{.status.port}'
You can now communicate with the Game Server :
NOTE: if you do not have netcat installed (i.e. you get a response of
nc: command not found
), you can install netcat by runningsudo apt install netcat
.
nc -u {IP} {PORT}
Hello World !
ACK: Hello World !
EXIT
You can finally type EXIT
which tells the SDK to run the Shutdown command, and therefore shuts down the GameServer
.
If you run kubectl describe gameserver
again - either the GameServer will be gone completely, or it will be in Shutdown
state, on the way to being deleted.