Agones Quickstart Edit a Game Serverをなんとかできた

Quickstart: Edit a Game Server
必要なもの
- Go環境
- Docker
- GKEかminikube (だけど今回はkind)
- kubectlが使える
Kind立ち上げ
kind create cluster
helm install agones --namespace agones-system --create-namespace agones/agones
リポジトリをクローン
シンプルにローカルに持ってきます。
コード変更
simple-game-serverはゲームサーバーとして立ち上げた後に
クライアントとしてゲームサーバーへUDPで接続すると、送ったメッセージをそのまま返してくれます。
Quickstartでは返してくるメッセージを少し変えてみるって感じです
変更するファイルは examples/simple-game-server/main.go です。
response = "ACK Echo Says: " + response + "\n"
へ変更し保存します
ビルド
cd examples/simple-game-server/
go get agones.dev/agones/pkg/sdk
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o bin/server -a -v main.go
make WITH_WINDOWS=0 WITH_ARM64=0 REPOSITORY=sample push
.
.
denied: requested access to the resource is denied
make: *** [push-linux-image-amd64] Error 1
最後にエラーが出ますが、ローカルのdockerにはイメージが作られていたので問題なしです。
イメージのロード
kindで使えるようにイメージをロードします。
kind load docker-image sample/simple-game-server:0.32-amd64
GameServerファイルを変更
エラーが出て、そのままapplyできなかったので、微妙に変えたりしました。
---
# Copyright 2020 Google LLC All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: agones.dev/v1
kind: GameServer
metadata:
name: simple-game-server
spec:
ports:
- name: default
portPolicy: Dynamic
containerPort: 7654
template:
spec:
containers:
- name: simple-game-server
image: sample/simple-game-server:0.32-amd64
imagePullPolicy: IfNotPresent
resources:
requests:
memory: 64Mi
cpu: 20m
limits:
memory: 64Mi
cpu: 20m
上記ファイルをapplyします。
kubectl apply -f gameserver.yaml
ゲームサーバーのIPとポートを確認
kubectl get gs -o jsonpath='{.items[0].status.address}:{.items[0].status.ports[0].port}'
172.18.0.2:7908
接続用Pod作成
kubectl run udp --image mendhak/udp-listener
Podの中に入ります
kubectl exec -it udp -- sh
Podから接続
# nc -u 172.18.0.2 7908
A
ACK Echo Says: A
YATTA~
ACK Echo Says: YATTA~
EXIT
ACK Echo Says: EXIT
できました。
ゲームサーバーに接続できなくて、3日くらい詰まっていました。
kindはUDPのポートフォワーディングができないんですね。
よくわからないサービス作って、接続できない〜!ってなっていましたが、シンプルにPodから接続でいいやという事に気づきました。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント