Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: ci

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
helm:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: v3.18.4

- name: helm lint
run: helm lint . --set cluster.name=test

- name: Render snapshots and diff against committed copies
run: |
set -euo pipefail
mkdir -p /tmp/snapshots
helm template platform . --set cluster.name=test > /tmp/snapshots/default.yaml
helm template platform . --set cluster.name=test --set defaultFleet.enabled=false > /tmp/snapshots/no-default-fleet.yaml
helm template platform . --set cluster.name=test --set image.tag=v0.7.0 > /tmp/snapshots/custom-image.yaml
for snap in default no-default-fleet custom-image; do
if ! diff -u "tests/snapshots/${snap}.yaml" "/tmp/snapshots/${snap}.yaml"; then
echo "::error::tests/snapshots/${snap}.yaml drift detected. Regenerate with:"
echo " helm template platform . --set cluster.name=test [...] > tests/snapshots/${snap}.yaml"
exit 1
fi
done
echo "All snapshots match."
24 changes: 24 additions & 0 deletions templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Grounds platform-dev workspace deployed for `{{ .Values.cluster.name }}`.

Public hostname:
{{ .Values.cluster.name }}.platform.mc.grnds.io

Verify the deploy:
kubectl -n {{ .Release.Namespace }} get deploy {{ include "platform-vcluster-template.velocityName" . }}
kubectl -n {{ .Release.Namespace }} get svc {{ include "platform-vcluster-template.velocityName" . }}
{{ if .Values.defaultFleet.enabled }}
Default Agones Fleet:
kubectl -n {{ .Release.Namespace }} get fleet {{ include "platform-vcluster-template.defaultFleetName" . }}
kubectl -n {{ .Release.Namespace }} get gameservers -l agones.dev/fleet={{ .Values.defaultFleet.name }}
{{ else }}
Default Fleet is disabled — push your own Agones Fleet to get a backend.
{{ end -}}

Plugin-agones discovery config (env vars in ConfigMap {{ include "platform-vcluster-template.velocityName" . }}-agones-config):
GROUNDS_AGONES_NAMESPACE {{ .Values.agones.namespace | default "(POD_NAMESPACE via Downward API)" | quote }}
GROUNDS_AGONES_LABEL_SELECTOR {{ .Values.agones.labelSelector | default "(no filter)" | quote }}
GROUNDS_AGONES_LOBBY_LABEL {{ .Values.agones.lobbyLabel | default "(every running GS treated as lobby)" | quote }}
GROUNDS_AGONES_POLL_INTERVAL {{ .Values.agones.pollInterval | quote }}

To follow logs:
kubectl -n {{ .Release.Namespace }} logs -f deploy/{{ include "platform-vcluster-template.velocityName" . }}
208 changes: 208 additions & 0 deletions tests/snapshots/custom-image.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
---
# Source: platform-vcluster-template/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: platform-velocity
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/version: "0.6.0"
app.kubernetes.io/managed-by: Helm
helm.sh/chart: platform-vcluster-template-0.0.0
app.kubernetes.io/component: velocity
---
# Source: platform-vcluster-template/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: platform-velocity-agones-config
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/version: "0.6.0"
app.kubernetes.io/managed-by: Helm
helm.sh/chart: platform-vcluster-template-0.0.0
app.kubernetes.io/component: velocity
data:
GROUNDS_AGONES_NAMESPACE: ""
GROUNDS_AGONES_LABEL_SELECTOR: ""
GROUNDS_AGONES_LOBBY_LABEL: ""
GROUNDS_AGONES_LOBBY_VALUE: "lobby"
GROUNDS_AGONES_RUNNING_STATES: "Ready,Allocated,Reserved"
GROUNDS_AGONES_POLL_INTERVAL: "2s"
GROUNDS_AGONES_ADDRESS_TYPE: "PodIP"
GROUNDS_AGONES_PORT: "25565"
---
# Source: platform-vcluster-template/templates/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: platform-velocity-agones
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/version: "0.6.0"
app.kubernetes.io/managed-by: Helm
helm.sh/chart: platform-vcluster-template-0.0.0
app.kubernetes.io/component: velocity
rules:
- apiGroups: ["agones.dev"]
resources: ["gameservers"]
verbs: ["get", "list", "watch"]
---
# Source: platform-vcluster-template/templates/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: platform-velocity-agones
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/version: "0.6.0"
app.kubernetes.io/managed-by: Helm
helm.sh/chart: platform-vcluster-template-0.0.0
app.kubernetes.io/component: velocity
subjects:
- kind: ServiceAccount
name: platform-velocity
roleRef:
kind: Role
name: platform-velocity-agones
apiGroup: rbac.authorization.k8s.io
---
# Source: platform-vcluster-template/templates/velocity-service.yaml
apiVersion: v1
kind: Service
metadata:
name: platform-velocity
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/version: "0.6.0"
app.kubernetes.io/managed-by: Helm
helm.sh/chart: platform-vcluster-template-0.0.0
app.kubernetes.io/component: velocity
annotations:
mc-router.itzg.me/externalServerName: "test.platform.mc.grnds.io"
spec:
type: ClusterIP
ports:
- name: mc
port: 25577
targetPort: mc
protocol: TCP
selector:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/component: velocity
---
# Source: platform-vcluster-template/templates/velocity-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: platform-velocity
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/version: "0.6.0"
app.kubernetes.io/managed-by: Helm
helm.sh/chart: platform-vcluster-template-0.0.0
app.kubernetes.io/component: velocity
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/component: velocity
template:
metadata:
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/component: velocity
annotations:

checksum/agones-config: 3f012194fb55f62e56039216140f8b49610dc5fc463c1804f79a2b294e42e3fe
spec:
serviceAccountName: platform-velocity
containers:
- name: velocity
image: "ghcr.io/groundsgg/velocity:v0.7.0"
imagePullPolicy: IfNotPresent
ports:
- name: mc
containerPort: 25577
protocol: TCP
envFrom:
- configMapRef:
name: platform-velocity-agones-config
env:

- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace

- name: GROUNDS_CLUSTER_NAME
value: "test"
readinessProbe:
tcpSocket:
port: mc
initialDelaySeconds: 30
periodSeconds: 10
livenessProbe:
tcpSocket:
port: mc
initialDelaySeconds: 60
periodSeconds: 30
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 200m
memory: 512Mi
---
# Source: platform-vcluster-template/templates/default-fleet.yaml
apiVersion: agones.dev/v1
kind: Fleet
metadata:
name: platform-lobby
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/version: "0.6.0"
app.kubernetes.io/managed-by: Helm
helm.sh/chart: platform-vcluster-template-0.0.0
app.kubernetes.io/component: default-fleet
spec:
replicas: 1
template:
metadata:
labels:
app.kubernetes.io/name: platform-vcluster-template
app.kubernetes.io/instance: platform
app.kubernetes.io/component: default-fleet
agones.dev/fleet: "lobby"
spec:
ports:
- name: default
portPolicy: Dynamic
containerPort: 7654
protocol: UDP
template:
spec:
containers:
- name: simple-game-server
image: "gcr.io/agones-images/simple-game-server:0.30"
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
Loading
Loading