diff --git a/.golangci.yml b/.golangci.yml index fc917eb4e0..3539265b04 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -18,14 +18,6 @@ run: # list of build tags, all linters use it. Default is empty list. build-tags: - # which dirs to skip: they won't be analyzed; - # can use regexp here: generated.*, regexp is applied on full path; - # default value is empty list, but next dirs are always skipped independently - # from this option's value: - # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ - skip-dirs: - - test/sdk/restapi - # which files to skip: they will be analyzed, but issues from them # won't be reported. Default value is empty list, but there is # no need to include all autogenerated files, we confidently recognize @@ -34,8 +26,15 @@ run: modules-download-mode: vendor # output configuration options output: - # colored-line-number|line-number|json|tab|checkstyle, default is "colored-line-number" - format: colored-line-number + # the formats used to render issues + # formats: colored-line-number, line-number, json, colored-tab, + # tab, html, checkstyle, code-climate, junit-xml, + # junit-xml-extended, github-actions, teamcity, sarif + # output path can be either `stdout`, `stderr` + # or path to the file to write to + formats: + - format: colored-line-number + path: stdout # print lines of code with issue, default is true print-issued-lines: true @@ -45,20 +44,21 @@ output: linters: enable: - bodyclose + - copyloopvar - dupl - - exportloopref - goconst - gocritic - gocyclo - goimports + - gosimple - govet - - megacheck - misspell - nakedret - revive - staticcheck - unconvert - unparam + - unused linters-settings: govet: disable-all: false @@ -88,3 +88,10 @@ issues: - path: (.+)_test\.go|^test/|^cmd/.*|^pkg/apis/.* # fieldalignment is in the `govet` linter, so exclude based on text instead of all of govet text: '^fieldalignment: .*' + + # which dirs to exclude: issues from them won't be reported + # default dirs are skipped independently of this option's value + # (see exclude-dirs-use-default) + # default: [] + exclude-dirs: + - test/sdk/restapi diff --git a/CHANGELOG.md b/CHANGELOG.md index cfbee0538e..1c697f3d96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,43 @@ # Changelog +## [v1.46.0](https://github.com/googleforgames/agones/tree/v1.46.0) (2025-01-02) + +[Full Changelog](https://github.com/googleforgames/agones/compare/v1.45.0...v1.46.0) + +**Breaking changes:** +- Removed reflector metric usage by @vicentefb in https://github.com/googleforgames/agones/pull/4056 + +**Implemented enhancements:** +- Set externalTrafficPolicy as Local for agones-allocator by @osterante in https://github.com/googleforgames/agones/pull/4022 +- Integrates upgrades tests into Cloud Build by @igooch in https://github.com/googleforgames/agones/pull/4037 +- Delete List Value(s) on Game Server Allocation by @igooch in https://github.com/googleforgames/agones/pull/4054 +- In place upgrades version update instructions by @igooch in https://github.com/googleforgames/agones/pull/4064 + +**Fixed bugs:** +- Correct CI check for examples and add a unit test by @wheatear-dev in https://github.com/googleforgames/agones/pull/4045 +- Enable counter based autoscaler to scale from 0 replicas by @geopaulm in https://github.com/googleforgames/agones/pull/4049 + +**Other:** +- Preparation for Release v1.46.0 by @0xaravindh in https://github.com/googleforgames/agones/pull/4043 +- Updates Kubernetes templates for cpp-simple image by @0xaravindh in https://github.com/googleforgames/agones/pull/4044 +- Changes upgrades clusters to use only us based regions by @igooch in https://github.com/googleforgames/agones/pull/4046 +- Clarify docs on GKE Autopilot and node pools by @danfairs in https://github.com/googleforgames/agones/pull/4048 +- Updated typo's in multiple files by @nallave in https://github.com/googleforgames/agones/pull/4055 +- Flake: e2e/TestScheduleAutoscaler by @markmandel in https://github.com/googleforgames/agones/pull/4058 +- Add ability to specify additional labels for controller and extension pods by @R4oulDuk3 in https://github.com/googleforgames/agones/pull/4057 +- Adds Documention for how to run an in-place Agones upgrade by @igooch in https://github.com/googleforgames/agones/pull/3904 +- Fixes build error in push-upgrade-test by @igooch in https://github.com/googleforgames/agones/pull/4065 +- Fix broken link by @0xaravindh in https://github.com/googleforgames/agones/pull/4070 +- Link to Google Cloud Agones Support. by @markmandel in https://github.com/googleforgames/agones/pull/4071 +- Upgrade Go to 1.23.4 and update example image tags by @0xaravindh in https://github.com/googleforgames/agones/pull/4072 +- Unblocks Agones release PR by waiting for either the Agones dev version or release version by @igooch in https://github.com/googleforgames/agones/pull/4078 + +**New Contributors:** +- @danfairs made their first contribution in https://github.com/googleforgames/agones/pull/4048 +- @osterante made their first contribution in https://github.com/googleforgames/agones/pull/4022 +- @nallave made their first contribution in https://github.com/googleforgames/agones/pull/4055 +- @R4oulDuk3 made their first contribution in https://github.com/googleforgames/agones/pull/4057 + ## [v1.45.0](https://github.com/googleforgames/agones/tree/v1.45.0) (2024-11-19) [Full Changelog](https://github.com/googleforgames/agones/compare/v1.44.0...v1.45.0) diff --git a/build/Makefile b/build/Makefile index 9bae434fab..2f6e2ac620 100644 --- a/build/Makefile +++ b/build/Makefile @@ -24,7 +24,7 @@ # # base version target. This is usually the next release. -base_version = 1.46.0 +base_version = 1.47.0 # # All of the following can be overwritten with environment variables @@ -64,7 +64,7 @@ KIND_PROFILE ?= agones KIND_CONTAINER_NAME=$(KIND_PROFILE)-control-plane # Game Server image to use while doing end-to-end tests -GS_TEST_IMAGE ?= us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 +GS_TEST_IMAGE ?= us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 # Enable all beta feature gates. Keep in sync with `true` (beta) entries in pkg/util/runtime/features.go:featureDefaults BETA_FEATURE_GATES ?= "AutopilotPassthroughPort=true&CountsAndLists=true&DisableResyncOnSDKServer=true&GKEAutopilotExtendedDurationPods=true" diff --git a/build/agones-bot/Dockerfile b/build/agones-bot/Dockerfile index b51890e8a7..71c0eb10a6 100644 --- a/build/agones-bot/Dockerfile +++ b/build/agones-bot/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.22 AS build-env +FROM golang:1.23 AS build-env COPY . /go-src WORKDIR /go-src RUN CGO_ENABLED=0 go build -o /go-app . diff --git a/build/agones-bot/go.mod b/build/agones-bot/go.mod index 57ce541f9b..721721de47 100644 --- a/build/agones-bot/go.mod +++ b/build/agones-bot/go.mod @@ -14,7 +14,7 @@ module github-bot -go 1.22 +go 1.23 require ( github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers v0.0.0-20210219212036-163c92a64b27 diff --git a/build/build-image/Dockerfile b/build/build-image/Dockerfile index c9a1f11cd4..08311431de 100644 --- a/build/build-image/Dockerfile +++ b/build/build-image/Dockerfile @@ -28,7 +28,7 @@ RUN gem install fpm && \ # install go WORKDIR /usr/local -ENV GO_VERSION=1.22.6 +ENV GO_VERSION=1.23.4 ENV GOPATH /go ENV GO111MODULE=on RUN wget -q https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && \ diff --git a/build/build-sdk-images/go/Dockerfile b/build/build-sdk-images/go/Dockerfile index 8f0eb1016d..cc24df169d 100644 --- a/build/build-sdk-images/go/Dockerfile +++ b/build/build-sdk-images/go/Dockerfile @@ -20,7 +20,7 @@ RUN apt-get --allow-releaseinfo-change update && \ # install go WORKDIR /usr/local -ENV GO_VERSION=1.22.6 +ENV GO_VERSION=1.23.4 ENV GO111MODULE=on ENV GOPATH /go RUN wget -q https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && \ diff --git a/build/build-sdk-images/restapi/Dockerfile b/build/build-sdk-images/restapi/Dockerfile index 6b74002182..ec0700b45e 100644 --- a/build/build-sdk-images/restapi/Dockerfile +++ b/build/build-sdk-images/restapi/Dockerfile @@ -20,7 +20,7 @@ RUN apt-get --allow-releaseinfo-change update && \ # install go WORKDIR /usr/local -ENV GO_VERSION=1.22.6 +ENV GO_VERSION=1.23.4 ENV GO111MODULE=on ENV GOPATH /go RUN wget -q https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && \ diff --git a/build/e2e-image/Dockerfile b/build/e2e-image/Dockerfile index 047382e41d..c73b233ec2 100644 --- a/build/e2e-image/Dockerfile +++ b/build/e2e-image/Dockerfile @@ -6,7 +6,7 @@ RUN apt-get update && \ # install go WORKDIR /usr/local -ENV GO_VERSION=1.22.6 +ENV GO_VERSION=1.23.4 ENV GOPATH /go ENV GO111MODULE=on RUN wget -q https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && \ diff --git a/build/grafana/dashboard-goclient-caches.yaml b/build/grafana/dashboard-goclient-caches.yaml deleted file mode 100644 index 0f668610d5..0000000000 --- a/build/grafana/dashboard-goclient-caches.yaml +++ /dev/null @@ -1,574 +0,0 @@ ---- -# Copyright 2019 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. - -# configs map used by grafana -apiVersion: v1 -kind: ConfigMap -metadata: - name: agones-goclient-caches - namespace: metrics - labels: - grafana_dashboard: '1' -data: - dashboard-agones-goclient-caches.json: |- - { - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 7, - "links": [], - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": null, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 9, - "w": 4, - "x": 0, - "y": 0 - }, - "id": 4, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "$$hashKey": "object:5575", - "name": "value to text", - "value": 1 - }, - { - "$$hashKey": "object:5576", - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "$$hashKey": "object:5432", - "expr": "agones_k8s_client_cache_last_resource_version", - "format": "time_series", - "instant": true, - "intervalFactor": 1, - "refId": "A" - } - ], - "thresholds": "", - "title": "Last resource version", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "$$hashKey": "object:5578", - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fill": 1, - "gridPos": { - "h": 9, - "w": 10, - "x": 4, - "y": 0 - }, - "id": 8, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "$$hashKey": "object:6208", - "expr": "sum(rate(agones_k8s_client_cache_list_items_sum[5m]) / rate(agones_k8s_client_cache_list_items_count[5m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "list items", - "refId": "A" - }, - { - "$$hashKey": "object:6270", - "expr": "sum(rate(agones_k8s_client_cache_watch_events_sum[5m]) / rate(agones_k8s_client_cache_watch_events_count[5m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "watch events", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Cache items rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:6309", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:6310", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fill": 1, - "gridPos": { - "h": 9, - "w": 10, - "x": 14, - "y": 0 - }, - "id": 9, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "$$hashKey": "object:6208", - "expr": "sum(agones_k8s_client_cache_list_items_sum / agones_k8s_client_cache_list_items_count)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "list items", - "refId": "A" - }, - { - "$$hashKey": "object:6270", - "expr": "sum(agones_k8s_client_cache_watch_events_sum / agones_k8s_client_cache_watch_events_count)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "watch events", - "refId": "B" - }, - { - "$$hashKey": "object:6551", - "expr": "", - "format": "time_series", - "intervalFactor": 1, - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Cache avg items per operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:6309", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:6310", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fill": 1, - "gridPos": { - "h": 9, - "w": 14, - "x": 0, - "y": 9 - }, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "$$hashKey": "object:5637", - "expr": "sum(rate(agones_k8s_client_cache_list_duration_seconds_sum[5m]) / rate(agones_k8s_client_cache_list_duration_seconds_count[5m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "list", - "refId": "A" - }, - { - "$$hashKey": "object:5785", - "expr": "sum(rate(agones_k8s_client_cache_watch_duration_seconds_sum[5m]) / rate(agones_k8s_client_cache_watch_duration_seconds_count[5m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "watch", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Avg List/Watch requests duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:5813", - "format": "s", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:5814", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fill": 1, - "gridPos": { - "h": 9, - "w": 10, - "x": 14, - "y": 9 - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(agones_k8s_client_cache_list_total[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "list", - "refId": "A" - }, - { - "expr": "sum(rate(agones_k8s_client_cache_watches_total[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "watch", - "refId": "B" - }, - { - "expr": "sum(rate(agones_k8s_client_cache_short_watches_total[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "short watch", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Caches operations rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "10s", - "schemaVersion": 16, - "style": "dark", - "tags": [ - "controller", - "agones", - "client-go" - ], - "templating": { - "list": [] - }, - "time": { - "from": "now-30m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Agones Controller go-client caches", - "uid": "IcQY6i_iz", - "version": 6 - } diff --git a/build/includes/website.mk b/build/includes/website.mk index 6673ab4c16..1b9a5d154e 100644 --- a/build/includes/website.mk +++ b/build/includes/website.mk @@ -80,9 +80,11 @@ site-images: ${site_path}/static/diagrams/system-diagram.dot.png site-images: $(site_path)/static/diagrams/gameserver-lifecycle.puml.png site-images: $(site_path)/static/diagrams/gameserver-reserved.puml.png site-images: $(site_path)/static/diagrams/canary-testing.puml.png -site-images: $(site_path)/static/diagrams/allocation-player-capacity.puml.png +site-images: $(site_path)/static/diagrams/allocation-player-capacity-tracking.puml.png +site-images: $(site_path)/static/diagrams/allocation-player-capacity-list.puml.png site-images: $(site_path)/static/diagrams/reusing-gameservers.puml.png -site-images: $(site_path)/static/diagrams/high-density.puml.png +site-images: $(site_path)/static/diagrams/high-density-label-lock.puml.png +site-images: $(site_path)/static/diagrams/high-density-counters.puml.png # generate pngs from dot files %.dot.png: %.dot diff --git a/build/report/cloudbuild.yaml b/build/report/cloudbuild.yaml index 89e40fa59b..ebdc12f7d4 100644 --- a/build/report/cloudbuild.yaml +++ b/build/report/cloudbuild.yaml @@ -19,7 +19,7 @@ steps: id: build-report script: | #!/usr/bin/env bash - export GO_VERSION=1.22.6 + export GO_VERSION=1.23.4 cd /usr/local curl -SsL https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz | tar -xzf- export PATH=/usr/local/go/bin:${PATH} diff --git a/build/scripts/example-version-checker/go.mod b/build/scripts/example-version-checker/go.mod index 43a5b6c254..adf4acc0c9 100644 --- a/build/scripts/example-version-checker/go.mod +++ b/build/scripts/example-version-checker/go.mod @@ -1,6 +1,6 @@ module github.com/agones/agones/build/scripts/example-version-checker -go 1.21 +go 1.23 require github.com/go-git/go-git/v5 v5.12.0 diff --git a/build/scripts/k8s-export-openapi/go.mod b/build/scripts/k8s-export-openapi/go.mod index 83b54b9e9a..5d016d3d8e 100644 --- a/build/scripts/k8s-export-openapi/go.mod +++ b/build/scripts/k8s-export-openapi/go.mod @@ -1,5 +1,5 @@ module github.com/agones/agones/build/scripts/k8s-export-openapi -go 1.22 +go 1.23 require github.com/itchyny/json2yaml v0.1.4 diff --git a/build/scripts/previousversion/go.mod b/build/scripts/previousversion/go.mod index faa850d4d6..b136e14291 100644 --- a/build/scripts/previousversion/go.mod +++ b/build/scripts/previousversion/go.mod @@ -1,5 +1,5 @@ module github.com/agones/agones/build/scripts/previousversion -go 1.22 +go 1.23 require github.com/blang/semver/v4 v4.0.0 diff --git a/build/scripts/site-config-update-version/go.mod b/build/scripts/site-config-update-version/go.mod index df625029e6..65b976db96 100644 --- a/build/scripts/site-config-update-version/go.mod +++ b/build/scripts/site-config-update-version/go.mod @@ -1,5 +1,5 @@ module github.com/agones/agones/build/scripts/site-config-update-version -go 1.22 +go 1.23 require github.com/pelletier/go-toml v1.9.5 diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 29f08f5452..e55cde729b 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -556,7 +556,7 @@ steps: done substitutions: - _BASE_VERSION: 1.46.0 + _BASE_VERSION: 1.47.0 _CACHE_BUCKET: agones-build-cache _HTMLTEST_CACHE_KEY: htmltest-0.10.1 _CPP_SDK_BUILD_CACHE_KEY: cpp-sdk-build diff --git a/examples/allocation-endpoint/Makefile b/examples/allocation-endpoint/Makefile index 11cd82079f..178dea5105 100644 --- a/examples/allocation-endpoint/Makefile +++ b/examples/allocation-endpoint/Makefile @@ -30,7 +30,7 @@ PROD_REPO ?= us-docker.pkg.dev/agones-images/examples mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) project_path := $(dir $(mkfile_path)) root_path = $(realpath $(project_path)/../..) -version := 0.10 +version := 0.11 ifeq ($(REPOSITORY),) server_tag := allocation-endpoint-proxy:$(version) else diff --git a/examples/allocation-endpoint/client/go.mod b/examples/allocation-endpoint/client/go.mod index 130a01f7cb..77458bb1da 100644 --- a/examples/allocation-endpoint/client/go.mod +++ b/examples/allocation-endpoint/client/go.mod @@ -1,6 +1,6 @@ module agones.dev/agones/examples/allocation-endpoint/client -go 1.22 +go 1.23 require ( agones.dev/agones v1.35.0 diff --git a/examples/allocation-endpoint/server/Dockerfile b/examples/allocation-endpoint/server/Dockerfile index 9eab717bf7..2b8362426a 100644 --- a/examples/allocation-endpoint/server/Dockerfile +++ b/examples/allocation-endpoint/server/Dockerfile @@ -14,7 +14,7 @@ # syntax=docker/dockerfile:1 -FROM golang:1.22-alpine +FROM golang:1.23-alpine WORKDIR /app diff --git a/examples/allocation-endpoint/server/go.mod b/examples/allocation-endpoint/server/go.mod index 90cce5a8a9..97cad67cac 100644 --- a/examples/allocation-endpoint/server/go.mod +++ b/examples/allocation-endpoint/server/go.mod @@ -1,6 +1,6 @@ module agones.dev/agones/examples/allocation-endpoint/server -go 1.22 +go 1.23 require ( agones.dev/agones v1.35.0 diff --git a/examples/allocation-endpoint/terraform/variable.tf b/examples/allocation-endpoint/terraform/variable.tf index 5d61a7040f..b95b7b7464 100644 --- a/examples/allocation-endpoint/terraform/variable.tf +++ b/examples/allocation-endpoint/terraform/variable.tf @@ -20,7 +20,7 @@ variable "project_id" { variable "ae_proxy_image" { type = string description = "The docker image of the allocation proxy." - default = "us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.10" + default = "us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.11" } variable "region" { diff --git a/examples/autoscaler-webhook/Dockerfile b/examples/autoscaler-webhook/Dockerfile index f355da626b..2826fa0df8 100644 --- a/examples/autoscaler-webhook/Dockerfile +++ b/examples/autoscaler-webhook/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # Gather dependencies and build the executable -FROM golang:1.22.6 as builder +FROM golang:1.23.4 as builder WORKDIR /go/src COPY . agones.dev/agones diff --git a/examples/autoscaler-webhook/Makefile b/examples/autoscaler-webhook/Makefile index 9b1a5800b9..146b9e0df1 100644 --- a/examples/autoscaler-webhook/Makefile +++ b/examples/autoscaler-webhook/Makefile @@ -29,7 +29,7 @@ PROD_REPO ?= us-docker.pkg.dev/agones-images/examples mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) project_path := $(dir $(mkfile_path)) root_path := $(realpath $(project_path)/../..) -version := 0.15 +version := 0.16 ifeq ($(REPOSITORY),) autoscaler_webhook_tag := autoscaler-webhook:$(version) else diff --git a/examples/autoscaler-webhook/autoscaler-service-tls.yaml b/examples/autoscaler-webhook/autoscaler-service-tls.yaml index 124e635f1d..0128a45e82 100644 --- a/examples/autoscaler-webhook/autoscaler-service-tls.yaml +++ b/examples/autoscaler-webhook/autoscaler-service-tls.yaml @@ -54,7 +54,7 @@ spec: secretName: autoscalersecret containers: - name: autoscaler-webhook - image: us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.15 + image: us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.16 imagePullPolicy: Always volumeMounts: - mountPath: /home/service/certs diff --git a/examples/autoscaler-webhook/autoscaler-service.yaml b/examples/autoscaler-webhook/autoscaler-service.yaml index d5d4a808f0..abf3ae08eb 100644 --- a/examples/autoscaler-webhook/autoscaler-service.yaml +++ b/examples/autoscaler-webhook/autoscaler-service.yaml @@ -50,7 +50,7 @@ spec: # serviceAccount: autoscaler-webhook containers: - name: autoscaler-webhook - image: us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.15 + image: us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.16 imagePullPolicy: Always ports: - name: autoscaler diff --git a/examples/autoscaler-webhook/go.mod b/examples/autoscaler-webhook/go.mod index d7088b88b6..f2320e70a0 100644 --- a/examples/autoscaler-webhook/go.mod +++ b/examples/autoscaler-webhook/go.mod @@ -1,6 +1,6 @@ module autoscaler-webhook -go 1.22 +go 1.23 require agones.dev/agones v1.35.0 @@ -8,17 +8,18 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-logr/logr v1.3.0 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/spec v0.19.5 // indirect - github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.3.1 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.6 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -41,31 +42,31 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.17.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect + github.com/x448/float16 v0.8.4 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.3.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/grpc v1.65.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/fsnotify.v1 v1.4.7 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.29.7 // indirect - k8s.io/apimachinery v0.29.7 // indirect - k8s.io/client-go v0.29.7 // indirect - k8s.io/klog/v2 v2.110.1 // indirect - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect - k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect + k8s.io/api v0.31.0 // indirect + k8s.io/apimachinery v0.31.0 // indirect + k8s.io/client-go v0.31.0 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 // indirect + k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/examples/autoscaler-webhook/go.sum b/examples/autoscaler-webhook/go.sum index 4cb072a924..6ef23b8f86 100644 --- a/examples/autoscaler-webhook/go.sum +++ b/examples/autoscaler-webhook/go.sum @@ -67,15 +67,18 @@ github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0X github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= @@ -83,13 +86,12 @@ github.com/go-openapi/spec v0.19.5 h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqP github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -150,13 +152,13 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -209,8 +211,8 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= @@ -237,10 +239,13 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -329,8 +334,8 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -340,8 +345,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -388,11 +393,11 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -401,8 +406,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -488,7 +493,6 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -526,12 +530,10 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a h1:fwgW9j3vHirt4ObdHoYNwuO24BEZjSzbh+zPaNWoiY8= -google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -548,8 +550,8 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -560,8 +562,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= @@ -588,18 +590,18 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.29.7 h1:Q2/thp7YYESgy0MGzxT9RvA/6doLJHBXSFH8GGLxSbc= -k8s.io/api v0.29.7/go.mod h1:mPimdbyuIjwoLtBEVIGVUYb4BKOE+44XHt/n4IqKsLA= -k8s.io/apimachinery v0.29.7 h1:ICXzya58Q7hyEEfnTrbmdfX1n1schSepX2KUfC2/ykc= -k8s.io/apimachinery v0.29.7/go.mod h1:i3FJVwhvSp/6n8Fl4K97PJEP8C+MM+aoDq4+ZJBf70Y= -k8s.io/client-go v0.29.7 h1:vTtiFrGBKlcBhxaeZC4eDrqui1e108nsTyue/KU63IY= -k8s.io/client-go v0.29.7/go.mod h1:69BvVqdRozgR/9TP45u/oO0tfrdbP+I8RqrcCJQshzg= -k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= -k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/api v0.31.0 h1:b9LiSjR2ym/SzTOlfMHm1tr7/21aD7fSkqgD/CVJBCo= +k8s.io/api v0.31.0/go.mod h1:0YiFF+JfFxMM6+1hQei8FY8M7s1Mth+z/q7eF1aJkTE= +k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc= +k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= +k8s.io/client-go v0.31.0 h1:QqEJzNjbN2Yv1H79SsS+SWnXkBgVu4Pj3CJQgbx0gI8= +k8s.io/client-go v0.31.0/go.mod h1:Y9wvC76g4fLjmU0BA+rV+h2cncoadjvjjkkIGoTLcGU= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 h1:1dWzkmJrrprYvjGwh9kEUxmcUV/CtNU8QM7h1FLWQOo= +k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38/go.mod h1:coRQXBK9NxO98XUv3ZD6AK3xzHCxV6+b7lrquKwaKzA= +k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY9mD9fNT47QO6HI= +k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/examples/crd-client/Dockerfile b/examples/crd-client/Dockerfile index 1cda4e9d92..89fb765979 100644 --- a/examples/crd-client/Dockerfile +++ b/examples/crd-client/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # Gather dependencies and build the executable -FROM golang:1.22.6 as builder +FROM golang:1.23.4 as builder WORKDIR /go/src/crd-client COPY . . diff --git a/examples/crd-client/Makefile b/examples/crd-client/Makefile index c8328b7dbd..da5f41fc97 100644 --- a/examples/crd-client/Makefile +++ b/examples/crd-client/Makefile @@ -25,7 +25,7 @@ REPOSITORY ?= PROD_REPO ?= us-docker.pkg.dev/agones-images/examples -version := 0.18 +version := 0.19 ifeq ($(REPOSITORY),) server_tag := crd-client:$(version) else diff --git a/examples/crd-client/create-gs.yaml b/examples/crd-client/create-gs.yaml index 30c9dc7008..6ed0883aaf 100644 --- a/examples/crd-client/create-gs.yaml +++ b/examples/crd-client/create-gs.yaml @@ -34,9 +34,9 @@ spec: cpu: 500m ephemeral-storage: 1Gi memory: 2Gi - image: us-docker.pkg.dev/agones-images/examples/crd-client:0.18 + image: us-docker.pkg.dev/agones-images/examples/crd-client:0.19 imagePullPolicy: Always env: - name: GAMESERVER_IMAGE - value: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + value: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 restartPolicy: Never diff --git a/examples/crd-client/go.mod b/examples/crd-client/go.mod index 3ef533269b..c513975eab 100644 --- a/examples/crd-client/go.mod +++ b/examples/crd-client/go.mod @@ -1,6 +1,6 @@ module crd-client -go 1.22 +go 1.23 require ( agones.dev/agones v1.35.0 diff --git a/examples/custom-controller/Dockerfile b/examples/custom-controller/Dockerfile index 35e96a853f..710e8c76a9 100644 --- a/examples/custom-controller/Dockerfile +++ b/examples/custom-controller/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # Gather dependencies and build the executable -FROM golang:1.22.6 as builder +FROM golang:1.23.4 as builder WORKDIR /go/src/custom-controller COPY . . diff --git a/examples/custom-controller/Makefile b/examples/custom-controller/Makefile index 276a1bdca1..7100ec608d 100644 --- a/examples/custom-controller/Makefile +++ b/examples/custom-controller/Makefile @@ -25,7 +25,7 @@ REPOSITORY ?= PROD_REPO ?= us-docker.pkg.dev/agones-images/examples -version := 0.6 +version := 0.7 ifeq ($(REPOSITORY),) server_tag := custom-controller:$(version) else diff --git a/examples/custom-controller/deployment.yaml b/examples/custom-controller/deployment.yaml index f4a3d579a8..928d2a504d 100644 --- a/examples/custom-controller/deployment.yaml +++ b/examples/custom-controller/deployment.yaml @@ -64,5 +64,5 @@ spec: serviceAccountName: custom-controller-sa containers: - name: custom-controller - image: us-docker.pkg.dev/agones-images/examples/custom-controller:0.6 + image: us-docker.pkg.dev/agones-images/examples/custom-controller:0.7 imagePullPolicy: Always diff --git a/examples/custom-controller/go.mod b/examples/custom-controller/go.mod index 1f1ef8581a..5fdffa3b8e 100644 --- a/examples/custom-controller/go.mod +++ b/examples/custom-controller/go.mod @@ -1,6 +1,6 @@ module custom-controller -go 1.22 +go 1.23 require ( agones.dev/agones v1.38.0 diff --git a/examples/fleet.yaml b/examples/fleet.yaml index 9f8b43a7d8..7ecfb1307d 100644 --- a/examples/fleet.yaml +++ b/examples/fleet.yaml @@ -110,4 +110,4 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 diff --git a/examples/gameserver.yaml b/examples/gameserver.yaml index 7cc4b3f903..eed7c01a36 100644 --- a/examples/gameserver.yaml +++ b/examples/gameserver.yaml @@ -122,7 +122,7 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 imagePullPolicy: Always # nodeSelector is a label that can be used to tell Kubernetes which host # OS to use. For Windows game servers uncomment the nodeSelector diff --git a/examples/simple-game-server/Dockerfile b/examples/simple-game-server/Dockerfile index 4def9e5f7d..5701c9337d 100644 --- a/examples/simple-game-server/Dockerfile +++ b/examples/simple-game-server/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # build -FROM golang:1.22.6 as builder +FROM golang:1.23.4 as builder WORKDIR /go/src COPY . agones.dev/agones diff --git a/examples/simple-game-server/Dockerfile.windows b/examples/simple-game-server/Dockerfile.windows index 6ddda2ed83..77fbaf8342 100644 --- a/examples/simple-game-server/Dockerfile.windows +++ b/examples/simple-game-server/Dockerfile.windows @@ -20,7 +20,7 @@ # Build Stage ARG WINDOWS_VERSION=ltsc2019 -FROM --platform=linux/amd64 golang:1.22.6 as builder +FROM --platform=linux/amd64 golang:1.23.4 as builder WORKDIR /go/src COPY . agones.dev/agones diff --git a/examples/simple-game-server/Makefile b/examples/simple-game-server/Makefile index 2715915d10..3b38719077 100644 --- a/examples/simple-game-server/Makefile +++ b/examples/simple-game-server/Makefile @@ -39,7 +39,7 @@ WITH_ARM64 ?= 1 mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) project_path := $(dir $(mkfile_path)) -version := 0.35 +version := 0.36 ifeq ($(REPOSITORY),) server_tag := simple-game-server:$(version) else diff --git a/examples/simple-game-server/dev-gameserver.yaml b/examples/simple-game-server/dev-gameserver.yaml index 482bc539d5..56bfd7bc9e 100644 --- a/examples/simple-game-server/dev-gameserver.yaml +++ b/examples/simple-game-server/dev-gameserver.yaml @@ -31,4 +31,4 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 diff --git a/examples/simple-game-server/fleet-distributed.yaml b/examples/simple-game-server/fleet-distributed.yaml index 772b480dca..6888ef17ff 100644 --- a/examples/simple-game-server/fleet-distributed.yaml +++ b/examples/simple-game-server/fleet-distributed.yaml @@ -32,7 +32,7 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 resources: requests: memory: 64Mi diff --git a/examples/simple-game-server/fleet-tcp.yaml b/examples/simple-game-server/fleet-tcp.yaml index eb06f8d60f..3971c38f5e 100644 --- a/examples/simple-game-server/fleet-tcp.yaml +++ b/examples/simple-game-server/fleet-tcp.yaml @@ -28,7 +28,7 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 env: # Disables the UDP listener (Enabled by default) - name: UDP diff --git a/examples/simple-game-server/fleet.yaml b/examples/simple-game-server/fleet.yaml index 97ffadadde..d578b5f573 100644 --- a/examples/simple-game-server/fleet.yaml +++ b/examples/simple-game-server/fleet.yaml @@ -27,7 +27,7 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 resources: requests: memory: 64Mi diff --git a/examples/simple-game-server/gameserver-none.yaml b/examples/simple-game-server/gameserver-none.yaml index c5a3d7418b..7d130b9022 100644 --- a/examples/simple-game-server/gameserver-none.yaml +++ b/examples/simple-game-server/gameserver-none.yaml @@ -29,7 +29,7 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 resources: requests: memory: 64Mi diff --git a/examples/simple-game-server/gameserver-passthrough.yaml b/examples/simple-game-server/gameserver-passthrough.yaml index ab6a3283e2..d4a6d74204 100644 --- a/examples/simple-game-server/gameserver-passthrough.yaml +++ b/examples/simple-game-server/gameserver-passthrough.yaml @@ -24,7 +24,7 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 env: - name: PASSTHROUGH value: 'TRUE' diff --git a/examples/simple-game-server/gameserver-windows.yaml b/examples/simple-game-server/gameserver-windows.yaml index a7c5073d76..bd2ddb810d 100644 --- a/examples/simple-game-server/gameserver-windows.yaml +++ b/examples/simple-game-server/gameserver-windows.yaml @@ -25,7 +25,7 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 resources: requests: memory: 64Mi diff --git a/examples/simple-game-server/gameserver.yaml b/examples/simple-game-server/gameserver.yaml index a865068149..4ab7476895 100644 --- a/examples/simple-game-server/gameserver.yaml +++ b/examples/simple-game-server/gameserver.yaml @@ -25,7 +25,7 @@ spec: spec: containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 resources: requests: memory: 64Mi diff --git a/examples/simple-game-server/go.mod b/examples/simple-game-server/go.mod index 1fbff2018d..b6c6654dc6 100644 --- a/examples/simple-game-server/go.mod +++ b/examples/simple-game-server/go.mod @@ -1,21 +1,19 @@ module agones.dev/agones/examples/simple-game-server -go 1.22 +go 1.23 require agones.dev/agones v1.36.0 require ( - github.com/golang/protobuf v1.5.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/pkg/errors v0.9.1 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/grpc v1.65.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect ) replace agones.dev/agones => ../../ diff --git a/examples/simple-game-server/go.sum b/examples/simple-game-server/go.sum index 33c7876889..5e15b5e702 100644 --- a/examples/simple-game-server/go.sum +++ b/examples/simple-game-server/go.sum @@ -1,34 +1,28 @@ -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/examples/simple-genai-server/Dockerfile b/examples/simple-genai-server/Dockerfile index aa424523f0..51e0eca931 100644 --- a/examples/simple-genai-server/Dockerfile +++ b/examples/simple-genai-server/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # build -FROM golang:1.22.6 as builder +FROM golang:1.23.4 as builder WORKDIR /go/src COPY . agones.dev/agones diff --git a/examples/simple-genai-server/Makefile b/examples/simple-genai-server/Makefile index d58511049c..2753f83528 100644 --- a/examples/simple-genai-server/Makefile +++ b/examples/simple-genai-server/Makefile @@ -27,7 +27,7 @@ PROD_REPO ?= us-docker.pkg.dev/agones-images/examples mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) project_path := $(dir $(mkfile_path)) -version := 0.4 +version := 0.5 ifeq ($(REPOSITORY),) server_tag := simple-genai-game-server:$(version) else diff --git a/examples/simple-genai-server/gameserver_autochat.yaml b/examples/simple-genai-server/gameserver_autochat.yaml index 98706847df..ae7f6b297b 100644 --- a/examples/simple-genai-server/gameserver_autochat.yaml +++ b/examples/simple-genai-server/gameserver_autochat.yaml @@ -26,7 +26,7 @@ spec: spec: containers: - name: simple-genai-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-genai-game-server:0.4 + image: us-docker.pkg.dev/agones-images/examples/simple-genai-game-server:0.5 # imagePullPolicy: Always # add for development env: - name: GEN_AI_ENDPOINT diff --git a/examples/simple-genai-server/gameserver_manualchat.yaml b/examples/simple-genai-server/gameserver_manualchat.yaml index b5f29e3785..7a40bad9c2 100644 --- a/examples/simple-genai-server/gameserver_manualchat.yaml +++ b/examples/simple-genai-server/gameserver_manualchat.yaml @@ -26,7 +26,7 @@ spec: spec: containers: - name: simple-genai-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-genai-game-server:0.4 + image: us-docker.pkg.dev/agones-images/examples/simple-genai-game-server:0.5 # imagePullPolicy: Always # add for development env: - name: GEN_AI_ENDPOINT diff --git a/examples/simple-genai-server/gameserver_npcchat.yaml b/examples/simple-genai-server/gameserver_npcchat.yaml index d11ca3a0bc..97c4de03de 100644 --- a/examples/simple-genai-server/gameserver_npcchat.yaml +++ b/examples/simple-genai-server/gameserver_npcchat.yaml @@ -21,7 +21,7 @@ spec: spec: containers: - name: simple-genai-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-genai-game-server:0.4 + image: us-docker.pkg.dev/agones-images/examples/simple-genai-game-server:0.5 # imagePullPolicy: Always # add for development env: - name: GEN_AI_ENDPOINT diff --git a/examples/supertuxkart/Dockerfile b/examples/supertuxkart/Dockerfile index 957157df95..4eee1b2236 100644 --- a/examples/supertuxkart/Dockerfile +++ b/examples/supertuxkart/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # build go -FROM golang:1.22.6 as go-builder +FROM golang:1.23.4 as go-builder WORKDIR /go/src/supertuxkart COPY main.go go.mod ./ diff --git a/examples/supertuxkart/Makefile b/examples/supertuxkart/Makefile index c6d8b6cf65..e5b7b7dfe6 100644 --- a/examples/supertuxkart/Makefile +++ b/examples/supertuxkart/Makefile @@ -28,7 +28,7 @@ PROD_REPO ?= us-docker.pkg.dev/agones-images/examples mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) project_path := $(dir $(mkfile_path)) -version := 0.15 +version := 0.16 ifeq ($(REPOSITORY),) image_tag := supertuxkart-example:$(version) else diff --git a/examples/supertuxkart/fleet.yaml b/examples/supertuxkart/fleet.yaml index 5a59dec53d..432792c9fd 100644 --- a/examples/supertuxkart/fleet.yaml +++ b/examples/supertuxkart/fleet.yaml @@ -32,4 +32,4 @@ spec: spec: containers: - name: supertuxkart - image: us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.15 + image: us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.16 diff --git a/examples/supertuxkart/gameserver.yaml b/examples/supertuxkart/gameserver.yaml index b16b5e2705..b96e16f91b 100644 --- a/examples/supertuxkart/gameserver.yaml +++ b/examples/supertuxkart/gameserver.yaml @@ -24,7 +24,7 @@ spec: spec: containers: - name: supertuxkart - image: us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.15 + image: us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.16 # imagePullPolicy: Always # add for development env: - name: ENABLE_PLAYER_TRACKING diff --git a/examples/supertuxkart/go.mod b/examples/supertuxkart/go.mod index 7ff172c2d7..7ccec28d32 100644 --- a/examples/supertuxkart/go.mod +++ b/examples/supertuxkart/go.mod @@ -1,6 +1,6 @@ module supertuxkart -go 1.22 +go 1.23 require ( agones.dev/agones v1.35.0 diff --git a/examples/xonotic/Dockerfile b/examples/xonotic/Dockerfile index 3952afa151..238ec0d924 100644 --- a/examples/xonotic/Dockerfile +++ b/examples/xonotic/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # build -FROM golang:1.22.6 as builder +FROM golang:1.23.4 as builder RUN apt-get update && apt-get install -y unzip curl diff --git a/examples/xonotic/Dockerfile.windows b/examples/xonotic/Dockerfile.windows index f75aa4bd00..bde3122103 100644 --- a/examples/xonotic/Dockerfile.windows +++ b/examples/xonotic/Dockerfile.windows @@ -37,7 +37,7 @@ ARG WINDOWS_VERSION=ltsc2019 # Build Stage -FROM --platform=linux/amd64 golang:1.22.6 as base +FROM --platform=linux/amd64 golang:1.23.4 as base RUN apt-get update && apt-get install -y unzip curl diff --git a/examples/xonotic/Makefile b/examples/xonotic/Makefile index 646a4bcb72..0c78fb4c88 100644 --- a/examples/xonotic/Makefile +++ b/examples/xonotic/Makefile @@ -37,7 +37,7 @@ WINDOWS_DOCKER_PUSH_ARGS = --push mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) project_path := $(dir $(mkfile_path)) -version := 2.1 +version := 2.2 ifeq ($(REPOSITORY),) server_tag := xonotic-example:$(version) else diff --git a/examples/xonotic/fleet.yaml b/examples/xonotic/fleet.yaml index 44c6f12303..7135224205 100644 --- a/examples/xonotic/fleet.yaml +++ b/examples/xonotic/fleet.yaml @@ -35,7 +35,7 @@ spec: spec: containers: - name: xonotic - image: us-docker.pkg.dev/agones-images/examples/xonotic-example:2.1 + image: us-docker.pkg.dev/agones-images/examples/xonotic-example:2.2 resources: requests: memory: 700Mi diff --git a/examples/xonotic/gameserver.yaml b/examples/xonotic/gameserver.yaml index 13e2ddeb7e..c51523332a 100644 --- a/examples/xonotic/gameserver.yaml +++ b/examples/xonotic/gameserver.yaml @@ -24,7 +24,7 @@ spec: spec: containers: - name: xonotic - image: us-docker.pkg.dev/agones-images/examples/xonotic-example:2.1 + image: us-docker.pkg.dev/agones-images/examples/xonotic-example:2.2 resources: requests: memory: 700Mi diff --git a/examples/xonotic/go.mod b/examples/xonotic/go.mod index d29fd6c927..0d859c4671 100644 --- a/examples/xonotic/go.mod +++ b/examples/xonotic/go.mod @@ -1,6 +1,6 @@ module xonotic -go 1.22 +go 1.23 require agones.dev/agones v1.35.0 diff --git a/go.mod b/go.mod index c46a278381..c50b480608 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module agones.dev/agones -go 1.22.0 - -toolchain go1.22.6 +go 1.23 require ( cloud.google.com/go/cloudbuild v1.13.0 diff --git a/install/helm/agones/Chart.yaml b/install/helm/agones/Chart.yaml index 59441c148d..75e8e4f0de 100644 --- a/install/helm/agones/Chart.yaml +++ b/install/helm/agones/Chart.yaml @@ -15,8 +15,8 @@ # Declare variables to be passed into your templates. apiVersion: v1 -appVersion: "1.46.0-dev" -version: 1.46.0-dev +appVersion: "1.47.0-dev" +version: 1.47.0-dev name: agones description: a library for hosting, running and scaling dedicated game servers on Kubernetes. keywords: diff --git a/install/helm/agones/templates/tests/test-runner.yaml b/install/helm/agones/templates/tests/test-runner.yaml index df337775b9..87be532b81 100644 --- a/install/helm/agones/templates/tests/test-runner.yaml +++ b/install/helm/agones/templates/tests/test-runner.yaml @@ -25,11 +25,11 @@ spec: serviceAccountName: agones-controller containers: - name: create-gameserver - image: us-docker.pkg.dev/agones-images/examples/crd-client:0.18 + image: us-docker.pkg.dev/agones-images/examples/crd-client:0.19 imagePullPolicy: Always env: - name: GAMESERVER_IMAGE - value: "us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35" + value: "us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36" - name: IS_HELM_TEST value: "true" - name: GAMESERVERS_NAMESPACE diff --git a/install/helm/agones/values.yaml b/install/helm/agones/values.yaml index 85d1ea9ac2..26f768211b 100644 --- a/install/helm/agones/values.yaml +++ b/install/helm/agones/values.yaml @@ -274,7 +274,7 @@ agones: topologySpreadConstraints: {} image: registry: us-docker.pkg.dev/agones-images/release - tag: 1.46.0-dev + tag: 1.47.0-dev controller: name: agones-controller pullPolicy: IfNotPresent diff --git a/install/yaml/install.yaml b/install/yaml/install.yaml index 19d3c9596f..91339f4a67 100644 --- a/install/yaml/install.yaml +++ b/install/yaml/install.yaml @@ -50,7 +50,7 @@ metadata: namespace: agones-system labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm --- @@ -75,7 +75,7 @@ metadata: namespace: agones-system labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm --- @@ -100,7 +100,7 @@ metadata: namespace: default labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm --- @@ -112,7 +112,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.46.0-dev" + chart: "agones-1.47.0-dev" release: "agones-manual" heritage: "Helm" type: Opaque @@ -129,7 +129,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.46.0-dev" + chart: "agones-1.47.0-dev" release: "agones-manual" heritage: "Helm" data: @@ -145,7 +145,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.46.0-dev" + chart: "agones-1.47.0-dev" release: "agones-manual" heritage: "Helm" data: @@ -161,7 +161,7 @@ metadata: namespace: agones-system labels: app: agones - chart: "agones-1.46.0-dev" + chart: "agones-1.47.0-dev" release: "agones-manual" heritage: "Helm" data: @@ -191,7 +191,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -5922,7 +5922,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -6112,7 +6112,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -11675,7 +11675,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm name: gameserverallocationpolicies.multicluster.agones.dev @@ -11754,7 +11754,7 @@ metadata: labels: component: crd app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17453,7 +17453,7 @@ metadata: name: agones-allocator labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm rules: @@ -17483,7 +17483,7 @@ metadata: name: agones-controller labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm rules: @@ -17537,7 +17537,7 @@ metadata: name: agones-sdk labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm rules: @@ -17556,7 +17556,7 @@ metadata: name: agones-allocator labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm subjects: @@ -17575,7 +17575,7 @@ metadata: name: agones-controller-access labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm subjects: @@ -17627,7 +17627,7 @@ metadata: namespace: default labels: app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm subjects: @@ -17661,7 +17661,7 @@ metadata: labels: agones.dev/role: controller app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17695,7 +17695,7 @@ metadata: labels: agones.dev/role: extensions app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17715,7 +17715,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17737,7 +17737,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17773,7 +17773,7 @@ metadata: labels: agones.dev/role: extensions app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17810,7 +17810,7 @@ metadata: labels: component: allocator app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17833,7 +17833,7 @@ metadata: labels: multicluster.agones.dev/role: allocator app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17867,7 +17867,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -17909,7 +17909,7 @@ spec: serviceAccountName: agones-controller containers: - name: agones-controller - image: "us-docker.pkg.dev/agones-images/release/agones-controller:1.46.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-controller:1.47.0-dev" imagePullPolicy: IfNotPresent securityContext: runAsNonRoot: true @@ -17923,7 +17923,7 @@ spec: - name: MAX_PORT value: "8000" - name: SIDECAR_IMAGE # overwrite the GameServer sidecar image that is used - value: "us-docker.pkg.dev/agones-images/release/agones-sdk:1.46.0-dev" + value: "us-docker.pkg.dev/agones-images/release/agones-sdk:1.47.0-dev" - name: ALWAYS_PULL_SIDECAR # set the sidecar imagePullPolicy to Always value: "false" - name: SIDECAR_CPU_REQUEST @@ -18041,7 +18041,7 @@ metadata: labels: component: extensions app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -18085,7 +18085,7 @@ spec: terminationGracePeriodSeconds: 27 containers: - name: agones-extensions - image: "us-docker.pkg.dev/agones-images/release/agones-extensions:1.46.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-extensions:1.47.0-dev" imagePullPolicy: IfNotPresent securityContext: runAsNonRoot: true @@ -18195,7 +18195,7 @@ metadata: labels: component: ping app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -18230,7 +18230,7 @@ spec: priorityClassName: agones-system containers: - name: agones-ping - image: "us-docker.pkg.dev/agones-images/release/agones-ping:1.46.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-ping:1.47.0-dev" imagePullPolicy: IfNotPresent securityContext: runAsNonRoot: true @@ -18308,7 +18308,7 @@ spec: secretName: allocator-client-ca containers: - name: agones-allocator - image: "us-docker.pkg.dev/agones-images/release/agones-allocator:1.46.0-dev" + image: "us-docker.pkg.dev/agones-images/release/agones-allocator:1.47.0-dev" imagePullPolicy: IfNotPresent securityContext: runAsNonRoot: true @@ -18395,7 +18395,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm spec: @@ -18446,7 +18446,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm webhooks: @@ -18489,7 +18489,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm webhooks: @@ -18534,7 +18534,7 @@ metadata: labels: component: controller app: agones - chart: agones-1.46.0-dev + chart: agones-1.47.0-dev release: agones-manual heritage: Helm webhooks: diff --git a/pkg/allocation/converters/converter.go b/pkg/allocation/converters/converter.go index b4b80cfc68..3210a097f2 100644 --- a/pkg/allocation/converters/converter.go +++ b/pkg/allocation/converters/converter.go @@ -286,7 +286,6 @@ func convertInternalLabelSelectorToLabelSelector(in *metav1.LabelSelector) *pb.L func convertInternalLabelSelectorsToLabelSelectors(in []allocationv1.GameServerSelector) []*pb.GameServerSelector { var result []*pb.GameServerSelector for _, l := range in { - l := l c := convertInternalGameServerSelectorToGameServer(&l) result = append(result, c) } diff --git a/pkg/allocation/converters/converter_test.go b/pkg/allocation/converters/converter_test.go index 4a26e011fb..e3144a18c8 100644 --- a/pkg/allocation/converters/converter_test.go +++ b/pkg/allocation/converters/converter_test.go @@ -626,7 +626,6 @@ func TestConvertAllocationRequestToGameServerAllocation(t *testing.T) { }, } for _, tc := range tests { - tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() @@ -834,7 +833,6 @@ func TestConvertGSAToAllocationRequest(t *testing.T) { }, } for _, tc := range tests { - tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() @@ -1370,7 +1368,6 @@ func TestConvertGSAToAllocationResponse(t *testing.T) { }, } for _, tc := range tests { - tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() runtime.FeatureTestMutex.Lock() @@ -1561,7 +1558,6 @@ func TestConvertAllocationResponseToGSA(t *testing.T) { }, } for _, tc := range tests { - tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() runtime.FeatureTestMutex.Lock() diff --git a/pkg/gameserverallocations/allocation_cache_test.go b/pkg/gameserverallocations/allocation_cache_test.go index bde3bfc222..5904f12e2b 100644 --- a/pkg/gameserverallocations/allocation_cache_test.go +++ b/pkg/gameserverallocations/allocation_cache_test.go @@ -174,8 +174,6 @@ func TestAllocationCacheListSortedGameServers(t *testing.T) { } for k, v := range fixtures { - k := k - v := v t.Run(k, func(t *testing.T) { // deliberately not resetting the Feature state, to catch any possible unknown regressions with the // new feature flags diff --git a/pkg/metrics/kubernetes_client.go b/pkg/metrics/kubernetes_client.go index 4a5591dd1c..149f8fed6f 100644 --- a/pkg/metrics/kubernetes_client.go +++ b/pkg/metrics/kubernetes_client.go @@ -196,7 +196,6 @@ func (c *clientGoMetricAdapter) Register() { RequestLatency: c, RequestResult: c, }) - cache.SetReflectorMetricsProvider(c) workqueue.SetProvider(c) } diff --git a/pkg/sdkserver/localsdk.go b/pkg/sdkserver/localsdk.go index 2f5a2ce4ce..a4b8b3489f 100644 --- a/pkg/sdkserver/localsdk.go +++ b/pkg/sdkserver/localsdk.go @@ -882,7 +882,7 @@ func (l *LocalSDKServer) setGameServerFromFilePath(filePath string) error { l.logger.WithField("filePath", filePath).Info("Reading GameServer configuration") reader, err := os.Open(filePath) // nolint: gosec - defer reader.Close() // nolint: megacheck,errcheck + defer reader.Close() // nolint: staticcheck,errcheck if err != nil { return err diff --git a/pkg/sdkserver/localsdk_test.go b/pkg/sdkserver/localsdk_test.go index d103713902..593d2a1536 100644 --- a/pkg/sdkserver/localsdk_test.go +++ b/pkg/sdkserver/localsdk_test.go @@ -160,9 +160,6 @@ func TestLocalSDKServerSetLabel(t *testing.T) { } for k, v := range fixtures { - // pin variables here, see scopelint for details - k := k - v := v t.Run(k, func(t *testing.T) { ctx := context.Background() e := &sdk.Empty{} @@ -470,9 +467,6 @@ func TestLocalSDKServerPlayerConnectAndDisconnect(t *testing.T) { } for k, v := range fixtures { - // pin variables here, see https://github.com/kyoh86/scopelint for the details - k := k - v := v t.Run(k, func(t *testing.T) { var l *LocalSDKServer var err error diff --git a/pkg/util/webhooks/webhooks_test.go b/pkg/util/webhooks/webhooks_test.go index 6e9224d167..1f236fba4e 100644 --- a/pkg/util/webhooks/webhooks_test.go +++ b/pkg/util/webhooks/webhooks_test.go @@ -164,7 +164,7 @@ func TestWebHookFleetValidationHandler(t *testing.T) { "template": { "spec": { "containers": [{ - "image": "us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35", + "image": "us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36", "name": false }] } diff --git a/sdks/csharp/sdk/AgonesSDK.nuspec b/sdks/csharp/sdk/AgonesSDK.nuspec index 802626486a..04efe171c5 100644 --- a/sdks/csharp/sdk/AgonesSDK.nuspec +++ b/sdks/csharp/sdk/AgonesSDK.nuspec @@ -2,7 +2,7 @@ AgonesSDK - 1.46.0-dev + 1.47.0-dev Google LLC Google LLC false diff --git a/sdks/csharp/sdk/csharp-sdk.csproj b/sdks/csharp/sdk/csharp-sdk.csproj index 262931fbb7..7c60092ad0 100644 --- a/sdks/csharp/sdk/csharp-sdk.csproj +++ b/sdks/csharp/sdk/csharp-sdk.csproj @@ -13,7 +13,7 @@ https://agones.dev http://www.apache.org/licenses/LICENSE-2.0 AgonesSDK - 1.46.0-dev + 1.47.0-dev agones, googleforgames, kuberenetes, multiplayer, gameservers agones.dev Debug;Release;DebugProtoGen diff --git a/sdks/nodejs/package-lock.json b/sdks/nodejs/package-lock.json index 99a5678cd5..a39e42025b 100644 --- a/sdks/nodejs/package-lock.json +++ b/sdks/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@google-cloud/agones-sdk", - "version": "1.46.0-dev", + "version": "1.47.0-dev", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@google-cloud/agones-sdk", - "version": "1.46.0-dev", + "version": "1.47.0-dev", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "1.10.9", diff --git a/sdks/nodejs/package.json b/sdks/nodejs/package.json index 5b461b92b0..0c93854d4e 100644 --- a/sdks/nodejs/package.json +++ b/sdks/nodejs/package.json @@ -26,5 +26,5 @@ "publishConfig": { "access": "public" }, - "version": "1.46.0-dev" + "version": "1.47.0-dev" } diff --git a/sdks/rust/Cargo.toml b/sdks/rust/Cargo.toml index ddcd187745..01933244ea 100644 --- a/sdks/rust/Cargo.toml +++ b/sdks/rust/Cargo.toml @@ -14,7 +14,7 @@ [package] name = "agones" -version = "1.46.0-dev" +version = "1.47.0-dev" edition = "2021" description = "The Rust SDK for Agones." license = "Apache-2.0" diff --git a/sdks/unity/package.json b/sdks/unity/package.json index 92f846881e..e2c6ff1708 100644 --- a/sdks/unity/package.json +++ b/sdks/unity/package.json @@ -1,6 +1,6 @@ { "name": "com.googleforgames.agones", - "version": "1.46.0-dev", + "version": "1.47.0-dev", "displayName": "Agones Unity SDK", "description": "The Unity Gameserver SDK for Agones", "unity": "2019.1", diff --git a/site/config.toml b/site/config.toml index ea54432966..7f4682e6cb 100644 --- a/site/config.toml +++ b/site/config.toml @@ -80,9 +80,9 @@ github_repo = "https://github.com/googleforgames/agones" gcs_engine_id = "016691298986124624340:x7qv2dywdao" # current release branch. Never is rc. -release_branch = "release-1.45.0" +release_branch = "release-1.46.0" # the main version. Never is rc. -release_version = "1.45.0" +release_version = "1.46.0" # shown for production supported_k8s = ["1.29", "1.30", "1.31"] @@ -100,7 +100,7 @@ dev_eks_example_cluster_version = "1.31" dev_minikube_example_cluster_version = "1.30.4" # example tag -example_image_tag = "us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35" +example_image_tag = "us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36" # Enable syntax highlighting and copy buttons on code blocks with Prism prism_syntax_highlighting = true diff --git a/site/content/en/_index.html b/site/content/en/_index.html index cd2ccb2e53..8f01e3691d 100644 --- a/site/content/en/_index.html +++ b/site/content/en/_index.html @@ -56,7 +56,6 @@

Companies using Agones

altavr Embark Studios accelbyte - Space Game rolltable Vela Games Netspeak Games diff --git a/site/content/en/blog/releases/1.45.0.md b/site/content/en/blog/releases/1.45.0.md index 93cd9ce92c..c31c43e93d 100644 --- a/site/content/en/blog/releases/1.45.0.md +++ b/site/content/en/blog/releases/1.45.0.md @@ -18,7 +18,7 @@ In this release, we’ve introduced Terraform scripts and updated documentation - **New Dashboard Feature for GameServer State Duration**: A new dashboard feature has been added that provides insights into the duration of GameServer states. This will help operators monitor and debug the lifecycle of game servers more efficiently. -Check the README for details on features, installation and usage. +Check the README for details on features, installation and usage. **Breaking changes:** - Update Supported Kubernetes to 1.29, 1.30, 1.31 by @kamaljeeti in https://github.com/googleforgames/agones/pull/4024 @@ -28,7 +28,7 @@ Check the CHANGELOG for more details on changes. +See CHANGELOG for more details on changes. Images available with this release: @@ -49,7 +49,7 @@ Images available with this release: Helm chart available with this release: -- +- helm install agones agones/agones --version 1.45.0 > Make sure to add our stable helm repository using `helm repo add agones https://agones.dev/chart/stable` \ No newline at end of file diff --git a/site/content/en/blog/releases/1.46.0.md b/site/content/en/blog/releases/1.46.0.md new file mode 100644 index 0000000000..00b6433e71 --- /dev/null +++ b/site/content/en/blog/releases/1.46.0.md @@ -0,0 +1,56 @@ +--- +title: "1.46.0 - Go v1.23.4, Custom Labels, List Deletion, In-Place Upgrades in Alpha and More" +linktitle: "1.46.0" +date: "2025-01-02" +--- + +This is the 1.46.0 release of Agones. + +In this release, we’ve introduced Go v1.23.4 for improved performance, added support for custom labels on pods for enhanced monitoring, and enabled the deletion of list values during game server allocation. The externalTrafficPolicy for agones-allocator is now set to "Local" for stable allocations during node pool scaling. Additionally, the documentation has been updated with step-by-step instructions for in-place Agones upgrades. + +- **Updated Versions**: Go v1.23.4 Now Live: We have upgraded to Go v1.22.6 which brings enhanced performance and crucial security updates. + +- **Support for Custom Labels on Controller and Extension Pods**: Allows adding extra labels to controller and extension pods, enhancing monitoring and management with Prometheus. + +- **Enable List Value Deletion in Game Server Allocation**: Introduces the ability to delete values from a list during game server allocation, enabling support for multiple concurrent backfill requests in Agones. + +- **Added externalTrafficPolicy for agones-allocator**: This update configures the externalTrafficPolicy to "Local" for the agones-allocator service, ensuring stable allocations when scaling down the GameServers node pool in Agones clusters. + +- **In-Place Agones Upgrades is in Alpha**: Check out the new user documentation with step-by-step instructions for performing an in-place Agones upgrade. + +Check the README for details on features, installation and usage. + +**Breaking changes**: +- Removed reflector metric usage by @vicentefb in https://github.com/googleforgames/agones/pull/4056 + +**Implemented enhancements**: +- Set externalTrafficPolicy as Local for agones-allocator by @osterante in https://github.com/googleforgames/agones/pull/4022 +- Integrates upgrades tests into Cloud Build by @igooch in https://github.com/googleforgames/agones/pull/4037 +- Delete List Value(s) on Game Server Allocation by @igooch in https://github.com/googleforgames/agones/pull/4054 +- In place upgrades version update instructions by @igooch in https://github.com/googleforgames/agones/pull/4064 + +See CHANGELOG for more details on changes. + +Images available with this release: + +- [us-docker.pkg.dev/agones-images/release/agones-controller:1.46.0](https://us-docker.pkg.dev/agones-images/release/agones-controller:1.46.0) +- [us-docker.pkg.dev/agones-images/release/agones-sdk:1.46.0](https://us-docker.pkg.dev/agones-images/release/agones-sdk:1.46.0) +- [us-docker.pkg.dev/agones-images/release/agones-ping:1.46.0](https://us-docker.pkg.dev/agones-images/release/agones-ping:1.46.0) +- [us-docker.pkg.dev/agones-images/release/agones-allocator:1.46.0](https://us-docker.pkg.dev/agones-images/release/agones-allocator:1.46.0) +- [us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.11](https://us-docker.pkg.dev/agones-images/examples/allocation-endpoint-proxy:0.11) +- [us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.16](https://us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.16) +- [us-docker.pkg.dev/agones-images/examples/cpp-simple-server:0.19](https://us-docker.pkg.dev/agones-images/examples/cpp-simple-server:0.19) +- [us-docker.pkg.dev/agones-images/examples/crd-client:0.19](https://us-docker.pkg.dev/agones-images/examples/crd-client:0.19) +- [us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.10](https://us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.10) +- [us-docker.pkg.dev/agones-images/examples/rust-simple-server:0.13](https://us-docker.pkg.dev/agones-images/examples/rust-simple-server:0.13) +- [us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36](https://us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36) +- [us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.16](https://us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.16) +- [us-docker.pkg.dev/agones-images/examples/unity-simple-server:0.3](https://us-docker.pkg.dev/agones-images/examples/unity-simple-server:0.3) +- [us-docker.pkg.dev/agones-images/examples/xonotic-example:2.2](https://us-docker.pkg.dev/agones-images/examples/xonotic-example:2.2) + +Helm chart available with this release: + +- + helm install agones agones/agones --version 1.46.0 + +> Make sure to add our stable helm repository using `helm repo add agones https://agones.dev/chart/stable` \ No newline at end of file diff --git a/site/content/en/docs/Guides/Best Practices/gke.md b/site/content/en/docs/Guides/Best Practices/gke.md index 5ae4abe6a2..5aca923a95 100644 --- a/site/content/en/docs/Guides/Best Practices/gke.md +++ b/site/content/en/docs/Guides/Best Practices/gke.md @@ -58,3 +58,10 @@ For sessions longer than an hour, there are currently two possible approaches to * delete the old, `blue` cluster when the `Fleet` successfully scales down. * (GKE Standard only) Use [node pool blue/green upgrades](https://cloud.google.com/kubernetes-engine/docs/concepts/node-pool-upgrade-strategies#blue-green-upgrade-strategy) + +## Google Cloud Support Package + +We recommend getting official support package for running Agones on Google Cloud. + +Support for Agones on Google Cloud is offered under the +[Google Cloud Premium support package](https://cloud.google.com/kubernetes-engine/docs/how-to/agones-support). diff --git a/site/content/en/docs/Guides/Client SDKs/rest.md b/site/content/en/docs/Guides/Client SDKs/rest.md index a706602f13..e7eddca35c 100644 --- a/site/content/en/docs/Guides/Client SDKs/rest.md +++ b/site/content/en/docs/Guides/Client SDKs/rest.md @@ -46,7 +46,7 @@ Generally the REST interface gets used if gRPC isn't well supported for a given {{< alert title="Warning" color="warning">}} The SDK Server sidecar process may startup after your game server binary. So your REST SDK API calls should -contain some retry logic to take this into account. +contain some retry logic to take this into account. {{< /alert >}} ## Generating clients @@ -62,9 +62,9 @@ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate -i /loc The same could be run for `alpha.swagger.json` and `beta.swagger.json` as required. -You can read more about OpenAPI/Swagger code generation in their [Command Line Tool Documentation](https://swagger.io/docs/open-source-tools/swagger-codegen/) +You can read more about OpenAPI/Swagger code generation in their [Command Line Tool Documentation](https://swagger.io/docs/open-source-tools/swagger-codegen/codegen-v3/about/) -## Reference +## Reference ### Lifecycle Management @@ -112,10 +112,10 @@ curl -d '{"seconds": "5"}' -H "Content-Type: application/json" -X POST http://lo #### Allocate With some matchmakers and game matching strategies, it can be important for game servers to mark themselves as `Allocated`. -For those scenarios, this SDK functionality exists. +For those scenarios, this SDK functionality exists. {{< alert title="Note" color="info">}} -Using a [GameServerAllocation]({{< ref "/docs/Reference/gameserverallocation.md" >}}) is preferred in all other scenarios, +Using a [GameServerAllocation]({{< ref "/docs/Reference/gameserverallocation.md" >}}) is preferred in all other scenarios, as it gives Agones control over how packed `GameServers` are scheduled within a cluster, whereas with `Allocate()` you relinquish control to an external service which likely doesn't have as much information as Agones. {{< /alert >}} @@ -140,7 +140,7 @@ Call when the GameServer session is over and it's time to shut down curl -d "{}" -H "Content-Type: application/json" -X POST http://localhost:${AGONES_SDK_HTTP_PORT}/shutdown ``` -### Configuration Retrieval +### Configuration Retrieval #### GameServer @@ -292,7 +292,7 @@ curl -H "Content-Type: application/json" -X GET http://localhost:${AGONES_SDK_HT Response: ```json -{"name":"players", "capacity":"100", "values":["player0", "player1", "player2"]} +{"name":"players", "capacity":"100", "values":["player0", "player1", "player2"]} ``` ##### Beta: UpdateList @@ -310,7 +310,7 @@ Response: ##### Beta: AddListValue This function adds a new value to a list with the key `players` and returns the list with this addition. -###### Example +###### Example ```bash curl -d '{"value": "player9"}' -H "Content-Type: application/json" -X POST http://localhost:${AGONES_SDK_HTTP_PORT}/v1beta1/lists/players:addValue @@ -323,8 +323,8 @@ Response: ##### Beta: RemoveListValue This function removes a value from the list with the key `players` and returns updated list. - -###### Example + +###### Example ```bash curl -d '{"value": "player3"}' -H "Content-Type: application/json" -X POST http://localhost:${AGONES_SDK_HTTP_PORT}/v1beta1/lists/players:removeValue @@ -341,10 +341,10 @@ Response: #### Alpha: PlayerConnect -This function increases the SDK’s stored player count by one, and appends this playerID to +This function increases the SDK’s stored player count by one, and appends this playerID to `GameServer.Status.Players.IDs`. - -##### Example + +##### Example ```bash curl -d '{"playerID": "uzh7i"}' -H "Content-Type: application/json" -X POST http://localhost:${AGONES_SDK_HTTP_PORT}/alpha/player/connect @@ -354,10 +354,10 @@ Response: ```json {"bool":true} ``` - + #### Alpha: PlayerDisconnect -This function decreases the SDK’s stored player count by one, and removes the playerID from +This function decreases the SDK’s stored player count by one, and removes the playerID from [`GameServer.Status.Players.IDs`][playerstatus]. ##### Example @@ -399,7 +399,7 @@ Response: #### Alpha: GetPlayerCount -This function retrieves the current player count. +This function retrieves the current player count. This is always accurate from what has been set through this SDK, even if the value has yet to be updated on the GameServer status resource. ##### Example diff --git a/site/content/en/docs/Guides/metrics.md b/site/content/en/docs/Guides/metrics.md index 3fcd799730..feadda52c8 100644 --- a/site/content/en/docs/Guides/metrics.md +++ b/site/content/en/docs/Guides/metrics.md @@ -68,11 +68,6 @@ Follow the [Google Cloud Monitoring installation steps](#google-cloud-monitoring | agones_gameserver_state_duration | The distribution of gameserver state duration in seconds. Note: this metric could have some missing samples by design. Do not use the `_total` counter as the real value for state changes. | histogram | | agones_k8s_client_http_request_total | The total of HTTP requests to the Kubernetes API by status code | counter | | agones_k8s_client_http_request_duration_seconds | The distribution of HTTP requests latencies to the Kubernetes API by status code | histogram | -| agones_k8s_client_cache_list_total | The total number of list operations for client-go caches | counter | -| agones_k8s_client_cache_list_duration_seconds | Duration of a Kubernetes list API call in seconds | histogram | -| agones_k8s_client_cache_list_items | Count of items in a list from the Kubernetes API | histogram | -| agones_k8s_client_cache_watches_total | The total number of watch operations for client-go caches | counter | -| agones_k8s_client_cache_last_resource_version | Last resource version from the Kubernetes API | gauge | | agones_k8s_client_workqueue_depth | Current depth of the work queue | gauge | | agones_k8s_client_workqueue_latency_seconds | How long an item stays in the work queue | histogram | | agones_k8s_client_workqueue_items_total | Total number of items added to the work queue | counter | @@ -110,8 +105,6 @@ We provide a set of useful [Grafana](https://grafana.com/) dashboards to monitor - {{< ghlink href="/build/grafana/dashboard-goclient-requests.yaml" branch="main" >}}Agones Controller go-client requests{{< /ghlink >}} displays Agones Controller Kubernetes API consumption. -- {{< ghlink href="/build/grafana/dashboard-goclient-caches.yaml" branch="main" >}}Agones Controller go-client caches{{< /ghlink >}} displays Agones Controller Kubernetes Watches/Lists operations used. - - {{< ghlink href="/build/grafana/dashboard-goclient-workqueues.yaml" branch="main" >}}Agones Controller go-client workqueues{{< /ghlink >}} displays Agones Controller workqueue processing time and rates. - {{< ghlink href="/build/grafana/dashboard-apiserver-requests.yaml" branch="main" >}}Agones Controller API Server requests{{< /ghlink >}} displays your current API server request rate, errors rate and request latencies with optional CustomResourceDefinition filtering by Types: fleets, gameserversets, gameservers, gameserverallocations. diff --git a/site/content/en/docs/Installation/Creating Cluster/gke.md b/site/content/en/docs/Installation/Creating Cluster/gke.md index e5c122a0bd..3e3c7a7f04 100644 --- a/site/content/en/docs/Installation/Creating Cluster/gke.md +++ b/site/content/en/docs/Installation/Creating Cluster/gke.md @@ -338,3 +338,5 @@ gcloud container clusters get-credentials [CLUSTER_NAME] --region=[COMPUTE_REGIO ## Next Steps * Continue to [Install Agones]({{< relref "../Install Agones/_index.md" >}}). +* Have a look at the + [Best practices for running Agones on Google Kubernetes Engine]({{< ref "/docs/Guides/Best Practices/gke.md" >}}). diff --git a/site/content/en/docs/Installation/Install Agones/helm.md b/site/content/en/docs/Installation/Install Agones/helm.md index a0223e0559..7d6d6be2e4 100644 --- a/site/content/en/docs/Installation/Install Agones/helm.md +++ b/site/content/en/docs/Installation/Install Agones/helm.md @@ -150,50 +150,6 @@ The following tables lists the configurable parameters of the Agones chart and t ### Agones Controller -{{% feature expiryVersion="1.46.0" %}} - -| Parameter | Description | Default | -|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| -| `agones.controller.replicas` | The number of replicas to run in the `agones-controller` deployment. | `2` | -| `agones.controller.pdb.minAvailable` | Description of the number of pods from that set that must still be available after the eviction, even in the absence of the evicted pod. Can be either an absolute number or a percentage. Mutually Exclusive with `maxUnavailable` | `1` | -| `agones.controller.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage Mutually Exclusive with `minAvailable` | \`\` | -| `agones.controller.http.port` | Port to use for liveness probe service and metrics | `8080` | -| `agones.controller.healthCheck.initialDelaySeconds` | Initial delay before performing the first probe (in seconds) | `3` | -| `agones.controller.healthCheck.periodSeconds` | Seconds between every liveness probe (in seconds) | `3` | -| `agones.controller.healthCheck.failureThreshold` | Number of times before giving up (in seconds) | `3` | -| `agones.controller.healthCheck.timeoutSeconds` | Number of seconds after which the probe times out (in seconds) | `1` | -| `agones.controller.resources` | Controller [resource requests/limit][resources] | `{}` | -| `agones.controller.generateTLS` | Set to true to generate TLS certificates or false to provide your own certificates | `true` | -| `agones.controller.tlsCert` | Custom TLS certificate provided as a string | \`\` | -| `agones.controller.tlsKey` | Custom TLS private key provided as a string | \`\` | -| `agones.controller.nodeSelector` | Controller [node labels][nodeSelector] for pod assignment | `{}` | -| `agones.controller.tolerations` | Controller [toleration][toleration] labels for pod assignment | `[]` | -| `agones.controller.affinity` | Controller [affinity][affinity] settings for pod assignment | `{}` | -| `agones.controller.annotations` | [Annotations][annotations] added to the Agones controller pods | `{}` | -| `agones.controller.numWorkers` | Number of workers to spin per resource type | `100` | -| `agones.controller.apiServerQPS` | Maximum sustained queries per second that controller should be making against API Server | `400` | -| `agones.controller.apiServerQPSBurst` | Maximum burst queries per second that controller should be making against API Server | `500` | -| `agones.controller.logLevel` | Agones Controller Log level. Log only entries with that severity and above | `info` | -| `agones.controller.persistentLogs` | Store Agones controller logs in a temporary volume attached to a container for debugging | `true` | -| `agones.controller.persistentLogsSizeLimitMB` | Maximum total size of all Agones container logs in MB | `10000` | -| `agones.controller.disableSecret` | **Deprecated**. Use `agones.extensions.disableSecret` instead. Disables the creation of any allocator secrets. If true, you MUST provide the `{agones.releaseName}-cert` secrets before installation. | `false` | -| `agones.controller.customCertSecretPath` | Remap cert-manager path to server.crt and server.key | `{}` | -| `agones.controller.allocationApiService.annotations` | **Deprecated**. Use `agones.extensions.allocationApiService.annotations` instead. [Annotations][annotations] added to the Agones apiregistration | `{}` | -| `agones.controller.allocationApiService.disableCaBundle` | **Deprecated**. Use `agones.extensions.allocationApiService.disableCaBundle` instead. Disable ca-bundle so it can be injected by cert-manager. | `false` | -| `agones.controller.validatingWebhook.annotations` | **Deprecated**. Use `agones.extensions.validatingWebhook.annotations` instead. [Annotations][annotations] added to the Agones validating webhook | `{}` | -| `agones.controller.validatingWebhook.disableCaBundle` | **Deprecated**. Use `agones.extensions.validatingWebhook.disableCaBundle` instead. Disable ca-bundle so it can be injected by cert-manager | `false` | -| `agones.controller.mutatingWebhook.annotations` | **Deprecated**. Use `agones.extensions.mutatingWebhook.annotations` instead. [Annotations][annotations] added to the Agones mutating webhook | `{}` | -| `agones.controller.mutatingWebhook.disableCaBundle` | **Deprecated**. Use `agones.extensions.mutatingWebhook.disableCaBundle` instead. Disable ca-bundle so it can be injected by cert-manager | `false` | -| `agones.controller.allocationBatchWaitTime` | Wait time between each allocation batch when performing allocations in controller mode | `500ms` | -| `agones.controller.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -| `agones.controller.maxCreationParallelism` | Maximum number of parallelizing creation calls in GSS controller | `16` | -| `agones.controller.maxGameServerCreationsPerBatch` | Maximum number of GameServer creation calls per batch | `64` | -| `agones.controller.maxDeletionParallelism` | Maximum number of parallelizing deletion calls in GSS | `64` | -| `agones.controller.maxGameServerDeletionsPerBatch` | Maximum number of GameServer deletion calls per batch | `64` | -| `agones.controller.maxPodPendingCount` | Maximum number of pending pods per game server set | `5000` | - -{{% /feature %}} -{{% feature publishVersion="1.46.0" %}} | Parameter | Description | Default | |----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| | `agones.controller.replicas` | The number of replicas to run in the `agones-controller` deployment. | `2` | @@ -234,7 +190,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.controller.maxDeletionParallelism` | Maximum number of parallelizing deletion calls in GSS | `64` | | `agones.controller.maxGameServerDeletionsPerBatch` | Maximum number of GameServer deletion calls per batch | `64` | | `agones.controller.maxPodPendingCount` | Maximum number of pending pods per game server set | `5000` | -{{% /feature %}} ### Ping Service @@ -276,65 +231,6 @@ The following tables lists the configurable parameters of the Agones chart and t ### Allocator Service -{{% feature expiryVersion="1.46.0" %}} -| Parameter | Description | Default | -|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| -| `agones.allocator.apiServerQPS` | Maximum sustained queries per second that an allocator should be making against API Server | `400` | -| `agones.allocator.apiServerQPSBurst` | Maximum burst queries per second that an allocator should be making against API Server | `500` | -| `agones.allocator.remoteAllocationTimeout` | Remote allocation call timeout. | `10s` | -| `agones.allocator.totalRemoteAllocationTimeout` | Total remote allocation timeout including retries. | `30s` | -| `agones.allocator.logLevel` | Agones Allocator Log level. Log only entries with that severity and above | `info` | -| `agones.allocator.install` | Whether to install the [allocator service][allocator] | `true` | -| `agones.allocator.replicas` | The number of replicas to run in the deployment | `3` | -| `agones.allocator.service.name` | Service name for the allocator | `agones-allocator` | -| `agones.allocator.service.serviceType` | The [Service Type][service] of the HTTP Service | `LoadBalancer` | -| `agones.allocator.service.clusterIP` | The [Cluster IP][clusterIP] of the Agones allocator. If you want [Headless Service][headless-service] for Agones Allocator, you can set `None` to clusterIP. | \`\` | -| `agones.allocator.service.loadBalancerIP` | The [Load Balancer IP][loadBalancer] of the Agones allocator load balancer. Only works if the Kubernetes provider supports this option. | \`\` | -| `agones.allocator.service.loadBalancerSourceRanges` | The [Load Balancer SourceRanges][loadBalancer] of the Agones allocator load balancer. Only works if the Kubernetes provider supports this option. | `[]` | -| `agones.allocator.service.annotations` | [Annotations][annotations] added to the Agones allocator service | `{}` | -| `agones.allocator.service.http.enabled` | If true the [allocator service][allocator] will respond to [REST requests][rest-requests] | `true` | -| `agones.allocator.service.http.appProtocol` | The `appProtocol` to set on the Service for the http allocation port. If left blank, no value is set. | `` | -| `agones.allocator.service.http.port` | The port that is exposed externally by the [allocator service][allocator] for [REST requests][rest-requests] | `443` | -| `agones.allocator.service.http.portName` | The name of exposed port | `http` | -| `agones.allocator.service.http.targetPort` | The port that is used by the allocator pod to listen for [REST requests][rest-requests]. Note that the allocator server cannot bind to low numbered ports. | `8443` | -| `agones.allocator.service.http.nodePort` | If the ServiceType is set to "NodePort", this is the NodePort that the allocator http service is exposed on. | `30000-32767` | -| `agones.allocator.service.http.unallocatedStatusCode` | HTTP status code to return when no GameServer is available for allocation. This setting allows for custom responses when a game server allocation fails, offering flexibility in handling these situations. | `429` | -| `agones.allocator.service.grpc.enabled` | If true the [allocator service][allocator] will respond to [gRPC requests][grpc-requests] | `true` | -| `agones.allocator.service.grpc.port` | The port that is exposed externally by the [allocator service][allocator] for [gRPC requests][grpc-requests] | `443` | -| `agones.allocator.service.grpc.portName` | The name of exposed port | `` | -| `agones.allocator.service.grpc.appProtocol` | The `appProtocol` to set on the Service for the gRPC allocation port. If left blank, no value is set. | `` | -| `agones.allocator.service.grpc.nodePort` | If the ServiceType is set to "NodePort", this is the NodePort that the allocator gRPC service is exposed on. | `30000-32767` | -| `agones.allocator.service.grpc.targetPort` | The port that is used by the allocator pod to listen for [gRPC requests][grpc-requests]. Note that the allocator server cannot bind to low numbered ports. | `8443` | -| `agones.allocator.generateClientTLS` | Set to true to generate client TLS certificates or false to provide certificates in `certs/allocator/allocator-client.default/*` | `true` | -| `agones.allocator.generateTLS` | Set to true to generate TLS certificates or false to provide your own certificates | `true` | -| `agones.allocator.disableMTLS` | Turns off client cert authentication for incoming connections to the allocator. | `false` | -| `agones.allocator.disableTLS` | Turns off TLS security for incoming connections to the allocator. | `false` | -| `agones.allocator.disableSecretCreation` | Disables the creation of any allocator secrets. If true, you MUST provide the `allocator-tls`, `allocator-tls-ca`, and `allocator-client-ca` secrets before installation. | `false` | -| `agones.allocator.tlsCert` | Custom TLS certificate provided as a string | \`\` | -| `agones.allocator.tlsKey` | Custom TLS private key provided as a string | \`\` | -| `agones.allocator.clientCAs` | A map of secret key names to allowed client CA certificates provided as strings | `{}` | -| `agones.allocator.tolerations` | Allocator [toleration][toleration] labels for pod assignment | `[]` | -| `agones.allocator.affinity` | Allocator [affinity][affinity] settings for pod assignment | `{}` | -| `agones.allocator.annotations` | [Annotations][annotations] added to the Agones allocator pods | `{}` | -| `agones.allocator.resources` | Allocator pods [resource requests/limit][resources] | `{}` | -| `agones.allocator.labels` | [Labels][labels] Added to the Agones Allocator pods | `{}` | -| `agones.allocator.readiness.initialDelaySeconds` | Initial delay before performing the first probe (in seconds) | `3` | -| `agones.allocator.readiness.periodSeconds` | Seconds between every liveness probe (in seconds) | `3` | -| `agones.allocator.readiness.failureThreshold` | Number of times before giving up (in seconds) | `3` | -| `agones.allocator.nodeSelector` | Allocator [node labels][nodeSelector] for pod assignment | `{}` | -| `agones.allocator.serviceMetrics.name` | Second Service name for the allocator | `agones-allocator-metrics-service` | -| `agones.allocator.serviceMetrics.annotations` | [Annotations][annotations] added to the Agones allocator second Service | `{}` | -| `agones.allocator.serviceMetrics.http.port` | The port that is exposed within cluster by the [allocator service][allocator] for http requests | `8080` | -| `agones.allocator.serviceMetrics.http.portName` | The name of exposed port | `http` | -| `agones.allocator.allocationBatchWaitTime` | Wait time between each allocation batch when performing allocations in allocator mode | `500ms` | -| `agones.allocator.updateStrategy` | The [strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) to apply to the ping deployment | `{}` | -| `agones.allocator.pdb.enabled` | Set to `true` to enable the creation of a [PodDisruptionBudget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) for the allocator deployment | `false` | -| `agones.allocator.pdb.minAvailable` | Description of the number of pods from that set that must still be available after the eviction, even in the absence of the evicted pod. Can be either an absolute number or a percentage. Mutually Exclusive with `maxUnavailable` | `1` | -| `agones.allocator.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage. Mutually Exclusive with `minAvailable` | \`\` | -| `agones.allocator.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | - -{{% /feature %}} -{{% feature publishVersion="1.46.0" %}} | Parameter | Description | Default | | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | | `agones.allocator.apiServerQPS` | Maximum sustained queries per second that an allocator should be making against API Server | `400` | @@ -392,50 +288,9 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.allocator.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | | `agones.allocator.externalTrafficPolicy` | The `externalTrafficPolicy` for the Agones allocator service | `Cluster` | -{{% /feature %}} ### Extensions -{{% feature expiryVersion="1.46.0" %}} -| Parameter | Description | Default | -|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| -|`agones.extensions.hostNetwork` | Determines if the Agones extensions should operate in hostNetwork mode. If running in hostNetwork mode, you should change `agones.extensions.http.port` and `agones.extensions.webhooks.port` to an available port. | `false` | -| `agones.extensions.http.port` | Port to use for liveness probe service and metrics | `8080` | -|`agones.extensions.webhooks.port` | Port to use for webhook service | `8081` | -| `agones.extensions.healthCheck.initialDelaySeconds` | Initial delay before performing the first probe (in seconds) | `3` | -| `agones.extensions.healthCheck.periodSeconds` | Seconds between every liveness probe (in seconds) | `3` | -| `agones.extensions.healthCheck.failureThreshold` | Number of times before giving up (in seconds) | `3` | -| `agones.extensions.healthCheck.timeoutSeconds` | Number of seconds after which the probe times out (in seconds) | `1` | -| `agones.extensions.resources` | Extensions [resource requests/limit][resources] | `{}` | -| `agones.extensions.generateTLS` | Set to true to generate TLS certificates or false to provide your own certificates | `true` | -| `agones.extensions.tlsCert` | Custom TLS certificate provided as a string | \`\` | -| `agones.extensions.tlsKey` | Custom TLS private key provided as a string | \`\` | -| `agones.extensions.nodeSelector` | Extensions [node labels][nodeSelector] for pod assignment | `{}` | -| `agones.extensions.tolerations` | Extensions [toleration][toleration] labels for pod assignment | `[]` | -| `agones.extensions.affinity` | Extensions [affinity][affinity] settings for pod assignment | `{}` | -| `agones.extensions.annotations` | [Annotations][annotations] added to the Agones extensions pods | `{}` | -| `agones.extensions.numWorkers` | Number of workers to spin per resource type | `100` | -| `agones.extensions.apiServerQPS` | Maximum sustained queries per second that extensions should be making against API Server | `400` | -| `agones.extensions.apiServerQPSBurst` | Maximum burst queries per second that extensions should be making against API Server | `500` | -| `agones.extensions.logLevel` | Agones Extensions Log level. Log only entries with that severity and above | `info` | -| `agones.extensions.persistentLogs` | Store Agones extensions logs in a temporary volume attached to a container for debugging | `true` | -| `agones.extensions.persistentLogsSizeLimitMB` | Maximum total size of all Agones container logs in MB | `10000` | -| `agones.extensions.disableSecret` | Disables the creation of any allocator secrets. You MUST provide the `{agones.releaseName}-cert` secrets before installation if this is set to `true`. | `false` | -| `agones.extensions.customCertSecretPath` | Remap cert-manager path to server.crt and server.key | `{}` | -| `agones.extensions.allocationApiService.annotations` | [Annotations][annotations] added to the Agones API registration. | `{}` | -| `agones.extensions.allocationApiService.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager. | `false` | -| `agones.extensions.validatingWebhook.annotations` | [Annotations][annotations] added to the Agones validating webhook. | `{}` | -| `agones.extensions.validatingWebhook.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager. | `false` | -| `agones.extensions.mutatingWebhook.annotations` | [Annotations][annotations] added to the Agones mutating webhook. | `{}` | -| `agones.extensions.mutatingWebhook.disableCaBundle` | Disable ca-bundle so it can be injected by cert-manager. | `false` | -| `agones.extensions.allocationBatchWaitTime` | Wait time between each allocation batch when performing allocations in controller mode | `500ms` | -| `agones.extensions.pdb.minAvailable` | Description of the number of pods from that set that must still be available after the eviction, even in the absence of the evicted pod. Can be either an absolute number or a percentage. Mutually Exclusive with maxUnavailable | `1` | -| `agones.extensions.pdb.maxUnavailable` | Description of the number of pods from that set that can be unavailable after the eviction. It can be either an absolute number or a percentage. Mutually Exclusive with `minAvailable` | \`\` | -| `agones.extensions.replicas` | The number of replicas to run in the deployment | `2` | -| `agones.extensions.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | - -{{% /feature %}} -{{% feature publishVersion="1.46.0" %}} | Parameter | Description | Default | |----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| |`agones.extensions.hostNetwork` | Determines if the Agones extensions should operate in hostNetwork mode. If running in hostNetwork mode, you should change `agones.extensions.http.port` and `agones.extensions.webhooks.port` to an available port. | `false` | @@ -474,7 +329,6 @@ The following tables lists the configurable parameters of the Agones chart and t | `agones.extensions.replicas` | The number of replicas to run in the deployment | `2` | | `agones.extensions.topologySpreadConstraints` | Ensures better resource utilization and high availability by evenly distributing Pods in the agones-system namespace | `{}` | -{{% /feature %}} ### GameServers diff --git a/site/content/en/docs/Installation/_index.md b/site/content/en/docs/Installation/_index.md index 343448de86..418d9d6b3f 100644 --- a/site/content/en/docs/Installation/_index.md +++ b/site/content/en/docs/Installation/_index.md @@ -47,7 +47,8 @@ The following table lists recent Agones versions and their corresponding require | Agones version | Kubernetes version(s) | | -------------- | ------------------ | -| 1.45 | {{% k8s-version %}} | +| 1.46 | {{% k8s-version %}} | +| 1.45 | 1.29, 1.30, 1.31 | | 1.44 | 1.28, 1.29, 1.30 | | 1.43 | 1.28, 1.29, 1.30 | | 1.42 | 1.27, 1.28, 1.29 | @@ -69,7 +70,6 @@ The following table lists recent Agones versions and their corresponding require | 1.26 | 1.23 | | 1.25 | 1.22 | | 1.24 | 1.22 | -| 1.23 | 1.22 | ## Best Practices {#separation-of-agones-from-gameserver-nodes} diff --git a/site/content/en/docs/Installation/upgrading.md b/site/content/en/docs/Installation/upgrading.md index a6b7b6c8d9..f2bd031999 100644 --- a/site/content/en/docs/Installation/upgrading.md +++ b/site/content/en/docs/Installation/upgrading.md @@ -51,7 +51,6 @@ The following are steps to implement this: If you are upgrading a single cluster, we recommend creating a maintenance window, in which your game goes offline for the period of your upgrade, as there will be a short period in which Agones will be non-responsive during the upgrade. -{{% feature publishVersion="1.46.0" %}} #### In-Place Agones Upgrades {{< alert color="warning" title="Warning" >}} @@ -118,7 +117,6 @@ configurable parameters. increases the likelihood of having multiple Game Server configurations on the same Fleet. 4. Run any other tests to ensure the Agones installation is working as expected. 5. Congratulations - you have now upgraded to a new version of Agones! 👍 -{{% /feature %}} #### Installation with install.yaml diff --git a/site/content/en/docs/Integration Patterns/high-density-gameservers.md b/site/content/en/docs/Integration Patterns/high-density-gameservers.md index 5cdfb8fe16..36a7a24d06 100644 --- a/site/content/en/docs/Integration Patterns/high-density-gameservers.md +++ b/site/content/en/docs/Integration Patterns/high-density-gameservers.md @@ -13,34 +13,113 @@ use of resources to run multiple concurrent game sessions from within a single ` The tradeoff here is that this requires more management on behalf of the integrated game server process and external systems, since it works around the common Kubernetes and/or Agones container lifecycle. -Utilising the new allocation `gameServerState` filter as well as the existing ability to edit the +Here are two different approaches to solving this problem with Agones: + +## Session/Room Counters + +{{< beta title="Counters And Lists" gate="CountsAndLists" >}} + +Utilising the allocation `gameServerState` filter as well as the new ability to add Counter capacity and counts to +`GameServer` records at both [allocation time]({{% ref "/docs/Reference/gameserverallocation.md" %}}), and from +within the game server process, [via the SDK][sdk-counter], means Agones is able to atomically track how many sessions +are available on a given a `GameServer` from the list of potentially Ready or Allocated `GameServers` when making an +allocation request. + +By also using Counters, we can provide Agones the allocation metadata it needs to pack appropriately across the high +density `GameServer` instances as well. + + +High Density Allocation Diagram (Session Counters) + + +### Example `GameServerAllocation` + +The below `Allocation` will first attempt to find a `GameServer` from the `Fleet` `simple-game-server` that is already +Allocated and also available capacity under the `rooms` Counter. + +If an Allocated `GameServer` does not exist with available capacity, then use the next selector to allocate a Ready +`GameServer` from the `simple-game-server` `Fleet`. + +Whichever condition is met, once allocation is made against a `GameServer`, the `rooms` Counter will be incremented by +one, thereby decrementing the available capacity of the `room` Counter on the `GameServer` instance. Generally +speaking, once there is no available capacity on the most full `GameServer`, the allocation will prioritise the next +least full `GameServer` to ensure packing across `GameServer` instances. + +It will then be up to the game server process to decrement the `rooms` Counter via the SDK when a session comes to end, +to increase the amount of available capacity within the `GameServer` instance. + +```yaml +apiVersion: allocation.agones.dev/v1 +kind: GameServerAllocation +spec: + scheduling: Packed + priorities: + - type: Counter + key: rooms + order: Ascending # Ensures the "rooms" with the least available capacity (most full rooms) get prioritised. + selectors: + # Check if there is an already Allocated GameServer with room for at least one more session. + - gameServerState: Allocated + matchLabels: + agones.dev/fleet: simple-game-server + counters: + rooms: + minAvailable: 1 + # If we can't find an Allocated GameServer, then go get a `Ready` `GameServer`. + - gameServerState: Ready + matchLabels: + agones.dev/fleet: simple-game-server + counters: + rooms: + minAvailable: 1 # not 100% necessary, since our Ready GameServers don't change their count value, but a good practice. + counters: + rooms: + action: Increment + amount: 1 # Bump up the room count by one on Allocation. +``` + +{{% alert title="Note" color="info" %}} +When using `Packed` `scheduling`, Counter and List `priorities` are used as a tiebreaker within nodes, to ensure packing +across the nodes is done as efficiently as possible first, and the packing within each `GameServer` on the node is done +second. + +For a `Distributed` `scheduling` implementation, Counter and List `priorities` are the only sorting that occurs across +the potential set of GameServers that are to be allocated. +{{% /alert %}} + +## GameServer Label Locking + +Utilising the allocation `gameServerState` filter as well as the existing ability to edit the `GameServer` labels at both [allocation time]({{% ref "/docs/Reference/gameserverallocation.md" %}}), and from -within the game server process, [via the SDK][sdk], +within the game server process, [via the SDK][sdk-label], means Agones is able to atomically remove a `GameServer` from the list of potentially allocatable `GameServers` at allocation time, and then return it back into the pool of allocatable `GameServers` if and when the -game server process deems that is has room to host another game session. +game server process deems that is has room to host another game session. - -High Density Allocation Diagram +The downside to this approach is that there is no packing across re-allocated `GameServer` instances, but it is a very +flexible approach if utilising Counters or Lists is not a viable option. + + +High Density Allocation Diagram (Label Lock) {{< alert title="Info" color="info">}} To watch for Allocation events, there is the initial `GameServer.status.state` change from `Ready` to `Allocated`, but it is also useful to know that the value of `GameServer.metadata.annotations["agones.dev/last-allocated"]` will -change as it is set by Agones with each allocation with the current timestamp, regardless of if there +change as it is set by Agones with each allocation with the current timestamp, regardless of if there is a state change or not. {{< /alert >}} -## Example `GameServerAllocation` +### Example `GameServerAllocation` -The below `Allocation` will first attempt to find a `GameServer` from the `Fleet` `simple-udp` that is already +The below `Allocation` will first attempt to find a `GameServer` from the `Fleet` `simple-game-server` that is already Allocated and also has the label `agones.dev/sdk-gs-session-ready` with the value of `true`. The above condition indicates that the matching game server process behind the matched `GameServer` record is able to accept another game session at this time. If an Allocated `GameServer` does not exist with the desired labels, then use the next selector to allocate a Ready -`GameServer` from the `simple-udp` `Fleet`. +`GameServer` from the `simple-game-server` `Fleet`. Whichever condition is met, once allocation is made against a `GameServer`, its label of `agones.dev/sdk-gs-session-ready` will be set to the value of `false` and it will no longer match the first selector, thereby removing it from any @@ -56,34 +135,37 @@ kind: GameServerAllocation spec: selectors: - matchLabels: - agones.dev/fleet: simple-udp + agones.dev/fleet: simple-game-server agones.dev/sdk-gs-session-ready: "true" # this is important gameServerState: Allocated # new state filter: allocate from Allocated servers - matchLabels: - agones.dev/fleet: simple-udp + agones.dev/fleet: simple-game-server gameServerState: Ready # Allocate out of the Ready Pool (which would be default, so backward compatible) metadata: labels: agones.dev/sdk-gs-session-ready: "false" # this removes it from the pool ``` -{{< alert title="Info" color="info">}} +{{% alert title="Info" color="info" %}} It's important to note that the labels that the `GameServer` process use to add itself back into the pool of allocatable instances, must start with the prefix `agones.dev/sdk-`, since only labels that have this prefix are -available to be [updated from the SDK][sdk]. -{{< /alert >}} +available to be [updated from the SDK]({{% ref "/docs/Guides/Client SDKs/_index.md#setlabelkey-value" %}}). +{{% /alert %}} ## Consistency -Agones, and Kubernetes itself are built as eventually consistent, self-healing systems. To that end, it is worth -noting that there may be minor delays between each of the operations in the above flow. For example, depending on the -cluster load, it may take up to a second for an [SDK driven label change][sdk] on a `GameServer` record to be -visible to the Agones allocation system. We recommend building your integrations with Agones with this in mind. +Agones, and Kubernetes itself are built as eventually consistent, self-healing systems. To that end, it is worth +noting that there may be minor delays between each of the operations in either of the above flows. For example, +depending on the cluster load, it may take approximately a second for an SDK driven +[counter change][sdk-counter] or [label change][sdk-label] on a `GameServer` record to be visible to the Agones +allocation system. We recommend building your integrations with Agones with this in mind. ## Next Steps -* View the details about [using the SDK][sdk] to set - labels on the `GameServer`. +* Read the [Counters and Lists]({{< ref "/docs/Guides/counters-and-lists.md" >}}) guide. +* View the details about [using the SDK]({{% ref "/docs/Guides/Client SDKs/_index.md#setlabelkey-value" %}}) to change + values on the `GameServer`. * Check all the options available on [`GameServerAllocation`]({{% ref "/docs/Reference/gameserverallocation.md" %}}). -[sdk]: {{% ref "/docs/Guides/Client SDKs/_index.md#setlabelkey-value" %}} +[sdk-label]: {{% ref "/docs/Guides/Client SDKs/_index.md#setlabelkey-value" %}} +[sdk-counter]: {{% ref "/docs/Guides/Client SDKs/_index.md#counters-and-lists" %}} diff --git a/site/content/en/docs/Integration Patterns/player-capacity.md b/site/content/en/docs/Integration Patterns/player-capacity.md index 59588e76ff..fd4c181c9a 100644 --- a/site/content/en/docs/Integration Patterns/player-capacity.md +++ b/site/content/en/docs/Integration Patterns/player-capacity.md @@ -7,31 +7,63 @@ description: > Find a `GameServer` that has room for a specific number of players. --- +Using this approach, we are able to be able to make an Allocation request that is akin to: "Find me a `GameServer` +that is already allocated, with room for _n_ number of players, and if one is not available, allocate me a `Ready` +`GameServer`". + +Common applications of this type of allocation are Lobby servers where players await matchmaking, or a +persistent world server where players connect and disconnect from a large map. + {{% pageinfo color="info" %}} -[Counters and Lists]({{< ref "/docs/Guides/counters-and-lists.md" >}}) will eventually replace the Beta functionality +[Counters and Lists]({{< ref "/docs/Guides/counters-and-lists.md" >}}) will eventually replace the Alpha functionality of Player Tracking, which will subsequently be removed from Agones. -If you are currently using this Beta feature, we would love for you to test (and ideally migrate to!) this new +If you are currently using this Alpha feature, we would love for you to test (and ideally migrate to!) this new functionality to Counters and Lists to ensure it meet all your needs. - -This document will be updated to utilise Counters and Lists in the near future. {{% /pageinfo %}} +## Tracking Players Through Lists + +{{< beta title="Counters And Lists" gate="CountsAndLists" >}} + + +Player Capacity Allocation Diagram + + +### Example `GameServerAllocation` + +The below allocation will attempt to find an already Allocated `GameServer` from the `Fleet` "simple-game-server" with +room for at least 10, and if it cannot find one, will allocate a Ready one from the same `Fleet`. + +```yaml +apiVersion: allocation.agones.dev/v1 +kind: GameServerAllocation +spec: + selectors: + - matchLabels: + agones.dev/fleet: simple-game-server + gameServerState: Allocated # check for Allocated first + lists: + players: + minAvailable: 10 # at least 10 players in available capacity + - matchLabels: + agones.dev/fleet: simple-game-server + lists: + players: + minAvailable: 10 # not required, since our GameServers start with empty lists, but a good practice +``` + +## Player Tracking + {{< alpha title="Player Tracking and Allocation Player Filter" gate="PlayerTracking,PlayerAllocationFilter" >}} -Using this approach, we are able to be able to make a request that is akin to: "Find me a `GameServer` that is already -allocated, with room for _n_ number of players, and if one is not available, allocate me a `Ready` `GameServer`". - -Common applications of this type of allocation are Lobby servers where players await matchmaking, or a -persistent world server where players connect and disconnect from a large map. - - -Player Capacity Allocation Diagram + +Player Capacity Allocation Diagram -## Example `GameServerAllocation` +### Example `GameServerAllocation` The below allocation will attempt to find an already Allocated `GameServer` from the `Fleet` "lobby" with room for 10 to 15 players, and if it cannot find one, will allocate a Ready one from the same `Fleet`. @@ -51,11 +83,13 @@ spec: agones.dev/fleet: lobby ``` -{{< alert title="Note" color="info">}} -We recommend doing an extra check when players connect to a `GameServer` that there is the expected player capacity -on the `GameServer` as there can be a small delay between a player connecting and it being reported -to Agones. -{{< /alert >}} +## Consistency + +Agones, and Kubernetes itself are built as eventually consistent, self-healing systems. To that end, it is worth +noting that there may be minor delays between each of the operations in either of the above flows. For example, +depending on the cluster load, it may take approximately a second for an SDK driven +[list change]({{% ref "/docs/Guides/Client SDKs/_index.md#counters-and-lists" %}}) on a `GameServer` record to be visible to the Agones +allocation system. We recommend building your integrations with Agones with this in mind. ## Next Steps diff --git a/site/go.mod b/site/go.mod index 4ab9f2b561..bf64935772 100644 --- a/site/go.mod +++ b/site/go.mod @@ -1,10 +1,10 @@ module github.com/agones/agones/site -go 1.22 +go 1.23 require gopkg.in/yaml.v2 v2.4.0 require ( - github.com/google/docsy v0.10.0 // indirect + github.com/google/docsy v0.11.0 // indirect github.com/google/docsy/dependencies v0.7.2 // indirect ) diff --git a/site/go.sum b/site/go.sum index 3c9faaf83e..799bf1b824 100644 --- a/site/go.sum +++ b/site/go.sum @@ -1,7 +1,7 @@ github.com/FortAwesome/Font-Awesome v0.0.0-20230327165841-0698449d50f2/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= -github.com/FortAwesome/Font-Awesome v0.0.0-20240402185447-c0f460dca7f7/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= -github.com/google/docsy v0.10.0 h1:6tMDacPwAyRWNCfvsn/9qGOZDQ8b0aRzjRZvnZPY5dg= -github.com/google/docsy v0.10.0/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc= +github.com/FortAwesome/Font-Awesome v0.0.0-20240716171331-37eff7fa00de/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= +github.com/google/docsy v0.11.0 h1:QnV40cc28QwS++kP9qINtrIv4hlASruhC/K3FqkHAmM= +github.com/google/docsy v0.11.0/go.mod h1:hGGW0OjNuG5ZbH5JRtALY3yvN8ybbEP/v2iaK4bwOUI= github.com/google/docsy/dependencies v0.7.2 h1:+t5ufoADQAj4XneFphz4A+UU0ICAxmNaRHVWtMYXPSI= github.com/google/docsy/dependencies v0.7.2/go.mod h1:gihhs5gmgeO+wuoay4FwOzob+jYJVyQbNaQOh788lD4= github.com/twbs/bootstrap v5.2.3+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= diff --git a/site/layouts/partials/navbar.html b/site/layouts/partials/navbar.html index fb890b8260..48263cf930 100644 --- a/site/layouts/partials/navbar.html +++ b/site/layouts/partials/navbar.html @@ -27,6 +27,7 @@ {{ if (gt (len .Site.Home.Translations) 0) }} diff --git a/site/static/diagrams/allocation-player-capacity-list.puml b/site/static/diagrams/allocation-player-capacity-list.puml new file mode 100644 index 0000000000..d47a09cfef --- /dev/null +++ b/site/static/diagrams/allocation-player-capacity-list.puml @@ -0,0 +1,117 @@ +@startuml +/' +Copyright 2024 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. +'/ + +'https://plantuml.com/sequence-diagram + +actor "Player One" as Player1 +actor "Player Two" as Player2 +participant Matchmaker +participant Agones +participant "GameServer\nResource" as GameServer +box "Game Server Pod" + participant "Game Server\nProcess" as Binary + participant SDK +end box + +activate GameServer + +== GameServer Start == + +Agones -> GameServer: GameServer created through\na Fleet configuration +note left +Fleet configuration includes a players List with an initial empty value +and a capacity set to the total number of players that be can be hosted on a GameServer. +end note +activate GameServer +GameServer -> Binary: Agones creates a Pod with the\nconfigured Game Server Container +activate Binary +activate SDK +Binary -> SDK: SDK.WatchGameServer() +note right +Use the SDK Watch function +to watch and react to allocation +and List mutation events +end note + +Binary -> SDK: SDK.Ready() +note right + Call Ready() when the + Game Server can take player + connections and is able to + be allocated. +end note +GameServer <-- SDK: Update to Ready State + +== No allocated GameServers == + +Player1 -> Matchmaker: Requests a game session +Matchmaker -> Agones: Create: GameServerAllocation +note left + The GameServerAllocation is implemented to + optionally select an already allocated GameServer + with an available capacity under List players + of 1. If one cannot be found, allocate a Ready + GameServer instead. + + Since at this stage there are no Allocated GameServer + Agones will allocate a Ready GameServer. +end note +Agones -> GameServer: Finds a Ready GameServer,\nsets it to Allocated State +Matchmaker <-- Agones : GameServerAllocation is returned\nwith GameServer details\nincluding IP and port to connect to. +Player1 <-- Matchmaker : Returns GameServer connection information +Player1 -> Binary : Connects to game server process +Binary -> SDK : SDK.Beta().AppendListValue("players", id) +note left + Process calls AppendListValue(...) + on player client connection. +end note +GameServer <-- SDK : Appends id to status.lists["players"].values + +== Allocated GameServers with player(s) on them == + +Player2 -> Matchmaker: Requests a game session +Matchmaker -> Agones: Create: GameServerAllocation +note left + The GameServerAllocation will this time find the + Allocated GameServer with the players List + with available capacity, indicating it has room for + more players. +end note +Agones -> GameServer: Finds the Allocated GameServer where\nlength(status["players"].values) < status["rooms"].capacity. +note right + This is the same GameServer that "Player One" + is currently playing on. +end note +Matchmaker <-- Agones: returns Allocated GameServer record +Player2 <-- Matchmaker : Returns GameServer connection information +Player2 -> Binary : Connects to game server process +Binary -> SDK : SDK.Beta().AppendListValue("players", id) +GameServer <-- SDK : Appends id to status.lists["players"].values + +alt Player disconnects + Binary -> SDK: SDK.Beta().DeleteListValue("players", id) + SDK --> GameServer: Removes id from status.lists["players"].values +end alt +note right + When a player disconnects, + remove their id from the "players" List, + to increase the available capacity + on this GameServer. +end note + + +@enduml diff --git a/site/static/diagrams/allocation-player-capacity-list.puml.png b/site/static/diagrams/allocation-player-capacity-list.puml.png new file mode 100644 index 0000000000..9dc0739256 Binary files /dev/null and b/site/static/diagrams/allocation-player-capacity-list.puml.png differ diff --git a/site/static/diagrams/allocation-player-capacity.puml b/site/static/diagrams/allocation-player-capacity-tracking.puml similarity index 100% rename from site/static/diagrams/allocation-player-capacity.puml rename to site/static/diagrams/allocation-player-capacity-tracking.puml diff --git a/site/static/diagrams/allocation-player-capacity.puml.png b/site/static/diagrams/allocation-player-capacity-tracking.puml.png similarity index 100% rename from site/static/diagrams/allocation-player-capacity.puml.png rename to site/static/diagrams/allocation-player-capacity-tracking.puml.png diff --git a/site/static/diagrams/high-density-counters.puml b/site/static/diagrams/high-density-counters.puml new file mode 100644 index 0000000000..abc963320d --- /dev/null +++ b/site/static/diagrams/high-density-counters.puml @@ -0,0 +1,131 @@ +@startuml +/' +Copyright 2024 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. +'/ + +participant Matchmaker +participant Agones +participant "Game Server\nProcess" as Binary +participant SDK +participant "GameServer\nResource" as GameServer +box "Game Server Pod" + participant Binary + participant SDK +end box + +== GameServer Start == + +Agones -> GameServer: GameServer created through\na Fleet configuration +note left +Fleet configuration includes a rooms Counter with an initial value of 0 +and a capacity set to the total number of sessions that be can be hosted on a GameServer. +end note +activate GameServer +GameServer -> Binary: Agones creates a Pod with the\nconfigured Game Server Container +activate Binary +activate SDK +Binary -> SDK: SDK.WatchGameServer() +note right +Use the SDK Watch function +to watch and react to allocation +events +end note + +Binary -> SDK: SDK.Ready() +note right + Call Ready() when the + Game Server can take player + connections and is able to + be allocated. +end note +GameServer <-- SDK: Update to Ready State + +== No allocated GameServers == + +Matchmaker -> Agones: Create: GameServerAllocation +note left + The GameServerAllocation is implemented to + optionally select an already allocated GameServer + with a available capacity under Counter rooms + of 1. If one cannot be found, allocate a Ready + GameServer instead. + + Since at this stage there are no Allocated GameServer + Agones will allocate a Ready GameServer. +end note +Agones -> GameServer: Finds a Ready GameServer.\n\nSets status.state to Allocated State\nand status.counters["rooms"}.count++\nand metadata.annotations["agones.dev/last-allocated"] = current timestamp +note left +By incrementing the rooms counter by one, +this reduces the available capacity for this +GameServer by one. +end note +Matchmaker <-- Agones : GameServerAllocation is returned\nwith GameServer details\nincluding IP and port to connect to. + +SDK --> Binary: Sends SDK.WatchGameServer()\nevent for Allocation. +note right +This initial allocation can be determined +as a change in GameServer.status.state +from Ready to Allocated, as well as an +increment of one on +GameServer.status.counters["rooms"].count +end note + +== Allocated GameServers with available capacity for more sessions == + +Matchmaker -> Agones: Create: GameServerAllocation +note left + The GameServerAllocation will this time find the + Allocated GameServer with the rooms Counter + with available capacity, inculcating it has room for + more game sessions. +end note +Agones -> GameServer: Finds the Allocated GameServer where\nstatus["rooms"].count < status["rooms"].capacity.\n\nSets status.counters["rooms"}.count++\nand metadata.annotations["agones.dev/last-allocated"] = current timestamp +note right + This is a GameServer that has room + for another concurrent game session. +end note +Matchmaker <-- Agones: returns Allocated GameServer record + +SDK --> Binary: Sends SDK.WatchGameServer()\nevent for Allocation. +note right +The game server process can watch for an +increment of status.counters["rooms"}.count and/or +change in metadata.annotations["agones.dev/last-allocated"] +to determine if there is an allocation event. +end note + +alt GameServer finishes a game session + Binary -> SDK: SDK.Beta().DecrementCounter("rooms", 1) + SDK --> GameServer: Sets status["rooms"].count-- +end alt +note right + When a session ends, decrement the session counter + to increase the available capacity on this GameServer. +end note + +== GameServer has completed n number of complete sessions == + +Binary -> SDK: SDK.Shutdown() +note left +The GameServer process tracks the total number of sessions +that it hosts, and after n number, calls Shutdown() +to delete the GameServer resource and backing Pod. +end note +SDK --> GameServer: Update to Shutdown state. +Agones -> GameServer: Deletes GameServer resource and backing Pod. +destroy Binary +destroy SDK +destroy GameServer +@enduml diff --git a/site/static/diagrams/high-density-counters.puml.png b/site/static/diagrams/high-density-counters.puml.png new file mode 100644 index 0000000000..c8267b334f Binary files /dev/null and b/site/static/diagrams/high-density-counters.puml.png differ diff --git a/site/static/diagrams/high-density.puml b/site/static/diagrams/high-density-label-lock.puml similarity index 100% rename from site/static/diagrams/high-density.puml rename to site/static/diagrams/high-density-label-lock.puml diff --git a/site/static/diagrams/high-density.puml.png b/site/static/diagrams/high-density-label-lock.puml.png similarity index 100% rename from site/static/diagrams/high-density.puml.png rename to site/static/diagrams/high-density-label-lock.puml.png diff --git a/site/static/images/spacegame.png b/site/static/images/spacegame.png deleted file mode 100644 index 65222f5cd8..0000000000 Binary files a/site/static/images/spacegame.png and /dev/null differ diff --git a/test/e2e/examples_test.go b/test/e2e/examples_test.go index 31d5ae6b23..d8a372d1aa 100644 --- a/test/e2e/examples_test.go +++ b/test/e2e/examples_test.go @@ -45,7 +45,7 @@ func TestSuperTuxKartGameServerReady(t *testing.T) { Containers: []corev1.Container{ { Name: "supertuxkart", - Image: "us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.15", + Image: "us-docker.pkg.dev/agones-images/examples/supertuxkart-example:0.16", Env: []corev1.EnvVar{ { Name: "ENABLE_PLAYER_TRACKING", @@ -203,7 +203,7 @@ func TestXonoticGameServerReady(t *testing.T) { Containers: []corev1.Container{ { Name: "xonotic", - Image: "us-docker.pkg.dev/agones-images/examples/xonotic-example:2.1", + Image: "us-docker.pkg.dev/agones-images/examples/xonotic-example:2.2", Resources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceMemory: resource.MustParse("700Mi"), diff --git a/test/e2e/fleet_test.go b/test/e2e/fleet_test.go index 365ead45a3..6306a608fe 100644 --- a/test/e2e/fleet_test.go +++ b/test/e2e/fleet_test.go @@ -303,7 +303,6 @@ func TestFleetScaleUpEditAndScaleDown(t *testing.T) { fixtures := []bool{true, false} for _, usePatch := range fixtures { - usePatch := usePatch t.Run("Use fleet Patch "+fmt.Sprint(usePatch), func(t *testing.T) { t.Parallel() ctx := context.Background() @@ -633,7 +632,6 @@ func TestScaleFleetUpAndDownWithGameServerAllocation(t *testing.T) { fixtures := []bool{false, true} for _, usePatch := range fixtures { - usePatch := usePatch t.Run("Use fleet Patch "+fmt.Sprint(usePatch), func(t *testing.T) { t.Parallel() @@ -714,8 +712,6 @@ func TestFleetUpdates(t *testing.T) { } for k, v := range fixtures { - k := k - v := v t.Run(k, func(t *testing.T) { t.Parallel() client := framework.AgonesClient.AgonesV1() @@ -1380,7 +1376,6 @@ func TestFleetRecreateGameServers(t *testing.T) { podClient := framework.KubeClient.CoreV1().Pods(framework.Namespace) for _, gs := range list.Items { - gs := gs pod, err := podClient.Get(ctx, gs.ObjectMeta.Name, metav1.GetOptions{}) assert.NoError(t, err) @@ -1392,7 +1387,6 @@ func TestFleetRecreateGameServers(t *testing.T) { }}, "gameserver shutdown": {f: func(t *testing.T, list *agonesv1.GameServerList) { for _, gs := range list.Items { - gs := gs var reply string reply, err := framework.SendGameServerUDP(t, &gs, "EXIT") if err != nil { @@ -1410,7 +1404,6 @@ func TestFleetRecreateGameServers(t *testing.T) { }}, "gameserver unhealthy": {f: func(t *testing.T, list *agonesv1.GameServerList) { for _, gs := range list.Items { - gs := gs var reply string reply, err := framework.SendGameServerUDP(t, &gs, "UNHEALTHY") if err != nil { @@ -1423,8 +1416,6 @@ func TestFleetRecreateGameServers(t *testing.T) { } for k, v := range tests { - k := k - v := v t.Run(k, func(t *testing.T) { t.Parallel() client := framework.AgonesClient.AgonesV1() diff --git a/test/e2e/fleetautoscaler_test.go b/test/e2e/fleetautoscaler_test.go index 3733854e90..1306bc4c6c 100644 --- a/test/e2e/fleetautoscaler_test.go +++ b/test/e2e/fleetautoscaler_test.go @@ -645,7 +645,7 @@ func defaultAutoscalerWebhook(namespace string) (*corev1.Pod, *corev1.Service) { }, Spec: corev1.PodSpec{ Containers: []corev1.Container{{Name: "webhook", - Image: "us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.15", + Image: "us-docker.pkg.dev/agones-images/examples/autoscaler-webhook:0.16", ImagePullPolicy: corev1.PullAlways, Ports: []corev1.ContainerPort{{ ContainerPort: 8000, diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index cf2e8cc465..d06259b823 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -150,7 +150,7 @@ func NewFromFlags() (*Framework, error) { } viper.SetDefault(kubeconfigFlag, filepath.Join(usr.HomeDir, ".kube", "config")) - viper.SetDefault(gsimageFlag, "us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35") + viper.SetDefault(gsimageFlag, "us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36") viper.SetDefault(pullSecretFlag, "") viper.SetDefault(stressTestLevelFlag, 0) viper.SetDefault(perfOutputDirFlag, "") diff --git a/test/e2e/gameserver_test.go b/test/e2e/gameserver_test.go index 42111ec6c9..4e04e5e528 100644 --- a/test/e2e/gameserver_test.go +++ b/test/e2e/gameserver_test.go @@ -1133,7 +1133,7 @@ spec: preferredDuringSchedulingIgnoredDuringExecution: ERROR containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 ` err := os.WriteFile("/tmp/invalid.yaml", []byte(gsYaml), 0o644) require.NoError(t, err) diff --git a/test/e2e/gameserverallocation_test.go b/test/e2e/gameserverallocation_test.go index 9a09a3ce59..02d19e9c73 100644 --- a/test/e2e/gameserverallocation_test.go +++ b/test/e2e/gameserverallocation_test.go @@ -44,7 +44,6 @@ func TestCreateFleetAndGameServerAllocate(t *testing.T) { fixtures := []apis.SchedulingStrategy{apis.Packed, apis.Distributed} for _, strategy := range fixtures { - strategy := strategy t.Run(string(strategy), func(t *testing.T) { t.Parallel() ctx := context.Background() @@ -999,7 +998,6 @@ func TestMultiClusterAllocationOnLocalCluster(t *testing.T) { fixtures := []apis.SchedulingStrategy{apis.Packed, apis.Distributed} for _, strategy := range fixtures { - strategy := strategy t.Run(string(strategy), func(t *testing.T) { if strategy == apis.Distributed { framework.SkipOnCloudProduct(t, "gke-autopilot", "Autopilot does not support Distributed scheduling") @@ -1138,8 +1136,6 @@ func TestCreateFullFleetAndCantGameServerAllocate(t *testing.T) { fixtures := []apis.SchedulingStrategy{apis.Packed, apis.Distributed} for _, strategy := range fixtures { - strategy := strategy - t.Run(string(strategy), func(t *testing.T) { if strategy == apis.Distributed { framework.SkipOnCloudProduct(t, "gke-autopilot", "Autopilot does not support Distributed scheduling") diff --git a/test/load/allocation/fleet.yaml b/test/load/allocation/fleet.yaml index 7a01fb99da..dbb267acb8 100644 --- a/test/load/allocation/fleet.yaml +++ b/test/load/allocation/fleet.yaml @@ -33,7 +33,7 @@ spec: spec: containers: - args: [-automaticShutdownDelaySec=600] - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 name: simple-game-server resources: limits: diff --git a/test/load/allocation/performance-test-fleet-template.yaml b/test/load/allocation/performance-test-fleet-template.yaml index b3c6785a22..85b3118e92 100644 --- a/test/load/allocation/performance-test-fleet-template.yaml +++ b/test/load/allocation/performance-test-fleet-template.yaml @@ -33,7 +33,7 @@ spec: spec: containers: - args: [-automaticShutdownDelaySec=AUTOMATIC_SHUTDOWN_DELAY_SEC_REPLACEMENT] - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 name: simple-game-server resources: limits: diff --git a/test/load/allocation/scenario-fleet.yaml b/test/load/allocation/scenario-fleet.yaml index 251b281802..c52f5331a6 100644 --- a/test/load/allocation/scenario-fleet.yaml +++ b/test/load/allocation/scenario-fleet.yaml @@ -38,7 +38,7 @@ spec: value: 'true' containers: - name: simple-game-server - image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.35 + image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36 args: [-automaticShutdownDelaySec=60, -readyIterations=10] resources: limits: diff --git a/test/sdk/go/Dockerfile b/test/sdk/go/Dockerfile index e0059fcdd8..d69dc15fda 100644 --- a/test/sdk/go/Dockerfile +++ b/test/sdk/go/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # Build the Go image from source -FROM golang:1.22.6 AS build-stage +FROM golang:1.23.4 AS build-stage WORKDIR /agones.dev diff --git a/test/sdk/go/Makefile b/test/sdk/go/Makefile index 86ba5dba7b..4ebb18e784 100644 --- a/test/sdk/go/Makefile +++ b/test/sdk/go/Makefile @@ -29,7 +29,7 @@ project_path := $(dir $(mkfile_path)) root_path = $(realpath $(project_path)/) # Because go mod init in the Dockerfile installs the most recently released version of Agones, this # will need to be built and pushed post-release. During DEV it will be built at DEV - 1. -release_version = 1.45.0 +release_version = 1.46.0 server_tag := $(REGISTRY)/sdk-client-test:$(release_version) # _____ _ diff --git a/test/upgrade/Dockerfile b/test/upgrade/Dockerfile index 722a4a153f..add0e0e600 100644 --- a/test/upgrade/Dockerfile +++ b/test/upgrade/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.22.6-alpine AS builder +FROM golang:1.23.4-alpine AS builder # install curl RUN apk update && \ diff --git a/test/upgrade/Makefile b/test/upgrade/Makefile index e7c014412f..ff27150294 100644 --- a/test/upgrade/Makefile +++ b/test/upgrade/Makefile @@ -24,7 +24,7 @@ # REGISTRY ?= -base_version = 1.46.0 +base_version = 1.47.0 # Version defaults to the short hash of the latest commit VERSION ?= $(base_version)-dev-$(shell git rev-parse --short=7 HEAD) server_tag := $(REGISTRY)/upgrade-test-controller:$(VERSION) diff --git a/test/upgrade/go.mod b/test/upgrade/go.mod index c933172c94..2a723f22f7 100644 --- a/test/upgrade/go.mod +++ b/test/upgrade/go.mod @@ -1,6 +1,6 @@ module agones.dev/agones/test/upgrade/testContainer -go 1.22.6 +go 1.23 require ( agones.dev/agones v1.45.0 diff --git a/test/upgrade/main.go b/test/upgrade/main.go index 17104a1eff..4ae7bcadac 100644 --- a/test/upgrade/main.go +++ b/test/upgrade/main.go @@ -354,14 +354,18 @@ func checkHelmStatus(agonesVersion string) string { log.Fatal("Could not Unmarshal", err) } - // Remove the commit sha from the DevVersion i.e. from 1.46.0-dev-7168dd3 to 1.46.0-dev + // Remove the commit sha from the DevVersion i.e. from 1.46.0-dev-7168dd3 to 1.46.0-dev or 1.46.0 + // for the case of this test running during a new Agones version release PR. + agonesRelease := "" if agonesVersion == DevVersion { r := regexp.MustCompile(`1\.\d+\.\d+-dev`) agonesVersion = r.FindString(DevVersion) + r = regexp.MustCompile(`1\.\d+\.\d`) + agonesRelease = r.FindString(agonesVersion) } for _, status := range helmStatus { - if status.AppVersion == agonesVersion { + if (status.AppVersion == agonesVersion) || (status.AppVersion == agonesRelease) { return status.Status } } diff --git a/test/upgrade/versionMap.yaml b/test/upgrade/versionMap.yaml index 7c8a1724cd..21846b47e0 100644 --- a/test/upgrade/versionMap.yaml +++ b/test/upgrade/versionMap.yaml @@ -19,7 +19,7 @@ metadata: name: version-map data: DevVersion: ${DevVersion} - ReleaseVersion: "1.45.0" + ReleaseVersion: "1.46.0" version-mappings.json: | { "k8sToAgonesVersions": { @@ -30,17 +30,20 @@ data: "1.43.0", "1.44.0", "1.45.0", + "1.46.0", "Dev" ], "1.30": [ "1.43.0", "1.44.0", "1.45.0", + "1.46.0", "Dev" ], "1.31": [ "1.44.0", "1.45.0", + "1.46.0", "Dev" ] }, @@ -69,6 +72,10 @@ data: "alphaGates": ["PlayerAllocationFilter", "PlayerTracking", "PortPolicyNone", "PortRanges", "RollingUpdateFix", "ScheduledAutoscaler"], "betaGates": ["AutopilotPassthroughPort", "CountsAndLists", "DisableResyncOnSDKServer", "GKEAutopilotExtendedDurationPods"] }, + "1.46.0": { + "alphaGates": ["PlayerAllocationFilter", "PlayerTracking", "PortPolicyNone", "PortRanges", "RollingUpdateFix", "ScheduledAutoscaler"], + "betaGates": ["AutopilotPassthroughPort", "CountsAndLists", "DisableResyncOnSDKServer", "GKEAutopilotExtendedDurationPods"] + }, "Dev": { "alphaGates": ["PlayerAllocationFilter", "PlayerTracking", "PortPolicyNone", "PortRanges", "RollingUpdateFix", "ScheduledAutoscaler"], "betaGates": ["AutopilotPassthroughPort", "CountsAndLists", "DisableResyncOnSDKServer", "GKEAutopilotExtendedDurationPods"]