昨日、ChrisCampbellからのこのツイートをフィードで見ました。
ああ、思い出... Quake III Arenaは、私の大好きな一人称シューティングゲームの1つです。
私は過去に、友人や敵とこのペースの速いゲームをプレイすることに多くの時間を費やしました(そして失いました)。さて、おかげQuakeKubeのプロジェクト からの キャピタルワンテック、コンテナの世界とKubernetesはそれに開いています。
QuakeKubeはのKubernetesバージョンです QuakeJS。これを行うために、専用のQuake 3サーバーが対応するデプロイメントで起動され、 クライアントはブラウザーのQuakeJSを介して接続します。
もちろん、特にドキュメントで次のことを確認した後、私はこのプロジェクトを試してみたいと思っていました。
コンテナイメージはDockerBuildxとクロスコンパイルされ 、さまざまなアーキテクチャとオペレーティングシステムを備えたハードウェアで実行できます。linux/amd64
およびの 現在利用可能なバージョンlinux/arm64
。
ARM64サポート!クラスなので、Raspberry Piの1つでQuakeを実行できます! (注の翻訳:記事の後半で、Raspberry Piにk3をインストールするオプションを検討します。通常の[バニラ] Kubernetesに興味がある場合は、最近これについて書きました。)
さあ、撃ちましょう!
ほとんどの作業はすでに他の愛好家によって行われているため、適切なツールと計画があれば、ゲームを起動して実行するのに数分しかかかりません。
要件
- ARM64をサポートするUbuntu20.04を実行しているRaspberryPi
-
k3sup
-ローカルまたはリモートの仮想マシンにk3を自動インストールおよび構成するための軽量ユーティリティ。 -
arkade
-厳密に定義されたフラグを備えたGolangのシンプルなCLIにより、チャートやアプリケーションをクラスターに簡単かつ簡単にインストールできます。 -
kubectl
; - DigitalOceanアカウントとAPIトークン。
インストールと構成
まず
k3s
、Ubuntu20.04などのARM64互換オペレーティングシステムを搭載したRaspberryPiにインストール します。
$ k3sup install --ip 192.168.0.52 --user ubuntu --k3s-extra-args '--no-deploy servicelb --no-deploy traefik'
Raspberry Piにk3sをインストールした後、k3supは必要なファイル
kubeconfig
を現在の作業ディレクトリにダウンロードします 。
kubectl
この構成を使用するように構成 します。
$ export KUBECONFIG=$(pwd)/kubeconfig
次に
arcade
、inlets-operatorを次のようにインストールします。
$ arkade install inlets-operator --provider digitalocean --token-file ~/do-api-token
インレットオペレーターは、DigitalOcean上にいわゆるインレット出口ノードを作成します 。k3sプライベートクラスターLoadBalancerサービスのパブリックIPアドレスを提供します。
クライアントはWebソケットを備えたブラウザでQuakeJSを介してサーバーに接続するため、これにはOSSバージョンのインレットで十分です。TLSなどのサポートが必要な場合は、PROバージョンに注意することをお勧めします。
最後に、プロジェクトのGitHubリポジトリからQuakeKube YAMLファイルを取得し、それに応じて編集します。サービスは、(NodePortではなく)LoadBalancerに置き換える必要があります。必要に応じて、ゲーム自体のパラメーターをカスタマイズすることもできます。
QuakeKubeのYAML構成の例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: quakejs
spec:
selector:
matchLabels:
run: quakejs
replicas: 1
template:
metadata:
labels:
run: quakejs
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '8080'
spec:
containers:
- command:
- q3
- server
- --config=/config/config.yaml
- --content-server=http://localhost:9090
- --agree-eula
image: docker.io/criticalstack/quake:v1.0.5
name: server
ports:
- containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 5
volumeMounts:
- name: quake3-server-config
mountPath: /config
- name: quake3-content
mountPath: /assets
- command:
- q3
- content
- --seed-content-url=http://content.quakejs.com
image: docker.io/criticalstack/quake:v1.0.5
name: content-server
ports:
- containerPort: 9090
volumeMounts:
- name: quake3-content
mountPath: /assets
volumes:
- name: quake3-server-config
configMap:
name: quake3-server-config
- name: quake3-content
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: quakejs
spec:
type: LoadBalancer
selector:
run: quakejs
ports:
- port: 80
targetPort: 8080
name: http
---
apiVersion: v1
kind: ConfigMap
metadata:
name: quake3-server-config
data:
config.yaml: |
fragLimit: 25
timeLimit: 15m
bot:
minPlayers: 3
game:
motd: "Welcome to Critical Stack"
type: FreeForAll
forceRespawn: false
inactivity: 10m
quadFactor: 3
weaponRespawn: 3
server:
hostname: "quakekube"
maxClients: 12
password: "changeme"
commands:
- addbot sarge 2
maps:
- name: q3dm7
type: FreeForAll
timeLimit: 10m
- name: q3dm17
type: FreeForAll
- name: q3wctf1
type: CaptureTheFlag
captureLimit: 8
- name: q3tourney2
type: Tournament
- name: q3wctf3
type: CaptureTheFlag
captureLimit: 8
- name: ztn3tourney1
type: Tournament
ランニング
このマニフェストをk3sクラスターに適用します。
$ kubectl apply -f example.yaml deployment.apps/quakejs created service/quakejs created configmap/quake3-server-config created
すべてのポッドが実行され、inlets-operatorが独自のexit-nodeを作成するまで待ち ます。
$ kubectl get pods,service NAME READY STATUS RESTARTS AGE pod/inlets-operator-76fb794578-s2fg4 1/1 Running 0 147m pod/quakejs-tunnel-client-6f7c986dfc-mdt5w 1/1 Running 0 50s pod/quakejs-786cc496b-g7b7n 2/2 Running 0 80s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 152m service/quakejs LoadBalancer 10.43.46.33 143.110.174.204,143.110.174.204 80:32116/TCP 80s
以上です!お気に入りのブラウザを起動し、アプリケーションをダウンロードして、あらゆる方向から撮影を開始してください!
便利なリンク
- 地震久部;
- インレット-オペレーター;
- k3sup ;
- arkade。
翻訳者からのPS
QuakeJSの実際のデモをここで確認/試すことができ ます。
私たちのブログも読んでください: